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

147 lines
5.4 KiB
TypeScript

import * as sdk from '@botpress/sdk'
export const events = {
reactionAdded: {
title: 'Reaction Added',
description: 'Triggered when a reaction is added to a message',
schema: sdk.z.object({
reaction: sdk.z.string().title('Reaction').describe('The reaction that was added'),
userId: sdk.z.string().optional().title('User ID').describe('The ID of the user who added the reaction'),
conversationId: sdk.z.string().optional().title('Conversation ID').describe('The ID of the conversation'),
targets: sdk.z
.object({
dm: sdk.z.record(sdk.z.string()).optional().title('DMs').describe('The DMs targeted by the reaction'),
channel: sdk.z
.record(sdk.z.string())
.optional()
.title('Channels')
.describe('The channels targeted by the reaction'),
thread: sdk.z
.record(sdk.z.string())
.optional()
.title('Threads')
.describe('The threads targeted by the reaction'),
})
.title('Targets')
.describe('The targets of the reaction'),
}),
},
reactionRemoved: {
title: 'Reaction Removed',
description: 'Triggered when a reaction is removed from a message',
schema: sdk.z.object({
reaction: sdk.z.string().title('Reaction').describe('The reaction that was removed'),
userId: sdk.z.string().optional().title('User ID').describe('The ID of the user who removed the reaction'),
conversationId: sdk.z.string().optional().title('Conversation ID').describe('The ID of the conversation'),
targets: sdk.z
.object({
dm: sdk.z.record(sdk.z.string()).optional(),
channel: sdk.z.record(sdk.z.string()).optional(),
thread: sdk.z.record(sdk.z.string()).optional(),
})
.title('Targets')
.describe('The targets of the reaction'),
}),
},
memberJoinedWorkspace: {
title: 'Member Joined Workspace',
description: 'Triggered when a member joins the workspace',
schema: sdk.z.object({
userId: sdk.z.string().title('Botpress ID').describe('The Botpress ID of the user who joined the workspace'),
target: sdk.z
.object({
userId: sdk.z.string().title('Slack ID').describe('The Slack ID of the user who joined the workspace'),
userName: sdk.z.string().title('Username').describe('The username of the user who joined the workspace'),
userRealName: sdk.z
.string()
.title('Real name')
.describe('The real name of the user who joined the workspace'),
userDisplayName: sdk.z
.string()
.title('Display name')
.describe('The display name of the user who joined the workspace'),
})
.title('Target')
.describe('Slack user who joined the workspace'),
}),
},
memberJoinedChannel: {
title: 'Member Joined Channel',
description: 'Triggered when a member joins a channel',
schema: sdk.z.object({
botpressUserId: sdk.z
.string()
.title('Botpress user ID')
.describe('The Botpress ID of the user who joined the channel'),
botpressConversationId: sdk.z
.string()
.title('Botpress Channel ID')
.describe('The Botpress ID of the channel the user joined'),
inviterBotpressUserId: sdk.z
.string()
.optional()
.title('Botpress Inviter User ID')
.describe('The Botpress ID of the user who invited the new member'),
targets: sdk.z
.object({
slackUserId: sdk.z
.string()
.title('Slack User ID')
.describe('The Slack ID of the user who joined the channel'),
slackChannelId: sdk.z
.string()
.title('Slack Channel ID')
.describe('The Slack ID of the channel the user joined'),
slackInviterId: sdk.z
.string()
.optional()
.title('Slack Inviter ID')
.describe('The Slack ID of the user who invited the new member'),
})
.title('Targets')
.describe('Slack IDs of the user, channel and inviter'),
}),
},
memberLeftChannel: {
title: 'Member Left Channel',
description: 'Triggered when a member leaves a channel',
schema: sdk.z.object({
botpressUserId: sdk.z
.string()
.title('Botpress user ID')
.describe('The Botpress ID of the user who left the channel'),
botpressConversationId: sdk.z
.string()
.title('Botpress Channel ID')
.describe('The Botpress ID of the channel the user left'),
targets: sdk.z
.object({
slackUserId: sdk.z.string().title('Slack User ID').describe('The Slack ID of the user who left the channel'),
slackChannelId: sdk.z
.string()
.title('Slack Channel ID')
.describe('The Slack ID of the channel the user left'),
})
.title('Targets')
.describe('Slack IDs of the user and channel'),
}),
},
workflowWebhook: {
title: 'Workflow Webhook',
description: 'Triggered when the workflow webhook is triggered',
schema: sdk.z.object({
value: sdk.z.any().title('Value').describe('The value of the workflow webhook'),
userId: sdk.z
.string()
.optional()
.title('Slack User ID')
.describe('The Slack ID of the user who triggered the workflow'),
}),
},
} as const satisfies sdk.IntegrationDefinitionProps['events']