chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
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,
|
||||
},
|
||||
}))
|
||||
Reference in New Issue
Block a user