131 lines
3.8 KiB
TypeScript
131 lines
3.8 KiB
TypeScript
import { z, IntegrationDefinition, messages } from '@botpress/sdk'
|
|
import proactiveConversation from 'bp_modules/proactive-conversation'
|
|
import proactiveUser from 'bp_modules/proactive-user'
|
|
|
|
export default new IntegrationDefinition({
|
|
name: 'intercom',
|
|
version: '2.0.6',
|
|
title: 'Intercom',
|
|
description: 'Engage with customers in realtime with personalized messaging.',
|
|
icon: 'icon.svg',
|
|
readme: 'hub.md',
|
|
configuration: {
|
|
schema: z.object({
|
|
accessToken: z.string().min(1).title('Access Token').describe('The access token of the Intercom app'),
|
|
adminId: z.string().optional().title('Admin ID').describe('The admin ID of the Bot'),
|
|
clientSecret: z
|
|
.string()
|
|
.secret()
|
|
.optional()
|
|
.title('Client Secret')
|
|
.describe('The client secret of the Intercom app, used for event signature validation'),
|
|
}),
|
|
// TODO: Uncomment this once the Intercom app is approved
|
|
// identifier: {
|
|
// linkTemplateScript: 'linkTemplate.vrl',
|
|
// required: true,
|
|
// },
|
|
// schema: z.object({
|
|
// adminId: z.string().min(1).describe('The admin ID of the Bot'),
|
|
// }),
|
|
// },
|
|
// configurations: {
|
|
// manual: {
|
|
// title: 'Manual Configuration',
|
|
// description: 'Manual configuration, use your own Intercom app (for advanced use cases only)',
|
|
// schema: z.object({
|
|
// adminId: z.string().min(1).describe('The admin ID of the Bot'),
|
|
// accessToken: z.string().min(1).describe('The access token of the Intercom app'),
|
|
// clientSecret: z
|
|
// .string()
|
|
// .min(1)
|
|
// .secret()
|
|
// .describe(
|
|
// 'The client secret of the Intercom app. Required for event signature validation, even if not authenticated by OAuth'
|
|
// ),
|
|
// }),
|
|
// },
|
|
// },
|
|
},
|
|
channels: {
|
|
channel: {
|
|
title: 'Intercom conversation',
|
|
description: 'Channel for a Intercom conversation',
|
|
messages: { ...messages.defaults, bloc: messages.markdownBloc },
|
|
message: {
|
|
tags: {
|
|
id: {
|
|
title: 'Message ID',
|
|
description: 'The Intercom message ID',
|
|
},
|
|
},
|
|
},
|
|
conversation: {
|
|
tags: {
|
|
id: {
|
|
title: 'Conversation ID',
|
|
description: 'The Intercom conversation ID',
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
actions: {},
|
|
events: {},
|
|
identifier: {
|
|
extractScript: 'extract.vrl',
|
|
},
|
|
secrets: {
|
|
CLIENT_ID: { description: "The Client ID in your app's basic informations" },
|
|
CLIENT_SECRET: { description: "The Client secret in your app's basic informations" },
|
|
},
|
|
user: {
|
|
tags: {
|
|
id: {
|
|
title: 'User ID',
|
|
description: 'The Intercom user ID',
|
|
},
|
|
email: {
|
|
title: 'User Email',
|
|
description: 'The Intercom user email',
|
|
},
|
|
},
|
|
},
|
|
states: {
|
|
credentials: {
|
|
type: 'integration',
|
|
schema: z.object({
|
|
adminId: z.string().min(1).title('Admin ID').describe('The admin ID of the Bot'),
|
|
accessToken: z.string().min(1).title('Access Token').describe('The access token obtained from OAuth'),
|
|
}),
|
|
},
|
|
},
|
|
entities: {
|
|
user: {
|
|
schema: z.object({
|
|
id: z.string().min(1).title('User ID').describe('The ID of the Intercom user'),
|
|
}),
|
|
},
|
|
conversation: {
|
|
schema: z.object({
|
|
id: z.string().min(1).title('Conversation ID').describe('The ID of the Intercom conversation'),
|
|
}),
|
|
},
|
|
},
|
|
attributes: {
|
|
category: 'Customer Support',
|
|
guideSlug: 'intercom',
|
|
repo: 'botpress',
|
|
},
|
|
})
|
|
.extend(proactiveUser, ({ entities }) => ({
|
|
entities: {
|
|
user: entities.user,
|
|
},
|
|
}))
|
|
.extend(proactiveConversation, ({ entities }) => ({
|
|
entities: {
|
|
conversation: entities.conversation,
|
|
},
|
|
}))
|