Тип бота
Три языка, одна очередь поддержки и ни одной отдельной команды
Многоязычный Telegram-бот поддержки отвечает на типовые вопросы по-арабски, по-английски и по-русски, а всё остальное передаёт человеку вместе с переведённой перепиской. Он снимает необходимость держать отдельный график дежурств под каждый язык. Операторов он не заменяет, и машинный перевод время от времени будет ошибаться.
Многоязычные боты поддержки: цена, сроки и ограничения
- Фиксированная цена
- $4,600 USD
- Срок
- 21 календарный день с момента старта
- Длина сообщения
- 4096 символов, подпись к медиа — 1024
- language_code
- Отражает язык интерфейса приложения, а не язык чтения
- Кнопки справа налево
- Рисуются верно, но не переносятся — обрезаются по фиксированной ширине
- Перевод диалекта Залива
- Заметно хуже, чем литературного арабского
As of 2025-10-01, Telegram Bot API 13.4
Какую задачу это решает
У дубайской компании, которая обслуживает эмиратцев, экспатов и русскоязычных клиентов, кадровая проблема возникает раньше технологической. Закройте три языка на весь рабочий день — и вам нужно минимум шесть человек, большинство из которых большую часть времени простаивает. Закройте плохо — и одна языковая группа стабильно ждёт дольше остальных, замечает это и говорит об этом публично.
Соблазнительный короткий путь — отвечать всем по-английски и рассчитывать, что клиенты справятся. Многие справятся. Те, кто не справится, непропорционально часто окажутся самыми ценными: арабоязычный клиент, у которого медицинский или юридический вопрос, не станет вести важный для себя разговор на втором языке — и будет прав.
Реальная картина такова, что большая доля входящих — это небольшой набор повторяющихся вопросов: часы работы, цены, где вы находитесь, есть ли это в наличии, как отменить. Такие ответы можно один раз написать на каждом языке и отдавать мгновенно, вообще без риска перевода. Всё остальное уходит человеку, а переписка переводится, чтобы оператор работал, не владея языком клиента. Бот не ведёт трудные разговоры. Он расчищает место, чтобы их вели люди.
Как идёт разработка
Язык определяется один раз, и дальше его уважают
Решает первое сообщение, выбор держится на весь разговор, и есть видимый способ его сменить. Переопределение на каждом сообщении даёт бота, который переключает язык посреди диалога на коротком ответе, — и это читается как поломка.
commandsЧастые вопросы закрываются написанным текстом, а не переводом
Каждый частый ответ пишет носитель языка на своём языке. В этом и разница между ботом поддержки, которому доверяют, и ботом, который формально прав и едва заметно фальшивит на том языке, который для читателя важнее всего.
inline-keyboardВсё, что не совпало с набором, сразу уходит человеку
Никаких кругов переформулирования и третьей попытки понять. Бот поддержки, который не даёт добраться до человека, хуже, чем отсутствие бота, а каждая эскалация записывается как кандидат на новый написанный ответ.
forum-topicsОператор видит переписку на своём языке
Входящие сообщения переводятся для оператора, его ответы переводятся обратно, и оригинал всегда виден рядом. Оператор замечает, когда перевод выглядит странно, — это единственная работающая на практике страховка.
forum-topicsВ нерабочее время бот говорит об этом прямо
С реальным временем ближайшего открытия на языке клиента и с возможностью оставить вопрос до утра. Делать вид, что оператор на месте, а потом молчать одиннадцать часов — хуже честного варианта.
commandsВопросы без ответа становятся написанными ответами в следующем месяце
Каждая эскалация группируется по теме и языку. Список получается коротким и настоящим, и он превращает объём поддержки в очередь задач на доработку, а не в постоянную статью расходов на персонал.
webhook
Что Telegram разрешает, а что нет
Telegram корректно рисует текст справа налево, но подписи кнопок не переносятся по строкам и обрезаются на фиксированной ширине.
Арабские подписи надо проверять на настоящей длине. То, что помещается по-английски, регулярно вылезает за край по-арабски, и получается кнопка, смысл которой обрезан на середине слова.
Telegram передаёт в объекте пользователя поле language_code, но оно отражает язык интерфейса приложения.
Это подсказка, а не ответ. Клиент-эмиратец с английским интерфейсом телефона, пишущий по-арабски, должен получить арабский, поэтому язык определяется по тексту сообщения, а поле берётся лишь как довесок при сомнении.
Подпись к медиа ограничена 1024 символами, обычное сообщение — 4096.
Длинные ответы, идущие с картинкой, приходится разбивать. Арабская версия того же ответа часто длиннее английской, поэтому подпись, помещающаяся на одном языке, может не поместиться на другом.
Качество машинного перевода для арабского диалекта Залива заметно хуже, чем для литературного арабского.
Клиенты пишут именно на диалекте. Поэтому основной путь построен на заранее написанных ответах, перевод работает только на пути эскалации, а оператор всегда видит исходный текст.
Имена и логины в Telegram могут содержать смешанные письменности и управляющие символы направления текста.
Имена выводятся с явной изоляцией, чтобы подобранное отображаемое имя не перевернуло раскладку сообщения вокруг себя. Мелочь, без которой получаются убедительные поддельные сообщения.
Когда это не нужно строить
- У вас меньше примерно тридцати обращений в день. Написать и поддерживать три языковых набора ответов дороже, чем сэкономленное время операторов.
- Вопросы у вас действительно разные, повторяющегося ядра нет. Экономика этой разработки держится на плотной верхушке частых вопросов; без неё бот будет эскалировать почти всё.
- Вы рассчитываете, что он заменит операторов. Он снимает рутинный объём, чтобы люди занимались остальным; компания, урезавшая штат под эту логику, почувствует разницу в первую же тяжёлую неделю.
- Вам некому отдать написанные ответы на вычитку носителю языка. Машинно переведённые шаблоны хуже, чем ответы только по-английски: они выглядят официально и читаются неправильно.
На чём это работает
| Компонент | Версия | Зачем |
|---|---|---|
| grammY | 1.45 | Фреймворк бота; язык живёт в состоянии каждого разговора. |
| Cloudflare Workers | current | Среда исполнения для самого бота и для вызовов перевода на стороне оператора. |
| Cloudflare D1 | current | Наборы ответов по языкам, состояние разговоров и журнал эскалаций. |
| Cloudflare Workers AI | current | Перевод только на пути эскалации и никогда на пути готовых ответов. |
| TypeScript | 5.9 | Строгий режим; языковые ключи типизированы, поэтому недостающий перевод роняет сборку. |
О чём спрашивают перед стартом
Почему не переводить всё машинным переводом?
Потому что по частым ответам вас и оценивают, а диалект Залива — ровно та область, где машинный перевод слабее всего. Написать двадцать главных ответов на каждом языке — ограниченный объём работы, который полностью убирает риск с того пути, по которому идёт большинство клиентов.
Как оператор работает с языком, которым не владеет?
Он видит сообщение клиента в переводе, а под ним оригинал, и пишет на своём языке. Это не идеально, но странный перевод оператор замечает именно потому, что оригинал рядом, — и это единственная практичная защита от уверенной чепухи.
Какую долю обращений бот обычно закрывает сам?
Это целиком зависит от того, насколько плотно распределены ваши вопросы, и любой, кто называет цифру, не видя вашей истории, гадает. Полезный первый шаг — выгрузить три месяца переписок и посчитать; именно эта цифра решает, стоит ли разработка своих денег.
Нормально ли арабский отображается в Telegram?
Текст сообщений — да, стабильно. Слабое место — подписи инлайн-кнопок: они обрезаются по фиксированной ширине, а не переносятся, поэтому каждая подпись проверяется на реальной арабской длине, а не на английской заглушке.
Можно ли добавить четвёртый язык позже?
Да. Языковые ключи типизированы, поэтому новый язык сразу даёт ошибки компиляции со списком всех ответов, которые ещё не написаны. Это сделано нарочно: молча уехавший в продакшен наполовину переведённый набор — как раз тот сбой, который эта схема предотвращает.
Можно ли соединить его с нашей системой тикетов?
Да. Эскалация открывает тикет в Zendesk или Freshdesk с приложенной переведённой перепиской, чтобы ваша отчётность по срокам реакции продолжала работать, а не размазывалась по двум системам.