Почему бот помнит шаг и ждет - как работают сессии
Когда подписчик попадает в сценарий, система заводит для него сессию - личный "блокнот", где хранится: на каком шаге он сейчас, какие переменные уже собраны, ждет ли бот его ответа или просто паузу по времени. Это еще называют: движок, прогон сценария, состояние воронки, "на каком шаге застрял подписчик". Благодаря сес
Как сессия запускается
- Подписчик совершает действие, которое совпадает с триггером (пишет ключевое слово, нажимает кнопку и т.д.).
- Система находит подходящий опубликованный сценарий.
- Создается сессия со статусом "Активна". В ней запоминаются: ссылка на сценарий и контакт, текущий шаг, переменные, флаг ожидания.
- Движок начинает идти по нодам, обновляя "текущий шаг" в сессии на каждом переходе. Один контакт - один сценарий. По общему правилу, когда стартует новый сценарий, предыдущая активная сессия этого контакта в этом боте отменяется. Исключение - фоновые сценарии (слушатели событий/тегов): они работают параллельно и активную сессию не трогают.
Почему бот "ждет" и молчит
Сценарий приостанавливается в двух случаях. Сессия при этом остается активной - она не закрыта, просто стоит на паузе.
Ждет ответа пользователя
Сессия переходит в режим ожидания после:
- ноды "Ожидание ответа" - бот ждет, что человек напишет,
- сообщения с inline-кнопками - движок ждет нажатия,
- ноды "Умная задержка" - ждет следующего сообщения с подстраховкой по таймауту. Как только подписчик отвечает, система находит его ждущую сессию и продолжает ровно с того места, где остановилась.
Ждет по времени (Задержка)
Нода "Задержка" планирует "будильник": запоминает время и ставит сессию на паузу. Когда время приходит, фоновый планировщик (cron) сам будит сессию и продолжает сценарий - участие пользователя не нужно. Если подписчик ответил раньше, чем сработал таймаут, система это видит и не запускает сценарий повторно.
Переменные переживают паузы
Все значения, собранные до паузы (ответы пользователя, результаты запросов), сохраняются в сессию. После продолжения они доступны в подстановках {{...}} как обычно. Данные не теряются при задержках и ожиданиях.
Состояния сессии
- Активна - контакт в сценарии: движется по нодам или стоит на паузе.
- Завершена - сценарий дошел до ноды без исходящей связи, или сценарий аккуратно закрыли (переход в другой сценарий, передача оператору).
- Отменена - запуск нового обычного сценария прервал старую сессию контакта в этом боте. Когда сессия завершается, система фиксирует это в аналитике (как "сценарий завершен") - по этим данным считается доходимость воронки.
Защита от зацикливания
Если в сценарии ноды ведут по кругу, движок не завис и не уйдет в бесконечность - есть встроенные ограничители:
- Глубина прохода внутри сценария: не более 50 нод за один непрерывный прогон. Если за один раз пройдено больше - движок останавливает и завершает сессию.
- Переходы между сценариями ("Перейти к цепочке"): не более 5 "прыжков" подряд. Если сценарии ссылаются друг на друга по кольцу (A, потом B, потом A, ...), движок остановит цепочку. Эти ограничители - аварийная страховка. Если контакт "уперся" в лимит, скорее всего в сценарии есть логическая петля - найдите ее и разорвите.
Если не получается
- Контакт получил первое сообщение, но дальше бот молчит - сценарий ждет действия: нода "Ожидание ответа", кнопка или "Умная задержка". Продолжение наступит, когда подписчик ответит или нажмет кнопку.
- После "Задержки" сценарий не продолжается совсем - возможно, у контакта стартовал новый сценарий и отменил эту сессию, или (в собственном размещении) не работает планировщик. Проверьте, не перезапускался ли сценарий для этого контакта.
- Подписчик получил сообщения из двух сценариев одновременно - второй сценарий помечен как фоновый триггер; фоновые работают параллельно. Обычные сценарии всегда отменяют друг друга.
- Контакт "крутится" и не выходит из сценария, или сценарий резко обрывается - сработала защита от зацикливания. Проверьте, нет ли связей, ведущих назад по кругу, или цепочки "сценарий -> сценарий" более 5 раз.
- Собранные данные "потерялись" после паузы - значение не было записано в переменную. Данные переживают паузы только если сохранены через "Ожидание ответа" (с заданным именем) или "Установить поле".
Лимиты и тариф
- Сам движок сессий работает на всех тарифах без ограничений.
- Защита от циклов: не более 50 нод за один непрерывный прогон и не более 5 переходов "сценарий -> сценарий" подряд.
- Один сценарий на контакт в боте (кроме фоновых).
- Точность пауз зависит от частоты планировщика: продолжение наступает не секунда в секунду, а при ближайшем срабатывании.
Смежные вопросы
Не нашли ответ?
Спросите ИИ-ассистента или напишите живой поддержке - поможем разобраться.