Блок «Переход»
Блок управления логикой: вместо того чтобы вести клиента дальше по стрелке, он перебрасывает его в начало другой воронки или к конкретному блоку внутри неё.
Нужен, чтобы не держать всю логику бота в одной огромной схеме. Большого бота удобно разбить на под-воронки (продажи, поддержка, онбординг) и переключать клиента между ними блоком «Переход». В отличие от блока «Сообщение» этот блок ничего не отправляет клиенту — он только меняет точку, с которой бот продолжит работу.
Когда использовать
- Разбить большого бота на отдельные под-воронки и переключать между ними (основная → продажи → поддержка)
- Вернуть клиента в начало сценария или перепрыгнуть к конкретному шагу
- Сделать переиспользуемую воронку (например, «оформление заказа»), в которую ведут несколько разных веток
- Закольцевать диалог — отправить клиента обратно к нужному блоку после ответа
Настройки
- Режим перехода — переключатель из двух кнопок. «В начало воронки» (`flow`, по умолчанию) — клиент попадёт на стартовый блок целевой воронки. «К конкретному блоку» (`block`) — открывает выбор точного блока внутри воронки.
- Целевая воронка — выпадающий список всех воронок проекта (кроме служебных). Сохраняется в `gotoFlowId`. Если в проекте только одна воронка, появится подсказка «Нет других воронок в проекте».
- Конкретный блок — выпадающий список блоков выбранной воронки, показывается только в режиме «К конкретному блоку». Сохраняется в `gotoBlockId`. Если оставить «— Начало воронки —», переход всё равно уйдёт на стартовый блок.
При смене целевой воронки выбранный блок сбрасывается — список блоков подгружается заново под новую воронку.
Как работает
Блок не отправляет сообщений и не имеет веток Да/Нет — это «прыжок» к одной следующей точке. Поведение зависит от заполненных полей:
- Указана целевая воронка (`gotoFlowId`). Движок выгружает текущую воронку из памяти, загружает целевую и продолжает выполнение уже в ней. Если задан `gotoBlockId` и такой блок есть в новой воронке — переход идёт на него. Если нет — движок ищет стартовый блок (`start`) и продолжает с него. Если целевая воронка не загрузилась (удалена или пустая) или в ней нет старта — выполнение останавливается.
- Указан только блок (`gotoBlockId`), без воронки. Переход идёт к этому блоку внутри текущей воронки.
- Оба поля пустые. Блок ничего не делает — бот просто остановится на нём (следующего шага нет).
Никаких переменных блок не пишет. После переключения на другую воронку контекст клиента (переменные, теги) сохраняется — переезжает только точка выполнения.
Пример
Основная воронка приветствует клиента и спрашивает, что ему нужно. По кнопке «Хочу купить» стрелка ведёт в блок «Переход» с режимом «В начало воронки» и целевой воронкой «Продажи». Клиент мгновенно оказывается на старте воронки продаж, а основная схема остаётся чистой.
Чтобы после оплаты вернуть клиента к блоку «Спасибо за заказ» в воронке поддержки — поставьте режим «К конкретному блоку», выберите воронку «Поддержка» и в списке блоков нужный шаг.
Частые ошибки
- Воронку удалили, а переход на неё остался. Движок не найдёт целевую воронку и тихо остановит сценарий — клиент «застрянет». После удаления воронки проверяйте блоки «Переход», которые на неё ссылались.
- Выбран блок, но потом сменили воронку. При смене целевой воронки выбранный блок обнуляется. Если не выбрать блок заново, переход уйдёт на старт новой воронки, а не туда, куда вы ожидали.
- Переход никуда не ведёт. Если оба поля пустые, блок просто гасит сценарий. Всегда задавайте хотя бы целевую воронку или блок.
- Зацикливание. Переход на блок, который снова ведёт к этому же переходу, создаёт бесконечный цикл. Следите, чтобы маршрут в итоге куда-то приводил.