Buni.aiDocs
Chatbot
Chatbot

Advanced chatbot features

Serve several languages, use AI and your knowledge base, keep contacts, show a privacy notice, and call a chatbot from your own systems.

This page covers chatbot features beyond intents and replies. Each section says what Buni.ai does for you and what you still build in the flow.

Languages

Buni.ai works out which language each conversation is in and makes it available to your flow. It does not translate your replies for you.

How the language is decided

On every message, Buni.ai sets {{state.lang}} to a two-letter language code, such as en, fr or sw. It decides in this order:

  1. The person asked for a language, for example "French please", "kiswahili" or "reply in English". Requests for English, French, Kinyarwanda, Swahili, Portuguese, Spanish, German, Dutch and Twi are recognised.
  2. The language of this message, when the message is long enough to tell. Short replies such as "ok" or "2" never switch the language, and neither does tapping a button or quick reply, on any channel.
  3. The language the conversation has been using.
  4. The language stored on the contact from an earlier conversation.
  5. Your project's default language, when there is nothing else to go on. This is English unless you change it in Languages settings.

The language is saved to the contact, so a returning person starts in the language they used last time.

A tap on any channel is marked as one: {{requestAttributes.inputSource}} is tap for a button or quick reply and message for anything typed or spoken, so a Router can tell them apart.

Language settings

Open Project settings and select the Languages tab.

SettingWhat it does
Your flow is written inThe language a conversation starts in, and the one it falls back to when there is nothing else to go on. Pick the language your messages are written in.
Follow the language people write inOn by default. When on, a conversation switches to the language someone writes a full sentence in. When off, it changes only when they ask for a language or a saved preference says so.
Remember each contact's languageOn by default. Saves the language on the contact, so their next conversation starts in it, and automations can send them messages in it.
Send SMS in plain lettersOff by default. Sends Messaging node SMS with accented letters such as ê and ç spelled plainly, so each part holds 160 characters instead of 70. See SMS length and accents.

Republish to apply

Language settings are built into your bot when you publish. Save, then republish the project for them to reach live conversations.

Translating your messages

Your messages are written once, in the language set in Your flow is written in. To send them in other languages:

  1. Open Project settings, select the Languages tab, and add each language under Languages you serve.
  2. Open a Reply, Live Chat, Form or Messaging node and select its Translations tab. An Integration node that sends a message has a Languages section instead.
  3. Pick a language at the top. Each message is listed with its original above an input for the translation.
  4. Save the node, then republish the project.

Each message is sent in the conversation's language when it has a translation, and in the original when it does not, so you can translate a flow a little at a time.

What you seeWhat it means
Sends the originalNo translation yet. The original is sent.
Original changedThe original was edited after this was translated. The translation is still sent. Check it, then select Still correct.
A red message under the inputThe translation can't be used, for example because it names a variable the original does not have. The original is sent, and publishing waits until you fix or clear it.
A character meterButton and option labels show the 20 characters WhatsApp, Messenger and Instagram display. Longer labels are cut.

Variables. A translation uses the original's variables, such as {{state.name}}. Select one under the input to insert it. A translation can't add a variable of its own, so a translator can change what a message says but never what it does. A variable can move, for example to the end of a French sentence, and a translation may leave one out.

Button values never change. Only the label someone sees is translated. The value a button or quick reply sends, which is what your flow routes on, stays the same in every language.

Languages you don't serve. Under For other languages, use, choose which served language someone writing in another language gets. For example, Wolof speakers can get French instead of the original.

Forms translate their questions, labels, retry prompts, help text and option names. People can type an option's name in the language they were shown it in, and yes/no buttons are labelled in the form's language.

Messaging and Integration nodes send in the conversation's language by default. To text someone other than the person in the conversation, set Send in to their saved language. See Which language each person gets.

Live Chat nodes made before built-in translations keep their Other languages table. Select Move to Translations to bring it into the Translations tab.

The Translations workspace

To translate a whole flow at once, open the canvas's More menu and select Translations. It appears once the project serves more than one language.

Every message in the flow is listed once per language, with its original above it. A message used in several places, such as a button repeated in ten replies, is one row: translate it once and every place gets it. Edit a row and move to the next; the change is saved with the flow like any other edit, and is sent once you republish.

  • Show narrows the list to messages that are not translated, that need a look (the original changed, the translation can't be used, or places disagree), or that were written by AI and not yet reviewed. Search finds a message by its original or its translation.
  • Translate with AI fills in every untranslated message in the selected language. Variables stay exactly as they are, glossary terms are kept, and button labels are kept within the channel's limit where it can. Each one is marked AI, not reviewed until you select Mark reviewed. It's on paid plans, and uses AI credits at the rate for AI on Buni.ai's key, or none on your own key. See Billing and usage.
  • Download sheet saves the selected language as a spreadsheet (CSV) for a translator or a native-speaker reviewer: each message's id, where it's used, the original and the current translation. Upload sheet brings it back. Rows are matched by id, so reordering or deleting rows does no harm, and a translation that can't be used is reported and left out.

What Buni.ai translates for you

  • The AI builder writes translations in the same way when you ask for a bot in several languages, and keeps your existing translations when it edits a node. Add the languages under Languages you serve for them to be sent.
  • AI Agent nodes are told the conversation's language and answer in it, unless the person writes to them in another. You don't need to put this in the prompt.
  • Built-in messages, such as "Sorry, I don't understand that" and the messages that end a form, are sent in English, French, Portuguese, Spanish, German, Dutch, Swahili, Kinyarwanda and Twi. In any other language they are sent in English.

To branch on the language yourself, use a Router with {{state.lang}}, for example state.lang === "fr".

Testing in another language

In the chat simulator, choose a language under Reply as. Every message you send then counts as asking for that language, so you can check each language's translations without writing in it. Choose Whatever they write in to go back to how real visitors are treated.

In the Inbox, agents can translate a conversation they are working on. See AI drafts and translation.

Intents in several languages

Intent recognition uses a language model that treats your sample utterances as examples. Add sample utterances in each language you expect, and test each language in the simulator before relying on it. The Intent node's Locale field sets the intent's language variant.

AI answers and your knowledge base

An AI Agent node lets the bot answer open questions in its own words. Common uses in a chatbot:

  • Answer from your documents. Attach knowledge base documents so the agent answers from your content rather than general knowledge.
  • Handle the fallback. Connect your fallback intent to an AI Agent, so questions no intent covers still get an answer grounded in your documents.
  • Call your systems. Give the agent access to APIs, integrations and data stores so it can look things up while it answers.

Keep a Live Chat path for questions the agent cannot answer.

Contacts

Each conversation creates or updates a contact for the person, keyed by their phone number or platform handle, and links the conversation to it. Use the Contact node to set more details, such as a name collected in a form, or to add the person to a group.

Privacy notice

In project Settings › Privacy, turn on Show a privacy notice to prepend a notice to the first message of each new conversation, on every channel. Because the bot records a contact on that first message, data-protection law generally expects people to be told at that point. See Privacy and data.

Conversations and state

  • A conversation's state, including every {{state.x}} value, is kept while the person keeps writing. After 30 minutes without a message, the next message starts a new session.
  • Values that must outlive a session belong in a Data Store or on the contact, not only in state.
  • Intent parameters land in {{state.variableName}}, where variableName is the intent's output variable. See Where the values go.

Payments in a chat

The Collect Payment node requests a payment during the conversation: a mobile money prompt on the customer's phone, or a checkout link in the chat.

Satisfaction surveys

In project Settings › CSAT, choose a form to send when an agent resolves a conversation. See CSAT.

Learn from real conversations

In project Settings › General, turn on Use this project's conversations to suggest improvements. When you ask Buni to improve the flow, it can then use the messages the bot failed to understand. Only those messages are used, and nothing is shared with other projects or organizations.

Call the bot from your systems

Chatbot projects have a Settings › API Access tab for calling the project through the Buni.ai Public API. See Project API settings.

Last reviewed 7 October 2026

On this page