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

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',
},
})