A multilingual Telegram support bot with human escalation
@bronjoy_help_bot is the public support channel for Bronjoy. Customers, business owners and visitors ask about bookings, accounts, plans or how the product works in Uzbek, Russian or English. An AI agent answers what it can from the product documentation, and a person from the support team takes over in the same chat when it cannot.
Key features
- Language before anything else — the bot asks once, in all three languages, and remembers the choice across Bronjoy's bots; a question sent before a language was picked is answered right after.
- Every message recorded first — messages are stored before any reply is attempted, so a failed send never loses a question, and photos, files, voice notes and locations show up in the inbox as readable placeholders.
- Straight to a person —
/human, a menu button or words like "operator", "оператор" or "odam" hand the thread over before the model is called. - Honest limits — attachments the agent cannot read go to a person, off-topic requests get a short fixed reply, answers are throttled to eight a minute, and after 60 in a day the thread moves to a human.
- Private chats only — group chats are ignored, because a conversation bound to one member's account would otherwise expose that member's details to the group.
- Operator actions in Telegram — escalations reach a private admin bot with the last few messages and buttons to take over, return the thread to AI or open it in the admin panel.
One support agent for every surface
The same SupportAgent, built on Laravel AI, answers the Telegram bot and first-touch tickets raised inside the provider dashboard. Only one small dispatcher knows which channel a message came from. Unlike the business assistant in the Bronjoy staff bot, it has no write tools: it can search the knowledge base, find a business, look up the account of the person it is talking to and escalate. Anything that changes a booking, an account or a payment goes to a person.
Help content is written once, in the Docus documentation site, and imported into the backend's knowledge base with an Artisan command. Support runs on a cheaper Gemini Flash-Lite model than the business assistant, with a 12-turn history window, a low temperature and at most eight tool steps per answer.
Escalation rules outside the model
The agent can escalate on its own judgment, but the most important rules run outside it, because a model having a bad turn is exactly when they matter:
- A direct request for a human is honored immediately.
- Billing and account questions never get an automatic answer: the agent drafts a reply, and an operator sends or discards it from the admin bot.
- Two unhelpful answers in a row hand the thread over without being asked.
- A model error or an empty answer hands the thread over; a temporary overload gets one honest "please try again".
- Once a person has taken a thread, the bot stays out of it and pings that person about new messages instead.
Every path ends in a reply or in a person being asked to write one.
Engineering details
Escalations carry the ticket reference, channel, language, any linked business claim and a short transcript. When Telegram rejects the HTML produced from a model's Markdown, the reply is resent as plain text instead of being dropped. Only allow-listed chats can bind the admin bot, so a stranger who finds it gets no response.
One bug shaped the logging. The private-chat guard once compared the chat type to a string while Nutgram returns an enum, so the check silently dropped the direct messages it existed to allow: HTTP 200, nothing stored, nothing logged. The fix asks the chat object directly, and every ignored update is now logged.
Our role
We launched the support bot alongside the marketplace in August 2026 and rebuilt it in September around a single AI agent and conversation store shared by every support surface.
Related work
See our Telegram bot development and AI integration and automation services, and the Bronjoy Telegram booking bot that customers use to book.



