Channels¶
Lango supports multi-channel communication, allowing your agent to interact with users across different messaging platforms simultaneously.
Supported Channels¶
| Channel | Config Section | Implementation |
|---|---|---|
| Telegram | channels.telegram | internal/channels/telegram/ |
| Discord | channels.discord | internal/channels/discord/ |
| Slack | channels.slack | internal/channels/slack/ |
Each channel runs as an independent integration within the same Lango process. Messages from all channels are routed to the same agent, maintaining separate sessions per user/channel.
Setup¶
The easiest way to configure channels is through the onboarding wizard:
lango onboard
Select Channel Setup during onboarding to configure one or more channels.
Telegram¶
Prerequisites¶
- Create a bot via BotFather on Telegram
- Copy the bot token
Configuration¶
Settings:
lango settings→ Channels
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}",
"allowlist": []
}
}
}
| Key | Type | Description |
|---|---|---|
enabled | bool | Enable the Telegram channel |
botToken | string | Bot token from BotFather |
allowlist | []int64 | Allowed user/group IDs (empty = allow all) |
Security
In production, always set allowlist to restrict which Telegram users and groups can interact with your agent.
Discord¶
Prerequisites¶
- Create an application in the Discord Developer Portal
- Create a bot user and copy the bot token
- Note the Application ID for slash command registration
Configuration¶
Settings:
lango settings→ Channels
{
"channels": {
"discord": {
"enabled": true,
"botToken": "${DISCORD_BOT_TOKEN}",
"applicationId": "your-application-id",
"allowedGuilds": []
}
}
}
| Key | Type | Description |
|---|---|---|
enabled | bool | Enable the Discord channel |
botToken | string | Bot token from Discord Developer Portal |
applicationId | string | Application ID for slash commands |
allowedGuilds | []string | Allowed guild (server) IDs (empty = allow all) |
Slack¶
Prerequisites¶
- Create a Slack app at api.slack.com
- Enable Socket Mode for real-time events
- Add required bot scopes and install to your workspace
Configuration¶
Settings:
lango settings→ Channels
{
"channels": {
"slack": {
"enabled": true,
"botToken": "${SLACK_BOT_TOKEN}",
"appToken": "${SLACK_APP_TOKEN}",
"signingSecret": "${SLACK_SIGNING_SECRET}"
}
}
}
| Key | Type | Description |
|---|---|---|
enabled | bool | Enable the Slack channel |
botToken | string | Bot OAuth token (xoxb-...) |
appToken | string | App-level token for Socket Mode (xapp-...) |
signingSecret | string | Signing secret for request verification |
Channel Features¶
All channels share the following capabilities:
- Session isolation -- Each user/channel combination gets its own session
- Tool approval -- Interactive approval prompts forwarded to the originating channel
- Message formatting -- Markdown/rich text adapted per platform
- Delivery targets -- Automation systems (cron, background, workflow) can deliver results to any enabled channel
Multiple Channels¶
You can enable multiple channels simultaneously. Each runs independently:
Settings:
lango settings→ Channels
{
"channels": {
"telegram": {
"enabled": true,
"botToken": "${TELEGRAM_BOT_TOKEN}"
},
"discord": {
"enabled": true,
"botToken": "${DISCORD_BOT_TOKEN}",
"applicationId": "123456789"
},
"slack": {
"enabled": true,
"botToken": "${SLACK_BOT_TOKEN}",
"appToken": "${SLACK_APP_TOKEN}",
"signingSecret": "${SLACK_SIGNING_SECRET}"
}
}
}
Related¶
- Tool Approval -- How approval prompts work across channels
- Cron Scheduling -- Deliver scheduled results to channels
- Background Tasks -- Deliver async results to channels