Главная · Блог · Сценарий бота: карта диалога, ветки, тупики и выход на оператора

Сценарий бота: карта диалога, ветки, тупики и выход на оператора

· обновлено · Команда ЧБТ · Сценарии

Плохой сценарий бота узнаётся по одной реплике: «Не понял вас, выберите пункт меню». Хороший — по тому, что клиент доходит до результата за три нажатия и не замечает, что разговаривал с программой. Разница между ними закладывается не в конструкторе, а до него: на листе бумаги, где нарисована карта диалога. Ниже — метод проектирования сценария от цели к тексту кнопок, с привязкой к блокам и триггерам ЧБТ и к двум режимам редактора — «Шаги» и «Холст». Годится для записи, заявок, поддержки и любого диалога, где есть начало и конец.

Сначала конец: цель и «успешный выход»

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

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

  • Контакт — блок «Сбор данных» с телефоном, затем «Сообщение» с подтверждением «Спасибо, {{name}}, перезвоним до 18:00». Результат виден в разделе «Контакты».
  • Ответ на вопрос — «Сообщение» с ответом и двумя кнопками: «Помогло» и «Задать другой вопрос». Без второй кнопки вы не узнаете, что ответ не помог.
  • Передача человеку — блок «Оператор», перед которым бот сообщил, что делает: «Передаю администратору, ответит в течение 15 минут».

Всё остальное в сценарии — путь к этому блоку, и каждая ветка либо ведёт к нему, либо к оператору. Ветка, которая не ведёт ни туда, ни туда, — тупик; о них ниже. Здесь же появляется метрика: доля диалогов, дошедших до успешного выхода. Считать её в ЧБТ удобно тегом — перед финальным блоком поставьте «Действие» → «Добавить тег» цель-достигнута, и через неделю фильтр в «Контактах» покажет число.

Сырьё: 50 реальных сообщений вместо мозгового штурма

Меню бота, придуманное за столом, отражает то, как компания думает о себе, а не то, как клиенты спрашивают. Поэтому второй шаг — выгрузить последние 50–100 входящих сообщений из лички, почты и чата на сайте и разложить их по стопкам.

Правила раскладки:

  1. Стопка — это намерение, а не слово. «Сколько стоит стрижка», «прайс есть?», «цены какие» — одна стопка «Цены».
  2. Стопки размером в одно сообщение сливаются в «Другой вопрос» — для них будет оператор или ИИ-агент.
  3. Самые толстые стопки — это и есть первый уровень меню. Если толстых стопок набралось 12 — у вас два сценария, а не один.
  4. Внутри каждой стопки запишите формулировку клиента дословно — она станет текстом кнопки. Клиенты пишут «записаться», а не «оформить визит».

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

Карта диалога: дерево не глубже трёх нажатий

Карта — это дерево, где узлы — сообщения бота, а рёбра — кнопки и ответы клиента. Рисуйте на бумаге или в любой схеме; переносить в конструктор рано.

Правила, которые проверяют карту до сборки:

  • Три нажатия до результата. От приветствия до успешного выхода — не больше трёх кнопок. Четвёртый уровень меню клиент не проходит.
  • Не больше шести кнопок на экране. В Telegram и MAX длинный список кнопок растягивает экран, в VK лимит — 10 кнопок по две в ряд, но читаемы первые четыре-шесть. Больше — делите на два экрана.
  • Из каждого узла есть путь назад — кнопка «В меню» или «Назад». Иначе клиент, нажавший не то, застревает.
  • У каждого листа дерева — либо успешный выход, либо «Оператор». Лист с сообщением без кнопок и без вопроса — тупик.

В ЧБТ карта переносится в один из двух режимов редактора. «Шаги» — линейный список блоков, доступен на всех тарифах; подходит для сценариев-цепочек: приветствие → вопрос → вопрос → подтверждение. «Холст» (с тарифа Базовый) — схема с блоками и связями, где дерево из бумаги рисуется один в один: ветка от каждой кнопки видна как линия. Разветвлённое меню поддержки в «Шагах» собрать можно, но читать его через месяц тяжело; если дерево шире трёх веток — это аргумент за «Холст». Большие ветки выносите в блок «Субпоток» — вложенный сценарий, который на карте выглядит как один узел «Запись» и разворачивается отдельно.

Вход: какой триггер запускает сценарий

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

ТриггерКогда ставитьПример
Команда /startГлавный вход по умолчанию; в виджете ему соответствует «Открытие виджета»Приветствие и меню первого уровня
Ключевое словоКлиент пишет текстом то, что есть в меню«цена», «прайс», «стоимость» → сценарий цен; режим «содержит»
ДиплинкНужно знать источник или сразу вести в нужную веткуt.me/bot?start=qr с упаковки → сценарий покупателя, минуя меню
Нажатие кнопкиКнопка из другого сценария ведёт сюдаКнопка «Записаться» в FAQ запускает сценарий записи
Любое сообщениеСтраховка: всё, что не попало в другие триггерыУсловие по времени → оператор или «ответим утром»
Входящий webhookСценарий запускает внешняя системаОплата прошла в вашей системе → «Сделка в CRM» и «Уведомить оператора»; клиенту в Telegram или MAX такой сценарий не пишет

Порядок приоритета простой: точные триггеры (/start, диплинк, кнопка) → ключевые слова → «Любое сообщение». Последний должен быть в каждом боте — без него сообщение мимо меню остаётся без ответа, а это худший из тупиков: клиент даже не понимает, что бот его не услышал. Есть и триггер «Намерение» — ИИ-классификация текста; он пригодится, когда ключевых слов становится слишком много и они начинают пересекаться.

Ветвление: кнопки, свободный текст или «Условие»

В карте есть три способа разойтись на ветки, и у каждого своя цена.

Кнопки в блоке «Сообщение». Самый надёжный способ: клиент не может ошибиться в формулировке. Используйте везде, где вариантов конечное число: услуги, филиалы, темы. В Telegram кнопка может быть двух видов — вести по ветке сценария или открывать ссылку (карта, сайт, страница оплаты).

Свободный ответ через «Сбор данных». Когда вариантов бесконечно много: имя, телефон, удобное время, адрес. Блок ждёт ответа, проверяет формат (телефон, e-mail, число) и при несовпадении переспрашивает вашим «Текстом при ошибке» — столько раз, сколько указано в поле «Попыток» (по умолчанию три), а после последней неудачи идёт дальше по сценарию без сохранённого значения. Поэтому, проектируя, для каждого такого блока напишите текст при ошибке с выходом и решите, что стоит следующим блоком, если данных так и нет: «В номере не хватает цифр — напишите так: +7 900 000-00-00, или напишите «оператор»» — стандартное «попробуйте ещё раз» не объясняет, что не так, и не даёт пути наружу.

Блок «Условие». Ветвление без участия клиента — по тому, что бот уже знает: есть ли тег «клиент», заполнена ли переменная, из какого канала пришёл человек, какой сейчас час и день недели. Ветки именованные, у каждой свой выход, правила внутри ветки складываются по «И»; всё, что не подошло, уходит в «Иначе». Типовые применения: постоянному клиенту не задавать вопрос про имя; ночью не обещать «ответим за 15 минут»; в виджете предложить файл, в MAX — нет. Операторы сравнения — равно, не равно, содержит, больше и меньше, регулярное выражение, «в списке», «существует» — описаны в справке по условиям.

Правило выбора: если решение принимает клиент — кнопки; если бот знает ответ сам — «Условие»; свободный текст — только для данных, которые нельзя перечислить. Рандомизация тоже относится к ветвлению: «Действие» → «Случайная ветка» делит поток пополам для проверки двух вариантов текста, но об этом — в разделе о тесте.

Тупики и выход на оператора: одно правило для каждого листа

Тупик — узел, после которого клиент не понимает, что делать дальше, а бот ничего не ждёт. На карте он ищется одним вопросом к каждому листу дерева: «что человек видит и может нажать после этого?». Отсюда правило проектирования: каждый лист — либо успешный выход из первого раздела, либо блок «Оператор». Сообщение без кнопок и без следующего блока, ветка без «Назад», нарисованная кнопка без сценария за ней — три вида листов, которые обводят на бумаге и не переносят в редактор, пока они висят. «Оператор» при этом — не запасной узел в углу карты, а точка, к которой сходятся рёбра с каждого уровня меню: кнопка «Другой вопрос» на каждом экране, отдельный сценарий на слово «оператор» (он срабатывает и внутри «Сбора данных») и «Любое сообщение» как страховка; перед самим блоком — «Сообщение» с честным ожиданием («отвечаем в рабочие часы за 10–15 минут») и, если операторов ночью нет, «Условие» по часу с другим текстом. Как устроен каждый из путей к человеку, что оператор видит в «Диалогах» и как возвращает диалог боту — в статье о передаче диалога оператору; что ещё ломается в уже собранных сценариях — молчание без «Любого сообщения», простыни текста, передача ночью без предупреждения — в разборе 10 ошибок в сценариях ботов. Здесь остаёмся на уровне карты: обход дерева из 20 узлов занимает 10 минут и дешевле любой правки после запуска.

Тексты сообщений и кнопок

Тексты пишут после карты, а не вместо неё. Несколько правил, проверенных на диалогах в мессенджерах.

ПравилоПлохоХорошо
Сообщение — до 300–400 знаков, один абзацИстория компании на экран«Стрижка от 1 500 ₽, окрашивание от 3 500 ₽. Точную цену назовёт мастер после осмотра. Записать вас?»
Кнопка — глагол или существительное, до 20 знаков«Нажмите, чтобы узнать о наших ценах»«Цены»
Кнопка говорит словами клиента«Оформить визит»«Записаться»
Вопрос объясняет зачем«Ваш телефон?»«Куда прислать подтверждение? Напишите телефон»
Подтверждение повторяет данные«Спасибо, заявка принята»«Спасибо, {{name}}! Записали на четверг, позвоним на {{phone}} за час»
Ошибка ввода объясняет, что не так«Неверный формат»«В номере не хватает цифр — напишите так: +7 900 000-00-00»

Переменные {{name}}, {{phone}}, {{email}} и свои поля подставляются в любом сообщении — подробности в справке по переменным. Одно ограничение, которое влияет на тексты: в Telegram, MAX и VK бот ЧБТ отправляет только текст и кнопки, без картинок и файлов. Прайс в PDF — это URL-кнопка на файл в облаке; фото работ — ссылка на сайт. В виджете на сайте файлы отправлять можно.

Приветствие — отдельная тема со своей формулой и вариантами под задачу, разобранная в статье о первом сообщении бота. Здесь достаточно правила: две строки о том, кто вы и что бот умеет, и сразу меню. Длинное приветствие с историей компании — первый тупик сценария, потому что его не дочитывают.

Тест, запуск и доводка по диалогам

Сценарий не заканчивается сборкой. Порядок проверки и доводки, который занимает меньше времени, чем кажется.

  1. «Проверить сценарий» в редакторе: пройти каждую ветку до конца, ввести неверный телефон, написать текст мимо меню. Ищем тупики из раздела выше.
  2. Тест с телефона в каждом канале: длина сообщений, вид кнопок, диплинк с меткой, попадание диалога в «Диалоги» и контакта в «Контакты».
  3. Первые 20 диалогов — читать целиком. Где клиент написал текстом вместо кнопки — нужна кнопка или ключевое слово. Где обрыв на сообщении бота — тупик. Где дошли до оператора с типовым вопросом — недостающая ветка.
  4. Правки без страха. Автосохранение и история версий с откатом: изменили текст, стало хуже — вернули. Для крупных переделок — дубликат сценария: правите копию, включаете вместо оригинала.
  5. Два варианта текста. «Действие» → «Случайная ветка» делит поток на две ветки с разными формулировками; каждой ветке — свой тег. Через неделю по тегам в «Контактах» видно, какая довела до цели больше людей. Счётчиков по блокам в «Аналитике» нет — теги заменяют их.

Готовые сценарии, спроектированные по этой схеме, есть в шаблонах — например, «Поддержка» с коротким меню и быстрой передачей человеку или «Сбор заявок», разобранный в отдельной статье. Если сценарий проектируется под первый бот, весь маршрут от задачи до запуска — в статье как создать чат-бота без программиста. Нарисованную карту можно перенести в редактор за вечер: открыть конструктор и собрать сценарий →

Ещё в блоге