Главная · Справка · Условия и ветки
Условия и ветки
Блок «Условие» — единственное место, где сценарий принимает решение без участия клиента: смотрит на теги контакта, переменные, канал, время и уводит диалог в одну из веток. Кнопки в «Сообщении» — другой механизм: там выбирает человек. Ниже — что именно проверяет «Условие», какие операторы доступны, в каком порядке срабатывают ветки и на чём чаще всего ошибаются.
Что можно проверить
| Проверка | Что сравнивается | Типичное применение |
|---|---|---|
| Тег | Есть ли у контакта указанный тег | «оплатил», «vip», «рассылка», «src:реклама» — сегментация и доступ к веткам |
| Переменная | Значение переменной сценария | Число из «Сбора данных» («площадь больше 40»), ответ на открытый вопрос, результат «HTTP-запроса» |
| Канал | Откуда пишет клиент: telegram, max, vk, web | Разные тексты и кнопки для VK (лимит 10 кнопок) и виджета (файлы) |
| Время | Текущий час, 0–23 | Ночью — «ответим утром» вместо передачи оператору |
| День недели | Текущий день, 0–6 (0 — воскресенье) | В выходные — другой текст или отложенный догрев |
Час и день недели берутся по серверному времени ЧБТ, а не по часовому поясу клиента — границы удобно проверить тест-чатом. Проверка «текст сообщения» здесь не нужна: реакцию на слова клиента задают триггеры «Ключевые слова» и «Любое сообщение», а ответ на открытый вопрос сохраняется «Сбором данных» в переменную и уже потом проверяется «Условием».
Операторы сравнения
В правиле выбирается поле, оператор и значение. Операторы в интерфейсе обозначены знаками и словами:
- = и ≠ (равно / не равно) — точное совпадение строк; «Да» и «да» — разные значения, поэтому для ответов текстом надёжнее кнопки с тегами.
- содержит / не содержит — подстрока: переменная
cityсодержит «Моск». - >, <, ≥, ≤ — числовое сравнение; значение должно быть числом (включите «Проверка ввода: Число» в «Сборе данных»), иначе сравнение вернёт «нет».
- regex — регулярное выражение без учёта регистра:
^\+?7\d{10}$проверит телефон в переменной. - в списке — значение совпадает с одним из перечисленных через запятую:
Москва, Казань, Уфа. - задано / не задано — переменная заполнена или нет: так проверяют, оставил ли человек телефон раньше, чтобы не спрашивать второй раз.
Для тега достаточно «задано» и «не задано» — тег либо стоит, либо не стоит.
Ветки, порядок проверки и «иначе»
У блока несколько веток и обязательная ветка «иначе». Каждая ветка — набор правил, и внутри ветки правила работают как «и»: сработает, только если выполнены все. Ветки проверяются сверху вниз, диалог уходит в первую подошедшую; если ни одна не подошла — в «иначе».
Из этого следуют два практических правила:
- Частное — выше общего. «Есть тег vip и есть тег оплатил» ставьте над «есть тег оплатил», иначе vip-клиенты никогда не попадут в свою ветку.
- «Или» — это две ветки с одним исходом. Если бюджет «300–600» или «от 600» должен вести к менеджеру, сделайте две ветки с одинаковым продолжением; внутри одной ветки «или» нет.
Ветку «иначе» не оставляйте пустой: клиент, не попавший ни в одно правило, должен получить хотя бы «Спасибо, передал администратору» и блок «Оператор», иначе диалог замрёт без ответа. В режиме «Шаги» у каждой ветки выбирается блок-цель из списка; на «Холсте» (тариф Базовый) ветки видны стрелками — при трёх и более удобнее.
Типовые ошибки
- Переменная не сохранена. «Сбор данных» пишет ответ в карточку контакта; чтобы «Условие» его увидело, включите «в переменную» и укажите имя. Подробнее — в справке о переменных.
- Число сравнивается как текст. «10» больше «9» только если оба значения — числа; без проверки формата клиент напишет «десять», и ветка не сработает.
- Тег ставится после условия. Действие «Добавить тег» должно стоять в ветке раньше блока, который этот тег проверяет — в том же диалоге или в предыдущем.
- Ветка без продолжения. После «Условия» каждая ветка должна вести к блоку; пустой выход — молчание бота.
Похожая по смыслу, но другая по механике вещь — триггер «Намерение (ИИ)»: он классифицирует свободный текст клиента нейросетью и запускает сценарий, если текст похож на описанное намерение. Это триггер, а не блок, и он доступен с Базового тарифа вместе с остальным ИИ. Готовые примеры условий — в шаблонах «Квиз-бот» (квалификация по тегам) и «Подбор объекта» (числовые сравнения). Проверить логику без мессенджера можно кнопкой «Проверить сценарий» в редакторе.
Частые вопросы
Можно ли в одной ветке написать «или»?
Нет, правила внутри ветки работают как «и». Для «или» сделайте две ветки с одинаковым продолжением.
Как проверить, что клиент уже оставлял телефон?
Сохраните телефон «в переменную» в «Сборе данных» и поставьте «Условие» с оператором «задано» по этой переменной; в ветке «иначе» — блок сбора телефона.
Условие проверяет текст сообщения клиента?
Напрямую нет. Слова клиента ловят триггеры «Ключевые слова» и «Любое сообщение»; ответ на открытый вопрос сначала сохраняется «Сбором данных» в переменную, потом проверяется «Условием».
Нужен ли платный тариф для блока «Условие»?
Нет, блок доступен на Бесплатном тарифе в режиме «Шаги». Визуальный редактор «Холст» — с Базового.