Skip to content

Channels and bots

A channel is a messaging platform your users already work in. When a channel bot is connected, people can talk to an XTM One agent from Slack, Microsoft Teams, WhatsApp, Telegram, Discord, or Google Chat instead of opening the web interface, and agents can post messages back into those conversations.

Everything on this page is configured in Settings > Channels & Bots. The per-platform guides then walk through the external setup, one platform at a time.

Supported channels

Channel Direction What you connect
Web chat Built in Nothing — always available for every user and agent
Slack Receive and publish A Slack app with a bot token and signing secret
Microsoft Teams Receive and publish An Entra ID app registration, an Azure Bot resource, and a Teams app package
WhatsApp Receive and publish A Meta app using the WhatsApp Business Cloud API
Telegram Receive and publish A bot created with @BotFather
Discord Receive and publish A Discord application with a bot token
Google Chat Receive and publish A Google Chat app and a service account key

Web chat is listed in the same screen as Web Chat, with an Always Active badge. It needs no setup and cannot be disabled.

Before you start

  • You need to be an administrator. Only admins can create, edit, or delete channel bots.
  • The deployment needs an active Agentic AI license. Without it, saving a channel bot is rejected.
  • The platform must be reachable from the internet over HTTPS. Every platform except Discord delivers messages to a webhook URL built from BASE_URL — see Configuration. A local or private address works for testing only if the messaging platform can reach it.
  • You need administrator rights on the messaging platform itself, or someone who has them. Most steps happen in the external console, not in XTM One.

How a channel goes live

The same four steps apply to every platform.

  1. Create the app on the messaging platform. Each platform has its own console — the Slack app directory, the Azure portal, Meta for Developers, and so on. This is where you obtain the credentials and grant permissions.
  2. Connect the bot in XTM One. In Settings > Channels & Bots, select the platform and click Configure, then paste the credentials. Every value is encrypted before it is stored. The card switches to Connected once credentials are saved.
  3. Point the platform at the webhook URL. The connected card shows a Webhook URL you can copy under Receive. Paste it into the messaging platform's webhook or messaging endpoint setting. Discord is the exception — it opens its own outgoing connection and needs no webhook.
  4. Enable the channel on an agent. A newly connected bot does not answer anything yet. Open the agent, go to Configuration > Channels & Bots, enable the channel, and turn on Receive, Publish, or both.

Use the built-in setup guide

Each card in Settings > Channels & Bots has a Setup Guide button. It shows the same steps as the pages here, with the permission list and your deployment's real webhook URL already filled in — including a copy-ready Teams manifest.

Receive and publish

Every connected bot has two independent capabilities, shown side by side on the bot card and again on each agent.

  • Receive covers incoming messages: someone writes in a channel or sends a direct message, and an agent answers.
  • Publish covers outgoing messages: an agent uses the bot's tools to post a message, reply in a thread, add a reaction, or upload a file on its own initiative — for example at the end of an assignment.

The two are separate on purpose. An agent can post daily summaries to a channel without ever listening to it, and it can answer questions in a channel without being allowed to post anywhere else.

The Publish capability comes from the bot tools listed on the card. Click the tool count to browse them and test one against the live connection before an agent uses it.

Restricting which channels a bot can use

A bot has ambient authority: on the messaging platform it can reach every channel it has been invited to. Channel whitelists narrow that down inside XTM One.

Both lists are edited on the bot card and apply to every agent using the bot:

  • The Receive whitelist limits which channels the platform accepts incoming messages from. Messages from anywhere else are ignored silently.
  • The Publish whitelist limits which channels agents can send to. A blocked send fails with an explicit access-denied error rather than posting to the wrong place.

When a list is empty, no restriction applies at bot level — but a bot with no whitelist at all is reserved for company-managed agents. Non-admin users only see the bot on their own agents once at least one whitelist entry exists, so they cannot silently give a personal agent workspace-wide reach.

Each agent can then narrow the bot's scope further in its own Channels & Bots section. The effective scope is the overlap between the agent's selection and the bot whitelist, never more than the bot allows. Admins can grant an exception per agent with Bypass whitelist.

Direct messages, mentions, and anonymous users

Three toggles decide when a bot answers at all. Each exists on the bot card and again on every agent, and the bot setting always wins.

Toggle What it does Precedence
Allow private conversations Direct messages reach the agent even when receive channels are restricted If the bot has it off, no agent can turn it back on
Only when mentioned In group channels, the bot answers only when it is explicitly @mentioned (not supported on WhatsApp) If the bot has it on, no agent can turn it off
Allow anonymous users People without an XTM One account can talk to the agent If the bot has it off, no agent can turn it back on

A few consequences are worth knowing:

  • Direct messages always bypass Only when mentioned. Someone messaging the bot privately never has to mention it.
  • With Only when mentioned on, once the bot has answered in a thread it keeps following that thread for about 24 hours without needing a new mention. This works where the platform reports both mentions and threads — Slack, Microsoft Teams, and Google Chat. On Telegram and Discord the mention is detected but there is no thread tracking, so each new question needs its own mention.
  • Only when mentioned cannot be used on WhatsApp at all: the Cloud API does not report structured mentions, so the condition is never satisfied and the bot stays silent in groups. Leave it off there and scope the bot with the receive whitelist instead.
  • With Allow anonymous users on, the conversation is not attached to a user account. The agent still receives the sender's display name and platform identity as context. The General Assistant is never available anonymously — anonymous traffic is served by agents only.

Anonymous access is a public door

Turning on Allow anonymous users lets anyone who can reach the channel use the agent, its tools, and its knowledge bases. Restrict the agent's tools and knowledge accordingly, and prefer a dedicated agent for public channels.

Commands inside a conversation

Users have two commands on external channels, and they are worth mentioning when you announce a new bot:

  • /reset or /new archives the current conversation and starts a fresh one, which is the way to clear context that has drifted.
  • /stop mutes the bot in the current thread for seven days. Mentioning the bot again lifts the mute immediately. It works where threads are tracked — Slack, Microsoft Teams, Google Chat, and WhatsApp groups. On WhatsApp the mute cannot be lifted early, since mentions are not detected there, so it lasts the full seven days.

How the bot knows who is talking

XTM One matches the sender to an account by email address:

  • Slack and Google Chat provide the email directly, so matching is automatic.
  • Microsoft Teams provides the email in most messages, and otherwise the platform resolves it from the sender's Entra ID identity.
  • WhatsApp, Telegram, and Discord do not expose an email. Those senders are either treated as anonymous, when the bot allows it, or asked to register.

When the sender matches an account, the conversation inherits that user's permissions, personal preferences, and memory — the same as if they had used web chat. Users can also route their own direct messages to a specific agent in My Profile > Channels & Bots.

Good habits

  • Connect one bot per platform and share it. Several agents can use the same bot with different scopes.
  • Set a receive whitelist before inviting the bot to busy channels, then widen it once the behavior is what you expect.
  • Turn on Only when mentioned for shared team channels, and leave it off for a dedicated support channel where the bot should answer everything.
  • Keep publish scopes tight. An agent that only needs to post a daily report needs one channel, not the whole workspace.
  • Review Routing on the bot card: it lists exactly which agents receive from and publish to that channel.
  • Rotate credentials on the messaging platform side, then paste the new value with Edit credentials. Fields left blank keep their stored value.

Troubleshooting

The bot never answers. Check in this order: the bot card shows Connected; an agent has the channel enabled with Receive on; the channel is in the receive whitelist (or no whitelist is set); the bot has actually been invited to the channel. On group channels, also check whether Only when mentioned is on.

The bot answers in direct messages but not in channels. Almost always the receive whitelist, a missing invitation, or a missing mention.

The messaging platform rejects the webhook URL. Save the bot credentials in XTM One first. Verification requests are signature-checked, so the platform's URL test only succeeds once the secret is stored. Also confirm BASE_URL matches the public HTTPS address you pasted.

The bot answers twice. On Slack, this is caused by subscribing to both message.channels and app_mention. Keep one of the two.

An agent cannot post to a channel. The publish whitelist on the bot, the agent's own publish selection, or both. The effective scope is the overlap of the two.

Nothing works after changing the platform URL. The webhook URL is derived from BASE_URL. Update the endpoint on every messaging platform after the address changes.

Next step

Pick the platform you want to connect: Slack, Microsoft Teams, WhatsApp, Telegram, Discord, or Google Chat.