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

57 lines
1.8 KiB
TypeScript

import { RuntimeError } from '@botpress/client'
import { handleOutgoingTextMessage } from './channels'
import { FeatureBaseClient } from './feature-base-api/client'
import { handler } from './handler'
import * as bp from '.botpress'
export default new bp.Integration({
register: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
try {
await client.listBoards()
} catch {
throw new RuntimeError('Failed to register the integration.')
}
},
unregister: async () => {},
actions: {
listPosts: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
const posts = await client.listPosts(props.input)
return posts
},
createPost: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.createPost(props.input)
},
updatePost: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.updatePost(props.input)
},
deletePost: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.deletePost(props.input)
},
listBoards: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.listBoards()
},
getBoard: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.getBoard(props.input)
},
getComments: async (props) => {
const client = new FeatureBaseClient(props.ctx.configuration.apiKey)
return await client.getComments(props.input)
},
},
channels: {
comments: {
messages: {
text: handleOutgoingTextMessage,
},
},
},
handler,
})