Узлы сценария

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

Всего есть 18 типов узлов. Меню узла меняется в зависимости от типа, а рядом на холсте сразу видно, как он будет выглядеть.

Сообщения

  • Сообщение — текст клиенту с подстановкой переменных и кнопками. Если текста слишком много, он делится на несколько сообщений сам, по границам строк. Можно приложить картинку или файл — тогда текст станет подписью к нему.
  • Медиа — картинка, видео или документ из медиатеки бота (или ссылка на файл в интернете). Удобно показывать товар, схему, прайс или инструкцию.

Ввод и логика

  • Ввод — вопрос клиенту с проверкой ответа и числом попыток. Ответ сохраняется в переменную. Если проверка не проходит несколько раз подряд, разговор уходит по ветке «превышено» — например, к оператору. Проверки бывают готовые: телефон, почта, число.
  • Условие — проверка переменной с ветками «да» и «нет». Ветка «нет» обязательна: диалог всегда должен знать, куда идти, если условие не выполнилось.
  • Переменная — записать значение в переменную диалога. Значением может быть текст, число или значение другой переменной — пригодится, чтобы запомнить выбор клиента и вернуться к нему позже.
  • Переход — переход к другому узлу или в другой поток. Полезно, чтобы не повторять один и тот же кусок сценария дважды.
  • Случайный выбор — разная реакция на один и тот же ответ. У каждой ветки можно задать вес: чем больше, тем чаще она выбирается.
  • Пауза — подождать перед продолжением (например, десять минут или до завтрашнего утра). Пауза переживает перезапуск сервера, а если клиент напишет раньше времени, пауза отменяется и разговор идёт обычным путём.
  • Стоп — завершить диалог, при желании с прощальным сообщением. Новое сообщение от этого же человека начнёт разговор заново.
  • Заметка — пометка на холсте. В диалоге не участвует, нужна, чтобы не забыть, что здесь задумано.

ИИ

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

Данные и внешние системы

  • Поиск по базе знаний — найти подходящий кусок в ваших документах. Ветка «нет ответа» здесь обязательна: вы всегда решаете, что делать, если ничего не нашлось.
  • HTTP-запрос — обратиться к внешней системе: вашей CRM, складу, службе доставки. Ответ можно разложить по переменным, а ветки задать по коду ответа (успех, ошибка клиента, ошибка сервера, превышен предел частоты).
  • Скрипт — выполнить ваш скрипт на Python: посчитать, проверить заказ, обратиться туда, куда обычным запросом не дотянуться. Подробнее — в разделе Скрипты.

Оператор

  • Передача оператору — позвать человека. Бот умолкает, а разговор попадает к оператору вместе с кратким описанием и последними репликами — оператору не нужно перечитывать всё с начала.
  • Уведомить администратора — отправить сообщение вам, а не клиенту: о новой заявке, о необычном случае, о сумме заказа. Сообщение приходит в служебный чат.

Служебные потоки

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

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

Что запускает диалог

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

Переменные и подстановки

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

Если значение пустое, подстановка убирается аккуратно. Например, текст «Здравствуйте, {{first_name}}!» для гостя без имени превратится просто в «Здравствуйте!» — без повисшей запятой и лишних пробелов.

Как отвечать по документам и что делать с пробелами в знаниях — в разделе База знаний. Как настраиваются модели и правила общения — в разделе Модели и промпты. Собрать узлы в диалог поможет Студия сценариев.

← Оглавление документации