Блоки конструктора сценариев

Блоки конструктора сценариев

Содержание:


В конструкторе доступны семь блоков: «Сценарий», «Ответ», «Вопрос», «API», «JavaScript», «Оператор» и «Финиш». Разберём каждый.

Блок «Ответ»

Блок отправляет клиенту заранее написанный текст и сразу переходит к следующему шагу. Текст уходит в том виде, в каком вы его написали — бот не переписывает его своими словами.

Используйте его для приветствия, короткой инструкции, подтверждения действия, сообщения результата API или предупреждения перед следующим шагом.

Заказ найден. Сейчас проверю его статус.

Как использовать переменные

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

Заказ {{order_id}} найден. Статус: {{order.status}}.

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

Что настроить

  1. Название блока.
  2. Фиксированный текст для клиента.
  3. Переход «После ответа» к следующему блоку.

Блок «Вопрос»

Блок отправляет клиенту вопрос и ждёт следующее сообщение.

Напишите номер заказа.

Ответ клиента сохраняется в переменную — например, order_id. После этого значение доступно в следующих блоках как {{order_id}}.

Имя переменной пишите латинскими буквами, без пробелов. Можно использовать цифры и знак подчёркивания.

Переходы после вопроса

Для ответа клиента доступны три условия:

  • «Ответ точно равен» — весь ответ должен совпасть с указанным значением;
  • «Ответ содержит» — нужное значение может находиться внутри фразы;
  • «Всегда / fallback» — запасная ветка для всех остальных ответов.

Пример для вопроса «Вы подтверждаете отмену?»:

Ответ точно равен «да»      → Отменить заказ
Ответ содержит «не уверен»  → Передать оператору
Всегда / fallback           → Задать вопрос ещё раз

⚠️ Порядок условий важен

Точные условия ставьте выше, а запасную ветку — последней. И следите за пересечениями: условие «содержит "да"» сработает на ответе «не надо», потому что «да» есть внутри слова. Ветку с «нет» в таких случаях проверяйте раньше.

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

Блок «API»

Блок обращается к внешней системе через функцию, заранее созданную в разделе «Функции». С его помощью можно получить статус заказа, найти клиента в CRM, рассчитать стоимость доставки, создать заявку или отправить данные во внутреннюю систему.

Что настроить

  1. Выберите функцию из списка.
  2. Заполните аргументы запроса.
  3. Укажите переменную для сохранения результата.
  4. Настройте переход «Успех».
  5. Настройте переход «Ошибка».

Аргументом может быть обычное значение или переменная из предыдущего блока: order_id = {{order_id}}. Если результат сохранён в переменную order, к его полям обращаются через точку:

{{order.status}}
{{order.delivery_date}}

⚠️ Две ветки обязательны

У каждого API-блока должны быть настроены оба исхода — «Успех» и «Ошибка». Ветку ошибки лучше вести к понятному сообщению, а затем к оператору.

Не получилось получить данные заказа. Передаю вопрос специалисту.

Не сообщайте клиенту технические подробности вроде кода ошибки или текста ответа сервера.

Блок «JavaScript»

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

Что настроить

  1. Входные данные — какие переменные сценария передать в код.
  2. Код. Он получает объект input и должен вернуть { route, output }: route — название ветки, output — данные для следующих блоков.
  3. Переменную для сохранения результата.
  4. Переходы «Маршрут» — по каждому значению route, которое возвращает код.
  5. Переход «Ошибка кода» — на случай, если код упадёт.
if (input.days > 14) {
  return { route: 'expired', output: {} };
}
return { route: 'allowed', output: { refund: input.total - input.delivery } };

ℹ️ Как обращаться к результату

В переменную попадает только содержимое output, без обёртки. Если результат сохранён в переменную calc, обращаться нужно {{calc.refund}}, а не {{calc.output.refund}}.

Код выполняется в изолированной среде: без доступа к сети, файлам и переменным окружения. Время и объём памяти ограничены, поэтому тяжёлые вычисления в блок закладывать не стоит.

Блок «Оператор»

Блок прекращает автоматическое выполнение сценария и передаёт диалог сотруднику. Перед передачей напишите клиенту, что происходит:

Мне понадобится помощь специалиста. Передаю ему ваш вопрос.

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

✅ Передавайте оператору контекст

В текст передачи подставьте всё, что бот успел собрать — номер заказа, имя, почту. Тогда сотрудник сразу видит данные и клиенту не приходится повторяться.

После блока «Оператор» другие шаги сценария не выполняются.

Блок «Финиш»

Блок завершает сценарий. В нём можно указать последнее сообщение:

Готово. Если появятся другие вопросы, напишите нам.

Финальный текст необязателен. После этого блока сценарий прекращает работу.
 

Блок «Сценарий»

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

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

Полезные правила

  • Давайте блокам понятные названия.
  • Один блок — одно действие.
  • Для каждого API предусмотрите ветку ошибки.
  • Для каждого вопроса предусмотрите неожиданный ответ.
  • Не оставляйте клиента без сообщения перед передачей оператору.
  • Проверяйте все ветки, а не только основной путь.
  • Сначала сохраняйте и тестируйте новую версию, затем публикуйте.