Channels (Telegram, Slack and WhatsApp)
Talk to a bot from Telegram, Slack or WhatsApp, pair the people allowed to write to it, and understand what each service and the Neoo server can see.
A bot has full access to the computer or the Neoo Cloud machine it runs on. Channels let you talk to it from Telegram, Slack or WhatsApp without opening Neoo: a message from a paired person enters the bot's single conversation like any message you type, with a small label such as "via Telegram · @ana", and the bot's final answer is sent back on the same channel.
Open a bot, then Actions → Channels. Each bot can have one Telegram, one Slack and one WhatsApp connection.
How it connects
Telegram and Slack only use outgoing connections: Telegram is polled with long-polling (getUpdates) and Slack uses Socket Mode (a WebSocket that Neoo opens). There is no webhook, no public URL and nothing to open on your router. They work behind a firewall, on your computer and on Neoo Cloud.
WhatsApp is different. Meta only delivers WhatsApp messages to a public URL, so a WhatsApp channel uses a bot webhook hosted by the Neoo server. Meta calls that URL, the Neoo server relays the call to the machine that runs your bot, and your bot checks the signature itself. You still open nothing on your router, but the message content passes through the Neoo server (see below).
A bot runs in one place at a time, and so does its channel. When you move a bot, the list of paired people comes with it but the tokens do not: the channel shows Reconnect and you enter the tokens again on the new machine (for WhatsApp, also paste the new webhook URL in Meta). While the bot is on Neoo Cloud, your computer does not listen to the channel any more.
On your computer, channels work while Neoo is running. To keep them running after you close the window, turn on Keep bots running when Neoo closes in Actions → Advanced settings.
Connect Telegram
- In Telegram, open @BotFather, send
/newbotand follow the questions. - Copy the token BotFather gives you (it looks like
123456:ABC…). - In Channels → Telegram, paste the token and select Connect. The field is masked and the token is never shown again.
Neoo stores the token encrypted: in the system keychain on your computer, and encrypted at rest on your Neoo Cloud machine.
Connect Slack
- Create an app at
api.slack.com/apps(From scratch). - Under Socket Mode, turn it on and create an app-level token (
xapp-…) with theconnections:writescope. - Under OAuth & Permissions, add these bot token scopes and install the app to your workspace:
app_mentions:read,chat:write,im:history,im:read,im:write,files:read,files:write. - Under Event Subscriptions, turn on events and subscribe the bot to
message.imandapp_mention. Under App Home, allow messages from the Messages tab. - Copy the bot token (
xoxb-…). - In Channels → Slack, paste both tokens and select Connect.
Slack channels: to let a paired person mention the app in a channel, invite the app there (/invite @your-app), then enter the channel ID (C0123ABCD) in Slack channels where mentions are accepted. Mentions in other channels are ignored. Replies go in the thread of the message.
Connect WhatsApp
WhatsApp uses the WhatsApp Business Platform (Cloud API) from Meta. You need a Meta developer account.
- At
developers.facebook.com, create an app and add the WhatsApp product. Meta gives you a test phone number, or you can register your own business number. - Copy three values from the Meta console:
- Phone number ID (WhatsApp, API Setup).
- Access token. The temporary token on the API Setup page expires after about 24 hours; for a bot that stays on, create a permanent token for a system user in Meta Business Settings, with the
whatsapp_business_messagingpermission. - App secret (App settings, Basic).
- In Channels → WhatsApp, paste the three values and select Connect. The fields are masked and the values are never shown again.
- Neoo then shows a callback URL and a verify token, once. In the Meta console, open WhatsApp → Configuration → Webhook, select Edit, paste both and select Verify and save. Then, under Webhook fields, subscribe to
messages. - Pair yourself (next section). While your app is in development mode, add the phone numbers you want to talk from to the recipient list in API Setup.
The callback URL is secret: anyone who knows it can send requests to it, although only calls signed with your app secret are accepted. If you lose it or suspect a leak, select Regenerate URL and verify token and paste the new values in Meta; the old ones stop working immediately. Removing the channel deletes the webhook.
On your computer, WhatsApp works while Neoo is running and connected. If your computer is off, the Neoo server keeps the calls for up to 7 days and delivers them when Neoo reconnects.
Pair people (required)
Nobody can drive the bot just by finding it. Every sender has to be paired first:
- In the channel card, select Pair someone. Neoo shows a one-time code, valid for 10 minutes.
- On Telegram, open your bot and send
/start CODE. On Slack, send the app a direct message:pair CODE. On WhatsApp, send the business number the messagepair CODE. - The sender is now authorized (user and chat together; on WhatsApp, the phone number). The code is consumed and cannot be reused. After 5 wrong attempts the code is cancelled.
The list under Authorized people can be edited at any time: Revoke removes someone immediately.
Messages from anyone else never reach the bot or its model. A stranger gets, at most, one generic reply per hour; in Slack channels strangers get no reply at all. On Telegram only private chats are accepted, not groups. On WhatsApp every call is first checked against your app secret (X-Hub-Signature-256): an unsigned or wrongly signed call is dropped, and a message from a number that is not paired never reaches the model.
What you can send
- Text: long answers are split to fit Telegram and WhatsApp (4096 characters) and Slack.
- Files and photos: a document or photo you send (on WhatsApp: an image or a document) is saved in the bot's workspace folder, in
channel-inbox/(up to 50 MB per file, within the bot's 1 GiB quota), and the bot is told where it is. - Bot files: files the bot delivers during that turn are sent back on Telegram and Slack. WhatsApp replies are text only for now.
- Typing: Telegram shows "typing…" while the bot works. Other message types on WhatsApp (voice notes, video, location) are not downloaded; the bot only sees that an unsupported message arrived.
What Telegram and Slack see
The content of your messages, the bot's answers and the files go through Telegram's or Slack's servers, under their terms and privacy policies. They do not go through Neoo's servers: Neoo only relays presence and the bot's end-to-end encrypted state. Do not send anything through a channel that you would not send through that service. Never paste passwords or keys in a channel: use Neoo Vault instead.
What Meta and the Neoo server see (WhatsApp)
- Meta sees everything that goes through WhatsApp: your messages, the bot's answers and the files, under Meta's and WhatsApp's terms and privacy policies. Meta also holds the sender's phone number and profile name.
- The Neoo server relays each incoming message because it hosts the public webhook. The body of the call (the message text and media identifiers, not the media files) is stored on the server only until your bot's machine acknowledges it, and is erased at that moment; if your machine stays offline, it is deleted after 7 days at most. Only the size and time of the call are kept for the "recent calls" counter. The server never receives your app secret or access token: the signature is checked on the machine that runs your bot, and replies and downloads go directly from that machine to Meta.
- Your bot's answers are sent directly from your machine (or your Neoo Cloud machine) to Meta; they do not go through the Neoo server.
- Files and images you send are downloaded from Meta by your bot and saved in its workspace folder.
The 24-hour window
WhatsApp only lets a business send free-form text within 24 hours of the person's last message. Outside that window Meta refuses the message and requires a pre-approved template. Neoo does not send templates yet: when a reply is refused, the WhatsApp card shows "WhatsApp only allows replies within 24 hours of the person's last message. Ask them to write again." The status clears as soon as a reply goes through. In normal use the bot answers within minutes of the message, so the window is always open.
Limits
- One Telegram, one Slack and one WhatsApp connection per bot.
- Only the bot's main conversation is reachable; background work is not addressed directly from a channel.
- A Telegram token can be read by one program at a time: if another program polls the same bot, the channel shows "Another program is already reading this Telegram bot".
- Slack names appear as user IDs (the app does not request the
users:readscope). - Messages edited later, reactions and group chats are ignored.
- WhatsApp: text replies only, no templates, no typing indicator, and WhatsApp groups are not supported by the Cloud API.
Troubleshooting
| Status | Meaning |
|---|---|
| Connected | Listening. |
| Waiting for pairing | A pairing code is active. |
| Error | The reason is shown: token refused, service unreachable (retried automatically), or token missing on this machine (Reconnect). |
WhatsApp specifics: if Meta cannot verify the webhook, check that the callback URL and the verify token are the ones Neoo just showed (regenerate them if unsure). If messages do not arrive, check that you subscribed to messages, that Neoo is running and connected on the machine that runs the bot, and that the sender is on the recipient list while your app is in development mode.
| Disabled | You turned the channel off. |