Главная · Блог · Триггеры запуска сценария в чат-боте: как бот решает, чем ответить

Триггеры запуска сценария в чат-боте: как бот решает, чем ответить

· Команда ЧБТ · Сценарии, Основы

Сценарий запускает первый подошедший триггер. Бот проверяет сценарии по порядку создания, внутри сценария — триггеры по списку, а «Любое сообщение» — последним. Если не подошёл ни один, бот молчит, а диалог получает в «Диалогах» пометку «Бот не ответил». Поэтому, если бот отвечает не тем сценарием, почти всегда виноваты два триггера на одно слово или «Любое сообщение» в сценарии, созданном раньше остальных.

Что такое триггер

Триггер — условие запуска сценария: «если клиент сделал вот это, начни отсюда». У каждого триггера есть тип — поле «Когда запускать» — и шаг, с которого сценарий начнётся, — «С какого шага начать».

У одного сценария может быть несколько триггеров. Например, сценарий «Прайс» можно запускать и словом «цена», и ссылкой из поста, и «ИИ-намерением». Триггеры добавляют кнопкой «Добавить триггер» на вкладке триггеров сценария. Если у сценария нет ни одного триггера, он не запустится никогда — редактор об этом предупреждает.

Какие триггеры есть

ТриггерКогда срабатывает
«Команда (/start)»человек нажал «Запустить» или отправил /start
«Ключевые слова»в сообщении есть одно из слов
«Deeplink»бота запустили по ссылке с меткой ?start=
«ИИ-намерение»смысл сообщения совпал с описанием, которое вы задали
«Нажатие кнопки»человек нажал кнопку под сообщением бота
«Открытие виджета»посетитель открыл чат на сайте
«Комментарий к публикации»комментарий под постом из «Редакции»
«Входящий webhook»ваша система прислала запрос на адрес триггера
«Событие магазина»заказ магазина оформлен, оплачен, отправлен и так далее
«Любое сообщение»ни один другой триггер не подошёл

Большинству ботов хватает трёх: «Команда (/start)» для приветствия, «Ключевые слова» для частых вопросов и «Любое сообщение» для всего остального. Кнопкам меню отдельный триггер не нужен: кнопка с действием «Ведёт к шагу сценария» сама переводит клиента на нужный шаг того же сценария. Поэтому пункты меню удобно держать ветками одного главного сценария, а отдельные сценарии заводить под то, что запускается словами или ссылками.

Если клиентам разных каналов нужен разный ответ, отдельные триггеры для этого не нужны: поставьте в начале сценария «Условие» по полю «Канал» и разведите Telegram, MAX, ВКонтакте и сайт по своим веткам.

«Команда (/start)» и первое сообщение

В Telegram первое касание почти всегда — кнопка «Запустить», то есть команда /start. Поэтому у приветственного сценария стоит триггер «Команда (/start)».

В других каналах /start сам не приходит. ВКонтакте присылает его только по кнопке «Начать», которой в сообществе обычно нет, а в MAX и виджете человек сразу пишет «Здравствуйте». Чтобы бот не молчал, ЧБТ ведёт первое сообщение контакта в ВКонтакте, MAX и чате на сайте в сценарий с «Команда (/start)», если ни один другой триггер не подошёл.

Как написать само приветствие — в статье о первом сообщении бота.

«Ключевые слова»: три способа сравнения

В поле «Слова через запятую» перечислите варианты: цена, стоимость, сколько стоит, прайс. В «Как сравнивать» выберите способ:

  • «Содержит слово» — сработает, если слово есть где-то в сообщении: «а какая цена на ремонт?». Самый частый вариант.
  • «Точное совпадение» — сообщение должно целиком совпасть со словом. Подходит для кодовых слов из поста: «КОД25».
  • «Регулярное выражение» — шаблон для сложных случаев, например достав(ка|ить|ляете).

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

Голосовые сообщения на тарифах с ИИ расшифровываются в текст до поиска триггера (1 ИИ-кредит), поэтому ключевые слова срабатывают и на голос. На Бесплатном — нет. Когда формулировок слишком много для списка слов, используют «ИИ-намерение» — о нём отдельная статья.

«Любое сообщение» — сетка безопасности

«Любое сообщение» ловит всё, на что не нашлось другого ответа. Обычно за ним стоит ИИ-агент, меню с кнопками или передача оператору. Без такого триггера человек, написавший что-то неожиданное, не получит ответа вовсе.

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

В групповых чатах «Любое сообщение» не срабатывает: иначе бот отвечал бы на каждую реплику участников.

В каком порядке бот проверяет триггеры

  1. Сценарии проверяются по порядку создания: раньше созданный — первым.
  2. Внутри сценария — триггеры по списку, «Любое сообщение» — в конце.
  3. Отвечает первый подошедший триггер. Остальные уже не проверяются.
  4. Если бота запустили по ссылке с меткой, сначала ищется «Deeplink» под эту метку, потом обычная «Команда (/start)».

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

Что происходит, когда диалог уже идёт

Допустим, бот задал вопрос и ждёт ответа — например, «Сбор данных» спрашивает город. Что будет с сообщением клиента?

  • «Любое сообщение» не перебивает идущий сценарий: ответ уйдёт в шаг, который его ждёт.
  • Ключевые слова и команды перебивают. Если в ответе клиента оказалось ключевое слово другого сценария, запустится он. Например, на вопрос «Что вас интересует?» клиент пишет «цена», и вместо продолжения анкеты бот отправляет прайс.
  • Новый триггер начинает с чистого листа: переменные прежнего сценария сбрасываются.

Если бот ждёт нажатия кнопки, а человек пишет текст, ответит «Любое сообщение» этого же сценария, если оно есть, — обычно это ИИ-агент, который отвечает на свободный вопрос, не ломая меню.

Почему бот молчит

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

Другие частые причины:

  • сценарий выключен — в списке сценариев он помечен «Сценарий выключен»;
  • у триггера не выбран шаг в «С какого шага начать»;
  • в этом чате сработало действие «Замолчать в этом чате» — бот молчит до команды /start;
  • диалог передан оператору — бот ждёт, пока его вернут кнопкой «Вернуть боту».

Полный разбор — в статье почему Telegram-бот не отвечает.

Как собрать триггеры для типичного бота

СценарийТриггеры
Главное меню«Команда (/start)», «Ключевые слова»: меню, начать, привет
Прайс«Ключевые слова»: цена, стоимость, прайс
Запись«ИИ-намерение»: клиент хочет записаться
Акция из поста«Deeplink» с меткой поста или «Ключевые слова» с точным совпадением
Ответ на всё остальное«Любое сообщение» → ИИ-агент или «Оператор»

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

Как проверить триггеры

  1. Откройте «Проверить сценарий» и напишите боту разными словами: точными ключевыми словами, с опечаткой, длинной фразой.
  2. Учтите: в тест-чате работают триггеры только того сценария, который вы проверяете. Пересечения с соседними сценариями видны только в настоящем мессенджере — напишите боту оттуда теми же словами.
  3. Напишите что-то совсем постороннее — должно сработать «Любое сообщение».
  4. Посреди анкеты напишите ключевое слово другого сценария и посмотрите, устраивает ли вас, что бот переключится.
  5. Для «Deeplink» и голосовых проверяйте из настоящего мессенджера: метки и голос в тест-чате не передать.

Подробнее о проверке — в статье как протестировать чат-бота.

Ещё в блоге