Денис Лузиков@deni_vitoБесплатный разбор

Почему чат-бот не работает: причины изнутри

Коротко

Чат-боты проваливаются по двум группам причин. Первая заметна сразу: жёсткий сценарий, нет выхода на оператора, бот не понимает вопрос. Вторая тихая и техническая: дубли заявок из-за повторных доставок, потерянное состояние диалога, упавший вебхук. Первую видит клиент и жалуется, вторую не видит никто — бот просто перестаёт приносить заявки.

Про чат-ботов, которые не взлетели, написано много, и почти всё — про сценарий: поставили без цели, запутали меню, не дали связаться с человеком. Это правда, но это половина правды, и та, что заметна снаружи.

Вторая половина технической природы, и она опаснее. Бот с плохим сценарием раздражает — на него жалуются, и вы узнаёте о проблеме. Бот со сломанной технической частью не раздражает никого: он просто перестаёт доносить заявки. Внешне всё работает, а выручка тихо падает.

Это массовая беда: заметная часть тех, кто ищет что-то про ботов, спрашивает не «как сделать», а «почему мой сломался».

Ниже — обе группы, с упором на вторую, потому что про первую вы уже читали.

Что видно снаружина это жалуются клиенты
  • Бот не понимает вопрос
  • Дерево меню без выхода на человека
  • Длинные ответы не по делу
  • Навязчивые рассылки
Что видно только изнутриоб этом не жалуется никто
  • Дубли заявок от повторных доставок
  • Диалог теряет состояние на середине
  • Вебхук отвалился, сообщения не приходят
  • Упёрлись в лимит запросов на рассылке
  • Бот не видит ваши актуальные данные
Первую группу вам сообщит первый же недовольный клиент. Вторую не сообщит никто — её видно только в логах и в цифрах заявок.

Тихие технические причины

Бот упал, и никто не заметил

Самая частая и самая дорогая. Сервер перезагрузился, сертификат истёк, платформа сменила адрес API — бот перестал получать сообщения. Он не пишет вам об этом, клиенты пишут в пустоту и уходят.

Проверить это можно только одним способом: бот должен сам сообщать, что жив. Простейший вариант — ежедневное сообщение вам в мессенджер с числом диалогов за сутки. Ноль диалогов там, где обычно двадцать, — это сигнал за минуту, а не через неделю.

Повторные доставки превращаются в дубли заявок

Механика, которую платформы описывают, а разработчики пропускают. Когда платформа присылает боту событие, она ждёт ответа. Ответили медленно или не ответили — событие придёт снова. Это не сбой, это штатное поведение: платформа не знает, дошло сообщение или нет, и на всякий случай повторяет.

Если бот на каждое событие создаёт заявку в CRM, менеджер получит три одинаковых заявки от одного человека. Дальше — звонки одному клиенту трижды и испорченное впечатление.

Лечится тем, что каждое событие получает опознавательный признак, и повтор с тем же признаком отбрасывается. Закладывать это надо сразу: после запуска дубли приходится вычищать руками. Как выглядит правильная обвязка приёма заявок целиком — от сохранения до уведомления ответственного, — разбирал в статье бот для приёма заявок.

Диалог теряет состояние

Бот спросил имя, потом телефон, потом задачу. Между вторым и третьим вопросом сервер перезапустился — и бот забыл, о чём был разговор. Человек получает «Здравствуйте! Чем помочь?» вместо ожидаемого вопроса и закрывает чат.

Так происходит, когда состояние диалога живёт в памяти процесса. Работает на тестах с одним пользователем, разваливается на реальной нагрузке и при любом обновлении. Состояние должно храниться отдельно от процесса — тогда перезапуск для человека незаметен.

Рассылка упирается в лимит платформы

У каждой платформы есть потолок запросов в секунду: у Bot API мессенджера MAX, например, это 30 запросов в секунду — по официальной документации. Пока бот только отвечает на входящие, выше этой планки он не поднимется. Первая же рассылка по базе в него упирается — и часть сообщений просто не уходит.

Без очереди с ограничением скорости вы этого не увидите: платформа не пришлёт отчёт «половина не доставлена». Вы увидите только странно низкий отклик на рассылку.

Бот отвечает, но данные у него вчерашние

Бот говорит «товар в наличии», а его нет. Записывает на время, которое занято. Называет старую цену. Технически бот исправен — он просто отвечает по данным, которые кто-то залил в него месяц назад.

Это граница между ботом-меню и ботом, встроенным в процесс. Если бот не ходит в вашу систему за актуальными данными, он неизбежно начнёт врать — вопрос только в том, когда это заметят.

Где обычно теряется заявка
Человек написалдиалог начался
Событие ушло ботуздесь бывают повторы
Бот обработалздесь теряется состояние
Заявка в CRMздесь появляются дубли
Менеджер увиделили не увидел
Из пяти переходов клиент видит только первый и последний. Всё, что ломается между ними, снаружи выглядит как «просто мало заявок».

Заметные причины: коротко, но с уточнением

Про них написано везде, поэтому только то, что обычно упускают.

Нет выхода на человека. Все пишут «дайте кнопку оператора». Уточнение из практики: кнопка должна быть на каждом шаге, а не в конце дерева. Человек, который трижды не получил нужного ответа, не пойдёт искать её в подменю — он закроет чат.

Дерево меню вместо ответа. Проблема не в количестве пунктов, а в глубине. Если до нужного три нажатия — нормально, если семь — человек уйдёт на пятом. Смотреть надо не на схему сценария, а на реальные пути: где люди обрываются, там и лишний уровень.

Бот выдумывает. Актуально для ботов на языковых моделях: модель отвечает уверенно и правдоподобно, даже когда не знает. Лечится не «улучшением промпта», а ограничением: бот отвечает только по вашим документам, а на всё остальное честно говорит «не знаю, соединяю с человеком». Придуманная скидка или несуществующее условие обходятся дороже любого молчания.

Бот не решает задачу, которую ему дали. Сложную консультацию, разбор нестандартной ситуации, торг по цене бот не закрывает. Это не повод от него отказываться — это повод отдать ему то, что он делает лучше человека: круглосуточные ответы на типовое, приём заявок ночью, запись, напоминания.

Отдельно про ботов на нейросети

С ботами, которые отвечают языковой моделью, добавляется четыре причины, которых не бывает у ботов на сценариях.

Модель отвечает уверенно, когда не знает. Это не поломка, а свойство: она собирает правдоподобный ответ из того, на чём училась. Клиент получает несуществующее условие доставки, придуманную скидку или гарантию, которой вы не даёте. Лечится не уговорами в промпте, а архитектурой: бот отвечает только по вашим документам, а на всё, чего в них нет, честно говорит «не знаю» и зовёт человека.

Стоимость растёт незаметно. Каждый ответ стоит денег, и чем длиннее диалог, тем дороже — модель получает всю переписку заново. Пять развёрнутых диалогов в день незаметны, пятьсот уже нет. Если расход не считается с первого дня, счёт приходит сюрпризом.

Модель обновилась — ответы поменялись. Провайдер выкатил новую версию, и бот, который вчера отвечал коротко и по делу, сегодня отвечает иначе. Ничего не сломалось, но клиент видит другого собеседника. Поэтому версия модели фиксируется, а обновление делается осознанно и с проверкой.

Промпт не тестируется сам по себе. Правку в сценарии видно сразу: кнопка есть или нет. Правку в промпте не видно вообще, пока кто-то не задаст нужный вопрос. Набор из двадцати типовых вопросов с ожидаемыми ответами, прогоняемый после каждой правки, снимает почти все такие сюрпризы.

Первые две недели после запуска

Бот почти никогда не ломается в день запуска — в этот день его смотрят все. Ломается он на второй-третьей неделе, когда интерес спал, а реальные люди пришли с реальными вопросами.

Что стоит делать эти две недели, пока внимание ещё есть: читать диалоги целиком, а не сводку. Двадцать прочитанных переписок дают больше, чем любая аналитика: видно, где человек переспрашивает, где отвечает не то, что ждал бот, и где вместо ответа получает меню.

Именно там, а не в сценарии на бумаге, находятся почти все правки первого месяца. Дальше частота снижается, но не до нуля: платформа меняет API, вы меняете цены и услуги, а бот об этом не узнает сам.

Как понять, что бот сломался, раньше клиента

Минимальная диагностика — за один вечер
  1. 1
    Считайте диалогиСколько начато за сутки и сколько дошло до цели. Одно число, но без него вы не знаете ничего
  2. 2
    Поставьте сигнал тишиныНоль диалогов там, где обычно двадцать, — сообщение вам в мессенджер
  3. 3
    Проверьте доставку событийВ настройках платформы видно, приходят ли события на ваш адрес
  4. 4
    Пройдите сценарий самиРаз в неделю, как обычный клиент, с телефона, до самого конца
  5. 5
    Сверьте данныеСпросите бота о том, что менялось вчера. Ответил старое — интеграции нет
  6. 6
    Посмотрите обрывыНа каком шаге люди уходят чаще всего. Там и лишний уровень меню
Ни один пункт не требует разработчика. Требуется решение считать хоть что-то: бот без цифр — это ящик, о состоянии которого вы узнаёте от клиентов.

Если бот уже сделан и не работает

Сначала определите, какой из двух случаев ваш, — от этого зависит и цена, и смысл.

Случай первый: сломана обвязка. Отвалился вебхук, истёк токен, перестала работать интеграция, нет обработки повторов. Логика бота при этом нормальная. Это чинится точечно, за часы, и переделывать ничего не нужно.

Случай второй: бот собран без учёта того, как он будет жить. Состояние в памяти, никакой очереди, интеграций нет, мониторинга нет. Тут точечные правки бесполезны: каждая следующая проблема будет вылезать в новом месте. Честнее собрать заново, забрав из старого сценарий — он обычно единственное, что стоило работы.

Есть и третий случай, самый обидный: бот исправен, но решает не ту задачу. Его поставили принимать заявки там, где людям нужна консультация, — и он честно работает вхолостую. Это видно по диалогам за неделю: если люди пишут одно, а бот предлагает другое, чинить надо не код, а решение о том, зачем он вообще нужен.

Отличить одно от другого можно за час, посмотрев, как бот устроен внутри. Если хотите, чтобы посмотрел я, — расскажите задачу, разбор бесплатный, и я прямо скажу, чинить или пересобирать. Если окажется, что проще починить у того, кто делал, — так и скажу.

Про новые площадки: если бот живёт в молодом мессенджере, к списку выше добавляется скорость самой платформы. Как это выглядит на практике, разобрано в статье про создание бота в MAX — там API сменил адрес и ужесточил требования к вебхукам за несколько месяцев.

Если ваш бот уже не работает

Причина почти никогда не там, где её ищут: снаружи всё отвечает, а заявки не доходят. Пришлите доступ или просто опишите, что происходит, — посмотрю, где рвётся цепочка, и скажу, чинится это настройкой или требует переделки. Разбор бесплатный.

Денис Лузиков
Денис ЛузиковРазработчик ИИ-агентов и чат-ботов

5 лет работаю с ИИ, 120+ проектов в разных нишах. Четыре продукта в Telegram, которые можно открыть и попробовать прямо сейчас, — суммарно 477 016 пользователей в месяц. Разработку веду сам, без агентства.

Вопросы

Частые вопросы

Как понять, что бот сломался, если жалоб нет?

Отсутствие жалоб — плохой признак, а не хороший. Человек, которому бот не ответил, обычно просто уходит и молча. Смотреть надо не на жалобы, а на числа: сколько диалогов начато и сколько дошло до конца, сколько заявок пришло на этой неделе против прошлой, есть ли ошибки в логах. Если этих цифр нет вообще — вы не знаете, работает ваш бот или нет.

Бот сделан на конструкторе и перестал работать. Что проверять первым?

Три вещи по порядку: не истёк ли токен доступа, приходят ли события на webhook (в большинстве платформ это видно в разделе интеграций), не изменился ли адрес вашего сервера или сертификат. Чаще всего причина именно здесь: бот не сломался внутри, он просто перестал получать сообщения.

Клиенты жалуются, что бот бесит. Это лечится или проще убрать?

Почти всегда лечится, и обычно двумя правками. Первая — видимая кнопка выхода на человека на каждом шаге, а не в конце дерева меню. Вторая — короткий путь к цели: если до нужного ответа три нажатия вместо семи, раздражение исчезает само. Убирать бота стоит только тогда, когда задача изначально не его: сложные консультации и разбор нестандартных ситуаций ботом не закрываются.

Сколько стоит починить чужого бота?

Зависит от того, что сломано, и понять это можно только посмотрев. Если отвалилась интеграция или вебхук — это работа на несколько часов. Если бот собран без хранения состояния и без обработки повторных событий, чинить придётся архитектуру, и часто дешевле собрать заново. На бесплатном разборе я говорю прямо, какой из двух случаев ваш.