Files
botpress--botpress/integrations/freshchat/src/index.ts
T
2026-07-13 13:34:48 +08:00

42 lines
1.1 KiB
TypeScript

import { RuntimeError } from '@botpress/client'
import { actions } from './actions'
import { channels } from './channels'
import { getFreshchatClient } from './client'
import { handler } from './handler'
import * as bp from '.botpress'
export default new bp.Integration({
register: async ({ client, ctx, logger }) => {
const freshchatClient = getFreshchatClient({ ...ctx.configuration }, logger)
if (!(await freshchatClient.verifyToken())) {
throw new RuntimeError('Invalid API token or domain name')
}
const channels = await freshchatClient.getChannels()
if (!ctx.configuration?.topic_name?.length) {
throw new RuntimeError('Topic name required')
}
const channel = channels.find((channel) => channel.name === ctx.configuration.topic_name)
if (!channel) {
throw new RuntimeError(`Topic with name '${ctx.configuration.topic_name}' doesn't exist on your account`)
}
await client.setState({
type: 'integration',
id: ctx.integrationId,
name: 'freshchat',
payload: {
channelId: channel.id,
},
})
},
unregister: async () => {},
actions,
channels,
handler,
})