Documentation Index
Fetch the complete documentation index at: https://mintlify.com/botpress/botpress/llms.txt
Use this file to discover all available pages before exploring further.
Bot configuration defines metadata, user properties, conversation tags, and message tags for your bot.
User definition
Define custom tags for users in your bot:
import * as sdk from '@botpress/sdk'
export default new sdk.BotDefinition({
user: {
tags: {
id: {
title: 'User ID',
description: 'The unique identifier for the user'
},
email: {
title: 'Email',
description: 'User email address'
},
language: {
title: 'Language',
description: 'User preferred language'
},
},
},
})
Type signature
type UserDefinition = {
tags?: Record<string, TagDefinition>
}
type TagDefinition = {
title?: string
description?: string
}
Conversation definition
Define custom tags for conversations:
export default new sdk.BotDefinition({
conversation: {
tags: {
channel: {
title: 'Channel',
description: 'The channel this conversation is happening on'
},
topic: {
title: 'Topic',
description: 'Current conversation topic'
},
priority: {
title: 'Priority',
description: 'Conversation priority level'
},
},
},
})
Type signature
type ConversationDefinition = {
tags?: Record<string, TagDefinition>
}
Message definition
Define custom tags for messages:
export default new sdk.BotDefinition({
message: {
tags: {
sentiment: {
title: 'Sentiment',
description: 'Message sentiment analysis result'
},
category: {
title: 'Category',
description: 'Message classification category'
},
},
},
})
Type signature
type MessageDefinition = {
tags?: Record<string, TagDefinition>
}
Bot configuration
Define configuration schema for your bot:
export default new sdk.BotDefinition({
configuration: {
schema: sdk.z.object({
apiKey: sdk.z.string().describe('API key for external service'),
timeout: sdk.z.number().default(5000).describe('Request timeout in ms'),
enableAnalytics: sdk.z.boolean().default(true),
}),
},
})
Access configuration in your bot implementation:
import * as bp from '.botpress'
const bot = new bp.Bot({
register: async ({ ctx }) => {
const config = JSON.parse(ctx.configuration.payload)
console.log('API Key:', config.apiKey)
console.log('Timeout:', config.timeout)
},
actions: {},
})
Attributes
Add metadata attributes to your bot:
export default new sdk.BotDefinition({
attributes: {
category: 'Customer Support',
version: '2.0.0',
author: 'Your Team',
environment: 'production',
},
})
Integration configuration
Configure integrations added to your bot:
Basic configuration
import telegram from './bp_modules/telegram'
export default new sdk.BotDefinition({
// ...
})
.addIntegration(telegram, {
enabled: true,
configuration: {
botToken: process.env.TELEGRAM_BOT_TOKEN,
},
})
Using configuration types
Integrations with multiple configuration types:
import myIntegration from './bp_modules/my-integration'
export default new sdk.BotDefinition({
// ...
})
.addIntegration(myIntegration, {
enabled: true,
configurationType: 'advanced', // Select configuration type
configuration: {
// Configuration for 'advanced' type
apiEndpoint: 'https://api.example.com',
rateLimitPerSecond: 100,
},
})
Multiple integration instances
Add the same integration multiple times with different aliases:
import slack from './bp_modules/slack'
export default new sdk.BotDefinition({
// ...
})
.addIntegration(slack, {
alias: 'publicSlack',
enabled: true,
configuration: {
botToken: process.env.PUBLIC_SLACK_TOKEN,
},
})
.addIntegration(slack, {
alias: 'internalSlack',
enabled: true,
configuration: {
botToken: process.env.INTERNAL_SLACK_TOKEN,
},
})
Plugin configuration
Configure plugins with dependencies:
import logger from './bp_modules/logger'
import slack from './bp_modules/slack'
export default new sdk.BotDefinition({
// ...
})
.addIntegration(slack, {
alias: 'mySlack',
enabled: true,
configuration: { botToken: process.env.SLACK_BOT_TOKEN },
})
.addPlugin(logger, {
configuration: {
logLevel: 'debug',
},
dependencies: {
messaging: {
integrationAlias: 'mySlack',
integrationInterfaceAlias: 'messaging',
},
},
})
Type signature
type PluginConfigInstance<P extends PluginPackage> = {
alias?: string
configuration: z.infer<P['definition']['configuration']['schema']>
dependencies: {
[K in keyof P['definition']['interfaces']]: {
integrationAlias: string
integrationInterfaceAlias: string
}
} & {
[K in keyof P['definition']['integrations']]: {
integrationAlias: string
}
}
}
Advanced options
Enable experimental features:
export default new sdk.BotDefinition({
__advanced: {
useLegacyZuiTransformer: false,
},
})
Advanced options are experimental and may change without notice.
Next steps
Bot handlers
Implement message and event handlers
Conversations
Manage conversations and users