Главная · Справка · Условия и ветки

Условия и ветки

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

Что можно проверить

ПроверкаЧто сравниваетсяТипичное применение
ТегЕсть ли у контакта указанный тег«оплатил», «vip», «рассылка», «src:реклама» — сегментация и доступ к веткам
ПеременнаяЗначение переменной сценарияЧисло из «Сбора данных» («площадь больше 40»), ответ на открытый вопрос, результат «HTTP-запроса»
КаналОткуда пишет клиент: telegram, max, vk, webРазные тексты и кнопки для VK (лимит 10 кнопок) и виджета (файлы)
ВремяТекущий час, 0–23Ночью — «ответим утром» вместо передачи оператору
День неделиТекущий день, 0–6 (0 — воскресенье)В выходные — другой текст или отложенный догрев

Час и день недели берутся по серверному времени ЧБТ, а не по часовому поясу клиента — границы удобно проверить тест-чатом. Проверка «текст сообщения» здесь не нужна: реакцию на слова клиента задают триггеры «Ключевые слова» и «Любое сообщение», а ответ на открытый вопрос сохраняется «Сбором данных» в переменную и уже потом проверяется «Условием».

Операторы сравнения

В правиле выбирается поле, оператор и значение. Операторы в интерфейсе обозначены знаками и словами:

  • = и ≠ (равно / не равно) — точное совпадение строк; «Да» и «да» — разные значения, поэтому для ответов текстом надёжнее кнопки с тегами.
  • содержит / не содержит — подстрока: переменная city содержит «Моск».
  • >, <, ≥, ≤ — числовое сравнение; значение должно быть числом (включите «Проверка ввода: Число» в «Сборе данных»), иначе сравнение вернёт «нет».
  • regex — регулярное выражение без учёта регистра: ^\+?7\d{10}$ проверит телефон в переменной.
  • в списке — значение совпадает с одним из перечисленных через запятую: Москва, Казань, Уфа.
  • задано / не задано — переменная заполнена или нет: так проверяют, оставил ли человек телефон раньше, чтобы не спрашивать второй раз.

Для тега достаточно «задано» и «не задано» — тег либо стоит, либо не стоит.

Ветки, порядок проверки и «иначе»

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

Из этого следуют два практических правила:

  1. Частное — выше общего. «Есть тег vip и есть тег оплатил» ставьте над «есть тег оплатил», иначе vip-клиенты никогда не попадут в свою ветку.
  2. «Или» — это две ветки с одним исходом. Если бюджет «300–600» или «от 600» должен вести к менеджеру, сделайте две ветки с одинаковым продолжением; внутри одной ветки «или» нет.

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

Типовые ошибки

  • Переменная не сохранена. «Сбор данных» пишет ответ в карточку контакта; чтобы «Условие» его увидело, включите «в переменную» и укажите имя. Подробнее — в справке о переменных.
  • Число сравнивается как текст. «10» больше «9» только если оба значения — числа; без проверки формата клиент напишет «десять», и ветка не сработает.
  • Тег ставится после условия. Действие «Добавить тег» должно стоять в ветке раньше блока, который этот тег проверяет — в том же диалоге или в предыдущем.
  • Ветка без продолжения. После «Условия» каждая ветка должна вести к блоку; пустой выход — молчание бота.

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

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

Можно ли в одной ветке написать «или»?
Нет, правила внутри ветки работают как «и». Для «или» сделайте две ветки с одинаковым продолжением.

Как проверить, что клиент уже оставлял телефон?
Сохраните телефон «в переменную» в «Сборе данных» и поставьте «Условие» с оператором «задано» по этой переменной; в ветке «иначе» — блок сбора телефона.

Условие проверяет текст сообщения клиента?
Напрямую нет. Слова клиента ловят триггеры «Ключевые слова» и «Любое сообщение»; ответ на открытый вопрос сначала сохраняется «Сбором данных» в переменную, потом проверяется «Условием».

Нужен ли платный тариф для блока «Условие»?
Нет, блок доступен на Бесплатном тарифе в режиме «Шаги». Визуальный редактор «Холст» — с Базового.

Создать бота бесплатно