Skip to main content

Conversations

A conversation is everything said in one place — a Telegram chat, or an email thread. Mesa keeps the history for that place and uses it to answer the next message.

Conversations happen in your messaging app, not in the web app. There is no chat window on the website to type into; you talk to the bot where you already are.

What happens when you send a message

  1. The platform delivers the message to Mesa over a webhook.
  2. Mesa checks whether this chat is allowed to talk to this bot. If it is not, nothing happens at all — no reply, no error, no notice. See Troubleshooting.
  3. The message joins a queue for that channel, so messages in one chat are handled in order and a slow reply in one conversation cannot hold up another.
  4. Mesa loads recent history for the conversation and builds the context for this reply.
  5. A router picks which agent should answer. See AI agents.
  6. The agent generates a reply, calling tools if it needs them.
  7. The exchange is stored, and becomes context for the next message.

What the AI actually receives

This is the part that surprises people, so it is worth being exact.

Only text reaches the model. Attachments are replaced with a short placeholder before the message is stored or sent anywhere:

You sendThe bot sees
TextThe text
Photo with a captionThe caption only
Photo without a caption[Photo]
DocumentThe caption, or [Document: filename]
Video / audioThe caption, or [Video] / [Audio: title]
Voice message[Voice message]
Video note[Video note]

So a bot cannot describe your screenshot, read your PDF, or transcribe your voice note. If you want it to work with the contents of an image or a file, put what matters in the caption or in a follow-up text message.

Commands

Commands are typed at the start of a message. Two are built in:

CommandDoes
/verbosityControls how much the bot narrates — see Verbosity
/linkLinks your messaging account to your web account — see Identity linking

There is no /help and no /chat. Typing an ordinary message is how you start a conversation; you do not need a command for it.

Every other command comes from apps, which are authored per tenant and editable by tenant admins — /ping, /roll, /flipcoin, /whattimeisit, /team, /quote, /birthday and /counter are all apps rather than built-in commands, and appear only where apps are switched on and the app is installed.

Which bot answers

A deployment can run several bots, and more than one may be connected to the same platform. Two checks decide whether a given bot handles your message, in this order:

  1. Is this chat authorized at all? If not, every bot ignores it.
  2. Is this bot assigned to this chat? A bot only answers in channels it has been assigned to, so adding a second bot to a group does not make both of them reply.

Both checks fail silently. A bot that is connected, enabled and demonstrably running will still say nothing in a chat it is not assigned to.

Reviewing conversations

There is no conversation history screen in the web app. Whoever administers your deployment can see live conversations in the admin console's Interactions page, filtered by bot, channel and time.

For the narrower question of why a particular reply had the context it did, the web app's Context traces view answers it — see Context & memory.