Channels

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

ChannelRequired env varsNotes
TelegramTELEGRAM_BOT_TOKENMost popular. Supports file uploads, inline keyboards
DiscordDISCORD_BOT_TOKENSupports slash commands, embeds, thread replies
SlackSLACK_BOT_TOKEN, SLACK_SIGNING_SECRETSupports Block Kit, slash commands, home tab
WhatsAppWHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKENRequires Meta Business account and webhook verification
SignalSIGNAL_API_URL, SIGNAL_PHONE_NUMBERRequires signal-cli REST bridge
iMessageBLUEBUBBLES_URL, BLUEBUBBLES_PASSWORDRequires BlueBubbles server on macOS
Google ChatGOOGLE_CHAT_SERVICE_ACCOUNT_KEYSupports Cards V2, threaded replies
Microsoft TeamsTEAMS_APP_ID, TEAMS_APP_PASSWORDRequires Azure Bot registration and Teams app manifest
LINELINE_CHANNEL_ACCESS_TOKEN, LINE_CHANNEL_SECRETSupports rich messages, quick replies, Flex Messages
ViberVIBER_AUTH_TOKENSupports rich media, keyboards, broadcast messages
XX_API_KEY, X_API_SECRET, X_ACCESS_TOKEN, X_ACCESS_SECRETResponds to Direct Messages via OAuth 1.0a and Account Activity API
EmailSMTP_HOST, SMTP_USER, SMTP_PASSWORD, SMTP_FROMSMTP outbound (any provider) + Postmark inbound webhook; threads on sender address
LinearLINEAR_WEBHOOK_SECRET, LINEAR_API_KEYBidirectional — webhook ingestion + comment replies; label-based agent routing
JiraDatabase config (jira_sync_configs table)Bidirectional — webhook events + comment replies; per-workspace Jira project sync
ZapierDatabase 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:

CommandDescription
/startStart a new session or greet the user
/resetClear the current session conversation history
/agentShow the currently active agent
/agentsList all available agents
/switch <id>Switch to a different agent by ID
/memory <query>Search memory and display results
/usageShow token and cost usage for this session
/helpShow 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.

bash
# 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-secret

Setting the default agent per channel

Each channel can have a different default agent. Users can also switch agents mid-session with /switch <id>.

yaml
channels:
  telegram:
    enabled: true
    defaultAgent: assistant-agent
  discord:
    enabled: true
    defaultAgent: code-agent
  slack:
    enabled: true
    defaultAgent: team-agent