SurfacesRoom 09 of 13

17 chat apps. One set of gates.

Connect Sophon where people already talk. Every channel speaks one message format inside, so the agent behaves the same on Telegram as in email, and an approval asked in a chat can only be answered from that chat.

A recreation of two Telegram groups wired to the same Sophon bot. In Ops team, Sophon asks to send an email to team@example.com and says to reply approve 7f3a or reject 7f3a. Someone in Book club replies approve 7f3a: it is not accepted, because Book club is not the chat the request was delivered to. A teammate in Ops team replies approve 7f3a: it is accepted and the request is approved.

03/03 A reply from the delivery chat is accepted. Anyone in that chat can answer.

Recreation of two Telegram groups wired to the same bot

AWatch a group chat, from gate to reply

One group conversation, from the gate to the reply.

A busy channel shouldn’t get an answer to every line. This is what happens to messages in a Slack channel before, during and after Sophon answers.

In #launch, Ana's message without a mention is dropped. Ben's message mentioning Sophon passes the gate and becomes one agent turn.

Step 1 of 5: The gate runs first

01 / 05 · The gate runs first

  1. Under mention-only, the default on Pro and Enterprise, a group message that doesn’t mention Sophon never becomes a session or an agent turn. It is dropped silently and logged with a reason (no mention, not allowlisted, policy disabled). Personal-tier instances skip the gate and answer every group message.

BMechanism

One format in the middle, one route per channel.

Each adapter turns platform messages into a SophonMessage on the way in and back into the platform’s own format on the way out.

Add, configure, test, activate
Add a channel from the Dashboard or the CLI, give it its credentials (tokens, OAuth and so on), test the connection, then activate it to start receiving messages.
Routing per channel
Each channel routes to one agent. Left on the default agent, the AgentRouter dispatches each message to the most appropriate agent by content. Set it under Channels, then the channel’s Routing, or in channels.json.
Who can change routing
The channel owner or an Admin. Routing is set in the add-channel wizard, the Edit Routing modal, the CLI (sophon channels routing <channel-id>) or PUT /api/channels/{id}/routing, where partial updates keep the current values.
Media becomes text
On every channel, inbound images, audio and video are converted into text the agent can work with, and files go through the document pipeline where it applies.
Attachment limits
25 MB per file and 10 files per message. Supported: Images (PNG, JPG, WEBP, GIF), audio (MP3, WAV, OGG), video (MP4, WEBM), documents (PDF, DOCX, XLSX, CSV, TXT).
Your own channel types
A plugin can add a custom channel type that appears in the add-channel wizard like a built-in. Plugins are full-trust and off by default: an admin enables them explicitly and allowlists each by name.

CEvery channel

The 17, and how each one connects.

WebChat is built in and always available. Every other channel connects with its own credentials.

  • WebChatBuilt-in (always available)Text, images, files
  • TelegramBot API tokenText, images, audio, video, files, stickers
  • DiscordBot tokenText, images, files
  • SlackSocket Mode (App + Bot tokens)Text, images, files
  • WhatsAppBusiness Cloud APIText, images, audio, video, files, stickers
  • EmailIMAP/SMTPText, HTML, file attachments
  • Microsoft TeamsBot FrameworkText, images, files
  • Signalsignal-cli REST bridgeText, images, files
  • MatrixMatrix SDKText, images, files
  • SMSTwilioText only
  • MattermostBot account (server URL + token)Text (image captions)
  • IRCRaw IRC over TCPText only
  • Google ChatChat API (service account)Text (image captions)
  • LINEMessaging APIText (image captions)
  • Feishu / LarkCustom app (App ID + Secret)Text (image captions)
  • iMessageBlueBubbles serverText only
  • NostrRelays (key pair)Text only

DGroups and threads

Quiet in the group until someone asks.

Group policy is per channel and runs before any session or agent turn exists. Personal-tier instances bypass it and answer every group message.

Group policies

mention-only
Respond only when a mention trigger fires. The default on Pro and Enterprise.
all-messages
Respond to every group message on this channel.
disabled
Never respond in groups. DMs are unaffected.
allowlist
Respond only in groups listed in allowedGroups; mention triggers still apply inside them. An empty list allows no groups.

Reply and quote context

In-payload
Telegram, Discord. Quoted content arrives with the message, no extra latency.
Fetched server-side
Slack, Mattermost, Matrix. One extra platform API call adds a small amount of latency.
Partial
Microsoft Teams. Thread binding shipped; fetching the replied-to message body is on the roadmap.
Planned
All other channels. Debouncing works everywhere; reply context capture is on the roadmap.

What wakes it

An explicit @mention, a reply to Sophon, a quote of Sophon, or a thread Sophon is already in. All four work on Telegram, Discord, Slack, Microsoft Teams, Matrix, Mattermost.

What counts as a thread

  • SlackThread replies under a message
  • DiscordThreads (including forum posts)
  • TelegramForum topics
  • MattermostThreaded posts (keyed by the root post)
  • MatrixThreads
  • Microsoft TeamsChannel-thread replies (best-effort)

Each thread is a child session with its own history. It expires after 7 days without messages and is retired at 30 days. In the Dashboard it carries a Thread badge; over the REST API it has threadId and parentSessionId. Existing sessions keep their channel-wide behavior, with no migration.

EApprovals

The gate comes back to the chat it started in.

When a conversation runs on a channel, an approval it raises is posted to that same chat, and you answer with approve <id> or reject <id>.

Delivered where you are
The destination is filled in from the inbound message's channel. Workflow approvals and questions go to the owner and same-tenant Admins instead. Chat-requested agent installs need the full Dashboard review to approve; channels can reject those requests.
Accepted from one chat
The delivery chat is recorded before the prompt is sent, so later traffic on the same bot can't move it, and a member of another group wired to the same bot can't answer by guessing an id.
Answered once, closed everywhere
Answer in the chat and the open cards on the Dashboard, the mobile app and any waiting voice prompt close on their own. The history row shows how it ended: Approved, Edited, Rejected, Cancelled or Timed out.
Questions, not just yes or no
When the agent needs information instead, it texts numbered options to the chat. Reply with the number or numbers, or with free text, and the reply is parsed into an answer. An unanswered question times out; the first option is never assumed.

Limits

What channels don't guarantee.

  1. A channel approval is checked per chat, not per person. Anyone in the delivery chat can answer it. Per-sender binding is on the roadmap.

    Approvals guide
  2. If the Gateway restarts while a channel approval is still pending, the recorded delivery point is lost and the reply falls back to the channel's default chat.

    Approval gates
  3. Approvals raised outside a conversation turn (an MCP tools/call, a workflow step, a background job) have no channel to go to. They are answered on the Dashboard or in the mobile app.

    Approval gates
  4. Reply and quote context works on Telegram, Discord, Slack, Mattermost and Matrix. Microsoft Teams is partial, and every other channel is on the roadmap.

    Group chats
  5. Media support differs by channel. SMS, IRC, iMessage and Nostr carry text only; Mattermost, Google Chat, LINE and Feishu / Lark carry text with image captions.

    Support table
  6. Thread sessions cover Slack, Discord, Telegram forum topics, Mattermost and Matrix. On Teams, channel-thread replies are best-effort.

    Threads & sessions

Start with the chat app your team already opens.

Add it in the Dashboard or the CLI, test the connection, then activate it. Routing, group policy and approvals work the same on all 17.