Files
2026-07-13 13:34:48 +08:00

90 lines
2.6 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: 'vonage',
version: '1.0.5',
title: 'Vonage',
description: 'Send and receive SMS messages.',
icon: 'icon.svg',
readme: 'hub.md',
configuration: {
schema: z.object({
apiKey: z.string().min(1).describe('The API Key').title('API Key'),
apiSecret: z.string().min(1).describe('The API Secret').title('API Secret'),
signatureSecret: z.string().min(1).describe('The signature secret').title('Signature Secret'),
useTestingApi: z.boolean().describe('Chooses if we should use the test api').title('Use Testing API'),
}),
},
channels: {
channel: {
title: 'Channel',
description: 'The vonage Channel',
messages: { ...messages.defaults, bloc: messages.markdownBloc },
message: {
tags: {
id: { title: 'ID', description: 'The id of the message' },
},
},
conversation: {
tags: {
userId: { title: 'User ID', description: 'The User id' },
channel: { title: 'Channel', description: 'The conversation channel' },
channelId: { title: 'Channel ID', description: 'The channel id' },
},
},
},
},
events: {},
user: {
tags: {
userId: { title: 'User ID', description: 'The user id' },
channel: { title: 'Channel', description: 'The channel of the user' },
},
},
entities: {
conversation: {
schema: z.object({
userId: z.string(),
channelId: z.string(),
channel: z.string(),
}),
},
user: {
schema: z.object({
channel: z.string().describe('The channel of the user').title('Channel'),
userId: z.string().describe('The user id').title('User ID'),
}),
},
},
attributes: {
category: 'Communication & Channels',
guideSlug: 'vonage',
repo: 'botpress',
},
})
.extend(proactiveConversation, ({ entities }) => ({
entities: {
conversation: entities.conversation,
},
actions: {
getOrCreateConversation: {
name: 'startConversation',
title: 'Start proactive conversation',
description: 'Start a proactive conversation given a user',
},
},
}))
.extend(proactiveUser, ({ entities }) => ({
entities: { user: entities.user },
actions: {
getOrCreateUser: {
name: 'getOrCreateUser',
title: 'Get or create user',
description: 'Get or create a user in the Vonage channel',
},
},
}))