Channels Overview
Channels let your AI bots communicate through external messaging platforms. Instead of chatting only through the AISCouncil web interface, you can connect a bot to WhatsApp, Telegram, Discord, Slack, and 18 other platforms -- so people can message your bot on the platform they already use.
How It Works
- You create a social account for a platform (e.g., a Telegram bot token)
- You assign which bots are allowed to respond through that account
- Messages from the platform are routed to the assigned bot
- The bot's response is sent back through the platform
Accounts are stored locally in IndexedDB. Credentials never leave your device unless the platform requires a server connection.
Supported Platforms
| Platform | Connection Method | Notes |
|---|---|---|
| QR code | Full E2EE via Noise XX + Signal Double Ratchet | |
| WA Business | API token | Meta Business API (phone number ID + access token) |
| Telegram | Bot token | BotFather token, optional chat ID filter |
| Discord | Bot token | Discord bot token |
| Slack | App + Bot tokens | Slack app token + bot token |
| Signal | Bridge server | Requires a Signal bridge (e.g., signal-cli-rest-api) |
| Matrix | Homeserver + token | Any Matrix homeserver, access token auth |
| BlueBubbles | Server URL | iMessage bridge via BlueBubbles server |
| Google Chat | Service account | Google Workspace service account JSON |
| Feishu / Lark | App credentials | App ID + secret + verification token |
| Mattermost | Server + token | Self-hosted Mattermost, personal access token |
| Microsoft Teams | OAuth | Azure AD app registration (app ID, password, tenant) |
| LINE | Channel token | LINE Messaging API channel token + secret |
| Nextcloud Talk | Server + token | Nextcloud instance URL + app password |
| Nostr | Private key | Nostr private key + relay URL |
| Tlon | Bridge | Tlon/Urbit bridge URL + ship ID |
| Twitch | OAuth token | Twitch bot OAuth token + client ID |
| Zalo | API token | Zalo Official Account token |
| Zalo Personal | QR code | Personal Zalo via bridge |
| WebChat | None | Embeddable web widget (no external service) |
| iMessage | Bridge | Requires macOS bridge (e.g., BlueBubbles) |
Account-Based Architecture
Channels use an account-based model, not a per-bot model. You create social accounts independently, then assign bots to them:
Account: "My Telegram Bot" ───► Bot: "Claude Assistant"
(platform: telegram) Bot: "GPT Researcher"
(token: 123456:ABC...)
Account: "Company Slack" ───► Bot: "Support Bot"
(platform: slack)
(appToken, botToken)
- An account with an empty bot list allows all bots to respond
- An account with specific bots listed only routes messages to those bots
- Multiple accounts on the same platform are supported (e.g., two Telegram bots)
Setting Up a Channel
- Open Settings > Connectors
- Click Add Account
- Choose a platform from the list
- Fill in the required credentials (varies by platform)
- Optionally restrict which bots can respond through this account
- Click Connect
The account appears in the connectors list with a status indicator (connected, disconnected, or error).
Per-Bot Permissions
Each social account has a bots array that controls which bots can respond through it:
- Empty array (
[]) -- all bots are allowed (default) - Specific IDs -- only listed bots can respond
This lets you run different bots on different channels. For example, a customer support bot on Slack and a research assistant on Telegram.
Message Storage
Channel messages are stored locally in IndexedDB, separate from the main chat history. Each account stores up to 1,000 messages. Messages are visible in the channel's conversation view within Settings.
WhatsApp E2EE
The WhatsApp adapter is the most sophisticated channel implementation. It runs a pure browser-based WhatsApp Web protocol with full end-to-end encryption:
- Noise XX handshake with X25519 ephemeral keys for initial connection
- Signal Double Ratchet for forward secrecy on every message
- Protobuf codec for WhatsApp's binary message format
- QR code pairing to link your WhatsApp account
- Prekey rotation (30 prekeys, refill at 5 remaining)
No external bridge or server is required for WhatsApp -- the browser connects directly using WebSocket (with an optional relay proxy fallback at api.aiscouncil.net/v1/ws/whatsapp).
See WhatsApp Setup for the full setup guide.
Connection Methods
Different platforms use different authentication methods:
| Method | Platforms | How It Works |
|---|---|---|
| QR code | WhatsApp, Zalo Personal | Scan a QR code displayed in the app |
| Token | Telegram, Discord, Zalo, Twitch, LINE | Paste a bot/API token |
| Server + token | Matrix, Mattermost, Nextcloud, BlueBubbles | Server URL + access token |
| OAuth | Google Chat, Microsoft Teams | OAuth flow with app credentials |
| Bridge | Signal, iMessage, Tlon | External bridge server URL |
| Key | Nostr | Cryptographic private key |
| None | WebChat | Built-in web widget, no external service |
Next Steps
- WhatsApp Setup -- Connect WhatsApp with E2EE