119 lines
3.8 KiB
TypeScript
119 lines
3.8 KiB
TypeScript
import * as sdk from '@botpress/sdk'
|
|
import { z } from '@botpress/sdk'
|
|
import { messages } from './definitions/channels/messages'
|
|
import { apiVersion } from './src/gen/version'
|
|
|
|
export default new sdk.IntegrationDefinition({
|
|
name: 'chat',
|
|
title: 'Chat',
|
|
version: apiVersion,
|
|
readme: 'hub.md',
|
|
icon: 'icon.svg',
|
|
description: 'Chat integration for Botpress; Allows interacting with your bot using HTTP requests.',
|
|
configuration: {
|
|
schema: z.object({
|
|
encryptionKey: z
|
|
.string()
|
|
.optional()
|
|
.title('Encryption Key (HS256) - optional')
|
|
.describe(
|
|
'Only set this config if you plan on signing your user key yourself. Key used to sign and verify user keys; JWT tokens with HS256 algorithm.'
|
|
),
|
|
webhookUrl: z
|
|
.string()
|
|
.optional()
|
|
.title('Webhook URL - optional')
|
|
.describe(
|
|
'Only set this config if you want to listen on a webhook instead of the standard SSE stream. URL where all incoming and outgoing messages / events are sent to.'
|
|
),
|
|
webhookSecret: z
|
|
.string()
|
|
.optional()
|
|
.title('Webhook Secret - optional')
|
|
.describe('Secret forwarded to the webhook URL.'),
|
|
}),
|
|
},
|
|
events: {
|
|
custom: {
|
|
title: 'Custom Event',
|
|
description: 'Custom event sent from the chat client to the bot',
|
|
schema: z.object({
|
|
userId: z.string().title('User ID').describe('The ID of the user who sent the custom event'),
|
|
conversationId: z
|
|
.string()
|
|
.title('Conversation ID')
|
|
.describe('The ID of the conversation where the event was sent'),
|
|
payload: z.record(z.any()).title('Payload').describe('Custom data payload sent with the event'),
|
|
}),
|
|
},
|
|
},
|
|
actions: {
|
|
sendEvent: {
|
|
title: 'Send Custom Event',
|
|
description: 'Send a custom event from the bot to the chat client',
|
|
input: {
|
|
schema: z.object({
|
|
conversationId: z
|
|
.string()
|
|
.title('Conversation ID')
|
|
.describe('The ID of the conversation to send the event to'),
|
|
payload: z.record(z.any()).title('Payload').describe('Custom data payload to send with the event'),
|
|
}),
|
|
},
|
|
output: {
|
|
schema: z.object({}),
|
|
},
|
|
},
|
|
},
|
|
channels: {
|
|
channel: {
|
|
title: 'Chat Channel',
|
|
description: 'Web chat channel for communicating with users via HTTP requests',
|
|
conversation: {
|
|
tags: {
|
|
owner: { title: 'Conversation Owner', description: 'ID of the user who created the conversation' },
|
|
fid: { title: 'Foreign ID', description: 'Copy of the foreign ID of the conversation' },
|
|
},
|
|
},
|
|
messages,
|
|
message: {
|
|
tags: {
|
|
fid: { title: 'Foreign ID', description: 'This tag is of no use and only exists for historical reasons' },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
user: {
|
|
tags: {
|
|
fid: { title: 'Foreign ID', description: 'Copy of the foreign ID of the user' },
|
|
profile: {
|
|
title: 'User Profile',
|
|
description: 'Custom profile data of the user encoded as a string',
|
|
},
|
|
},
|
|
},
|
|
secrets: {
|
|
SIGNAL_URL: {
|
|
description: 'URL of the signal side of the realtime service',
|
|
optional: false,
|
|
},
|
|
SIGNAL_SECRET: {
|
|
description:
|
|
'Secret used to authenticate with the signal service. If not provided, no authentication will be used',
|
|
optional: true,
|
|
},
|
|
AUTH_ENCRYPTION_KEY: {
|
|
description: 'Secret used to sign and verify JWT tokens',
|
|
optional: false,
|
|
},
|
|
FID_STORE_CONFIG: {
|
|
description: 'Base64 encoded JSON object containing the configuration for the foreign id store',
|
|
optional: true,
|
|
},
|
|
},
|
|
attributes: {
|
|
category: 'Communication & Channels',
|
|
repo: 'botpress',
|
|
},
|
|
})
|