Channels Overview
Channels connect Open Astra agents to messaging platforms. Users on Telegram, Discord, Slack, WhatsApp, Signal, iMessage, Google Chat, Microsoft Teams, LINE, Viber, X, Email, Linear, Jira, or Zapier can talk to any configured agent without needing to use the API directly. Each channel maps incoming messages to agent turns and delivers responses back on the same platform.
Available channels
| Channel | Required env vars | Notes |
|---|---|---|
| Telegram | TELEGRAM_BOT_TOKEN | Most popular. Supports file uploads, inline keyboards |
| Discord | DISCORD_BOT_TOKEN | Supports slash commands, embeds, thread replies |
| Slack | SLACK_BOT_TOKEN, SLACK_SIGNING_SECRET | Supports Block Kit, slash commands, home tab |
WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKEN | Requires Meta Business account and webhook verification | |
| Signal | SIGNAL_API_URL, SIGNAL_PHONE_NUMBER | Requires signal-cli REST bridge |
| iMessage | BLUEBUBBLES_URL, BLUEBUBBLES_PASSWORD | Requires BlueBubbles server on macOS |
| Google Chat | GOOGLE_CHAT_SERVICE_ACCOUNT_KEY | Supports Cards V2, threaded replies |
| Microsoft Teams | TEAMS_APP_ID, TEAMS_APP_PASSWORD | Requires Azure Bot registration and Teams app manifest |
| LINE | LINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRET | Supports rich messages, quick replies, Flex Messages |
| Viber | VIBER_AUTH_TOKEN | Supports rich media, keyboards, broadcast messages |
| X | X_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_SECRET | Responds to Direct Messages via OAuth 1.0a and Account Activity API |
SMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROM | SMTP outbound (any provider) + Postmark inbound webhook; threads on sender address | |
| Linear | LINEAR_WEBHOOK_SECRET, LINEAR_API_KEY | Bidirectional — webhook ingestion + comment replies; label-based agent routing |
| Jira | Database config (jira_sync_configs table) | Bidirectional — webhook events + comment replies; per-workspace Jira project sync |
| Zapier | Database config (zapier_subscriptions table) | REST Hooks bridge — trigger/subscribe/polling; routes Zapier events to agents |
Shared slash commands
Every channel supports the same set of slash commands, regardless of platform:
| Command | Description |
|---|---|
/start | Start a new session or greet the user |
/reset | Clear the current session conversation history |
/agent | Show the currently active agent |
/agents | List all available agents |
/switch <id> | Switch to a different agent by ID |
/memory <query> | Search memory and display results |
/usage | Show token and cost usage for this session |
/help | Show all available commands |
How channels work
Each channel adapter starts alongside the gateway and handles platform-specific authentication, message parsing, and response formatting. All adapters convert incoming platform messages into the same internal ChannelMessage type before passing them to the agent loop. Responses from the agent loop are converted back to platform-specific format for delivery.
Enabling channels
Channels are enabled by setting the required environment variables. No code changes are needed. The gateway detects which channel env vars are present at startup and activates those channels automatically.
# Enable Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
# Enable Discord
DISCORD_BOT_TOKEN=your-bot-token
# Enable Slack
SLACK_BOT_TOKEN=xoxb-...
SLACK_SIGNING_SECRET=your-signing-secretSetting the default agent per channel
Each channel can have a different default agent. Users can also switch agents mid-session with /switch <id>.
channels:
telegram:
enabled: true
defaultAgent: assistant-agent
discord:
enabled: true
defaultAgent: code-agent
slack:
enabled: true
defaultAgent: team-agent