StreloБаза знанийВ кабинет

Почему бот помнит шаг и ждет - как работают сессии

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

СозданаАктивна - движется по нодамОжидание - ответ или задержкаПродолжается - ответ пришел или время вышлоЗавершена - нет исходящих связейОтменена - запущен новый сценарий
Жизненный цикл сессии: от старта до завершения или отмены

Как сессия запускается

  1. Подписчик совершает действие, которое совпадает с триггером (пишет ключевое слово, нажимает кнопку и т.д.).
  2. Система находит подходящий опубликованный сценарий.
  3. Создается сессия со статусом "Активна". В ней запоминаются: ссылка на сценарий и контакт, текущий шаг, переменные, флаг ожидания.
  4. Движок начинает идти по нодам, обновляя "текущий шаг" в сессии на каждом переходе. Один контакт - один сценарий. По общему правилу, когда стартует новый сценарий, предыдущая активная сессия этого контакта в этом боте отменяется. Исключение - фоновые сценарии (слушатели событий/тегов): они работают параллельно и активную сессию не трогают.

Почему бот "ждет" и молчит

Сценарий приостанавливается в двух случаях. Сессия при этом остается активной - она не закрыта, просто стоит на паузе.

Ждет ответа пользователя

Сессия переходит в режим ожидания после:

  • ноды "Ожидание ответа" - бот ждет, что человек напишет,
  • сообщения с inline-кнопками - движок ждет нажатия,
  • ноды "Умная задержка" - ждет следующего сообщения с подстраховкой по таймауту. Как только подписчик отвечает, система находит его ждущую сессию и продолжает ровно с того места, где остановилась.

Ждет по времени (Задержка)

Нода "Задержка" планирует "будильник": запоминает время и ставит сессию на паузу. Когда время приходит, фоновый планировщик (cron) сам будит сессию и продолжает сценарий - участие пользователя не нужно. Если подписчик ответил раньше, чем сработал таймаут, система это видит и не запускает сценарий повторно.

Переменные переживают паузы

Все значения, собранные до паузы (ответы пользователя, результаты запросов), сохраняются в сессию. После продолжения они доступны в подстановках {{...}} как обычно. Данные не теряются при задержках и ожиданиях.

Состояния сессии

  • Активна - контакт в сценарии: движется по нодам или стоит на паузе.
  • Завершена - сценарий дошел до ноды без исходящей связи, или сценарий аккуратно закрыли (переход в другой сценарий, передача оператору).
  • Отменена - запуск нового обычного сценария прервал старую сессию контакта в этом боте. Когда сессия завершается, система фиксирует это в аналитике (как "сценарий завершен") - по этим данным считается доходимость воронки.

Защита от зацикливания

Если в сценарии ноды ведут по кругу, движок не завис и не уйдет в бесконечность - есть встроенные ограничители:

  • Глубина прохода внутри сценария: не более 50 нод за один непрерывный прогон. Если за один раз пройдено больше - движок останавливает и завершает сессию.
  • Переходы между сценариями ("Перейти к цепочке"): не более 5 "прыжков" подряд. Если сценарии ссылаются друг на друга по кольцу (A, потом B, потом A, ...), движок остановит цепочку. Эти ограничители - аварийная страховка. Если контакт "уперся" в лимит, скорее всего в сценарии есть логическая петля - найдите ее и разорвите.

Если не получается

  • Контакт получил первое сообщение, но дальше бот молчит - сценарий ждет действия: нода "Ожидание ответа", кнопка или "Умная задержка". Продолжение наступит, когда подписчик ответит или нажмет кнопку.
  • После "Задержки" сценарий не продолжается совсем - возможно, у контакта стартовал новый сценарий и отменил эту сессию, или (в собственном размещении) не работает планировщик. Проверьте, не перезапускался ли сценарий для этого контакта.
  • Подписчик получил сообщения из двух сценариев одновременно - второй сценарий помечен как фоновый триггер; фоновые работают параллельно. Обычные сценарии всегда отменяют друг друга.
  • Контакт "крутится" и не выходит из сценария, или сценарий резко обрывается - сработала защита от зацикливания. Проверьте, нет ли связей, ведущих назад по кругу, или цепочки "сценарий -> сценарий" более 5 раз.
  • Собранные данные "потерялись" после паузы - значение не было записано в переменную. Данные переживают паузы только если сохранены через "Ожидание ответа" (с заданным именем) или "Установить поле".

Лимиты и тариф

  • Сам движок сессий работает на всех тарифах без ограничений.
  • Защита от циклов: не более 50 нод за один непрерывный прогон и не более 5 переходов "сценарий -> сценарий" подряд.
  • Один сценарий на контакт в боте (кроме фоновых).
  • Точность пауз зависит от частоты планировщика: продолжение наступает не секунда в секунду, а при ближайшем срабатывании.

Смежные вопросы

Не нашли ответ?

Спросите ИИ-ассистента или напишите живой поддержке - поможем разобраться.