Chat, and reaching an agent elsewhere
Same agent, same checks, different door.
On this page
Chat streams both the answer and what the agent is doing to produce it, so a run that takes thirty seconds is legible rather than a spinner.
chat
how many orders came in today?
- proposed list_orders
- schema + policy checked
- read — no approval needed
Forty-one orders so far today, worth £8,420 between them. Two are still waiting on payment. The busiest hour was between 11am and noon.
Channels are doors, not different agents
Connecting Telegram, Slack or WhatsApp does not create a second agent with different rules. An inbound message goes to the same runtime, through the same tool registry, policy engine and approval gate. A destructive request from WhatsApp stops for approval exactly as it would here.
One difference matters: someone messaging you on WhatsApp is not a platform account, so a channel run carries nobody's permissions. Anything that requires one is refused.
Who can reach it
A channel's allowed-senders list starts empty, meaning nobody. A bot you have just connected will receive messages and answer none of them until you add someone. That is deliberate — a bot token that leaks should not expose your data to whoever found it.
Telegram senders are numeric user ids. Slack senders are member ids, which start with U — find one from a person's profile under "Copy member ID". WhatsApp senders are phone numbers in full international form with no +, so a Bangladeshi number is 8801711000000. All three are the platform's own identifier for someone, never a display name, because a display name can be changed and these cannot.
Connecting Telegram
Create a bot with @BotFather, paste the bot token, and the webhook is registered for you. Nothing else to do.
Connecting Slack
Slack needs two secrets and one manual step, because Slack has no API for setting its own event URL.
- •Bot user OAuth token — starts with
xoxb-, from OAuth & Permissions after you install the app to your workspace. - •Signing secret — from Basic Information. This is what proves a request came from Slack, and it is not the same thing as the token.
Save the channel and it shows you a Request URL. Paste that into Event Subscriptions in your Slack app and subscribe to message.channels and app_mention. Slack immediately posts a challenge to the URL to confirm you own it; that is answered automatically, and the subscription goes green.
Replies land in the thread they answer. Mentions and link markup are stripped before the agent reads the message, so <@U0BOT> how many orders? arrives as "how many orders?".
Two things worth knowing. The bot ignores its own posts and every edit, join and deletion Slack delivers down the same pipe — without that, answering a message would produce an event that produces an answer. And Slack allows a webhook three seconds before it retries, which an agent turn routinely exceeds, so a retried delivery is dropped rather than answered twice. You get one answer, a little after Slack expected it, rather than three identical ones.
Connecting WhatsApp
WhatsApp uses the Meta Cloud API, so it needs a Meta app with WhatsApp added and a business phone number. Three values, all from the Meta dashboard:
- •Access token — a permanent System User token from Business Settings. The tester token on the API Setup page expires after 24 hours, and a channel using one stops answering with no warning.
- •App secret — App Settings → Basic. This is what proves a delivery came from Meta, and it is not the access token.
- •Phone number ID — WhatsApp → API Setup. The long numeric id shown above the number, not the number itself.
Save the channel and it gives you a Callback URL and a Verify token. Put both into WhatsApp → Configuration in your Meta app and subscribe to the messages field. Meta fetches the URL once with a challenge to confirm you own it; that is answered automatically. The verify token is generated here and stored encrypted, so copy it from that message — the setup instructions are the only place it appears.
Only text messages are answered. Images, voice notes, locations and button taps are ignored rather than guessed at, and delivery receipts are not treated as messages.
The agent only ever replies to someone who has just written to it, which keeps every reply inside WhatsApp's 24-hour customer service window. It cannot start a conversation with anyone, because doing so requires a pre-approved message template and starting conversations is not something an agent should be able to do on its own.
Why you get one answer and not three
Every provider retries a delivery it thinks failed, and every provider's patience is shorter than an agent taking a proper look at your data. Slack waits three seconds; Meta is not much more generous.
So a repeated delivery of the same message is recognised and dropped. You get one answer, slightly later than the provider expected, instead of two or three identical ones — which matters most when the request wrote something, since answering it twice would write it twice.