Запуск сценария по таймеру | Слот Timer

Назначение и общая информация

Слот Timer (таймер) предназначен для запуска Сценария Агента по истечении заданного времени после наступления определенных условий в конкретном Чате.

Например, с помощью слота Timer можно (значения времени в примерах могут быть любыми):

  • «Разбудить» Агента через 2 часа после закрытия Диалога, если Собеседник не завершил оформление заказа в чате, чтобы напомнить ему завершить оформление.

  • Принудительно перевести Диалог на Оператора, если с начала Диалога прошло 10 минут, а вопрос Собеседника не решен.

  • Напомнить Собеседнику вернуться в Диалог, если Агент не получает ответ на вопрос в течение 5 минут.

  • С периодичностью раз в сутки делать запросы о статусе доставки во внешнюю систему и уведомить Собеседника, если статус изменился.

Следует различать слот Timer и таймер. При выполнении условий слота Timer в системе создается объект Заведенный таймер – задание, которое будет выполнено по расписанию и начнет ветку Сценария Бота, следующую за слотом Timer. Заведенный таймер может быть прерван до срабатывания – см. Работа слота Timer.

Создание и настройка слота Timer

  • Слот Timer можно создать только после слота Start при наличии обычной ветки обработки входящих через Бота сообщений.

  • Разрешено несколько слотов Timer в Сценарии, при чем их параметры могут быть одинаковыми.

Атрибуты слота

Нижеуказанные параметры по умолчанию следует читать так: завести таймер в режиме Interruptable на 1 час после закрытия диалога.

  1. Slot Name — название слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.

    1. При сохранении Слота проверяется значение в поле:

  2. Count down — время обратного отсчета, которое установится при запуске таймера, после окончания отсчета этого времени произойдет срабатывание таймера.

    • Значение не может быть пустым, минимальное значение 1 минута, шаг 1 минута. При создании слота предустановлено значение времени, равное 1 ч.

    • При попытке ввода в поле min значения, равного или более 60, значение будет автоматически конвертировано в часы и перенесено в поле hours. При заполненном поле hours произойдет сложение конвертированного значения и ранее указанного в поле hours значения.

    • При попытке ввода в поле hours значения, равного или более 24, значение будет автоматически конвертировано в дни и перенесено в поле day. При заполненном поле day произойдет сложение конвертированного значения и ранее указанного в поле day значения.

    • При сохранении Слота проверяется значение в поле:

  3. after — событие, которое запускает проверку условия if для запуска таймера.

  4. if — дополнительное условие запуска таймера — условие, при котором таймер будет запущен при наступлении события after. Выражение в этом поле должно давать логический результат True или False.

  5. Mode — режим работы таймера, он определяет, как таймер может быть прерван

    1. Interruptable — режим, при котором любое изменение Состояния общения останавливает таймер, например: Собеседник что-то написал, пришел Incoming Request, Агент сдвинулся по сценарию, сработал другой таймер этого Агента.

    2. Always on — режим, при котором изменение Состояния общения не останавливают таймер, его может остановить только Обучение Агента пользователем или запуск нового таймера из этого же слота (например, когда условия выполнились снова).

Использование синтаксиса в Слоте Timer

В Слоте Timer допустимо использование Выражений в поле If. Подробнее: Синтаксис

Пример:

Работа слота Timer

Мониторинг

Платформа мониторит Чаты на события-триггеры (триггер запуска таймера) для каждого слота Timer в Сценарии. Дальнейшие действия выполняются для каждого слота Timer в Чате.

Триггеры запуска таймера

Запуск таймера

  • Если триггер запуска таймера сработал, Платформа проверяет Дополнительное условие запуска таймера if.

    • Когда Дополнительное условие запуска таймера if выполняется, таймер запускается – в системе создается задание по расписанию, если не выполняется – ничего не происходит.

  • Сам запуск таймера не влияет на общение и не изменяет состояние общения, просто создает задачу по расписанию (Заведенный таймер ) в системе.

  • Запуск таймера прерывает еще не сработавший предыдущий таймер, заведенный из этого же слота Timer, если такой Заведенный таймер есть.

  • Технически, в базе остается все тот же первоначальный Заведенный таймер, но в нем устанавливается новое время срабатывания.

Срабатывание таймера

Платформа проверяет, какие из Заведенных таймеров закончили обратный отсчет (Count down) и выполняет активацию их слотов Timer в соответствующих Чатах – происходит Срабатывание таймера, и в Чатах запускаются соответствующие ветки Сценария. Период проверки – 1 минута. Это означает, что возможна задержка между плановым и фактическим срабатыванием таймера до 1 минуты (59 секунд).

  • Если в Заведенном таймере обратный отсчет (Count down) закончен до окончания очередной минуты, Срабатывание таймера все еще не произойдет, так как Платформой еще не произведена проверка и неизвестно, закончен ли отсчет времени. Как только минута закончится, Платформой будет произведена проверка, и таймер сработает.

NB Как показывает практика, чаще всего, задержка бывает в промежутке от 40 до 59 секунд, следует это учесть при выставлении значения обратного отсчета (Count down).

  • По окончании каждой минуты срабатывают сразу друг за другом все таймеры, обратный отсчет в которых закончился за минуту. Т.е. эти таймеры могли быть запущены «на одно и то же время» с промежутком в 1-59 секунды, но сработают «одновременно», так как Платформой были получены сведения о них в рамках одной проверки (см. Несколько слотов Timer в одном Боте).

Срабатывание таймера изменяет:

  • Текущий сценарий в активном Диалоге прервется, так как Бот незамедлительно переместится на ветку Сценария после слота Timer и продолжит общение со следующего за слотом Timer слота.

  • Если на этот момент в данном Чате нет активных Диалогов, то Сценарий в Чате запустится, но Диалог будет открыт при первом входящем или исходящем сообщении.

Удаление (остановка) таймера

Заведенный таймер может быть остановлен (сброшен, удален) определенными событиями, исходя из режима, в котором он запущен. Также любой таймер может быть остановлен обучением Бота (кнопка Train). Любой Заведенный таймер может быть сброшен запуском нового таймера этого же слота Timer.

NB Технически, в базе остается все тот же первоначальный Заведенный таймер, но в нем устанавливается новое время срабатывания.

Режимы работы таймера

  • Interruptable – прерываемый таймер – режим, при котором любое изменение состояния общения останавливает таймер. Например: Собеседник что-то написал, пришел Incoming Request, Агент передвинулся по Сценарию, сработал другой таймер этого Бота.

  • Always on – непрерывный таймер – режим, при котором изменение состояния общения не останавливает таймер. Таймер может быть остановлен только обучением Бота Пользователем или запуск нового таймера этого же слота (например, когда условия выполнились снова).

Несколько слотов Timer в одном Агенте

В одном Сценарии допускается несколько слотов Timer, при чем их триггеры запуска таймера, режимы работы таймера, время отсчета и дополнительные условия могут частично или полностью совпадать. Каждый слот Timer в Сценарии запускает свой таймер, идентифицируемый id этого слота.

Запуск нескольких таймеров в одном Агенте

  • Каждый таймер запускается из своего слота Timer, независимо от других, согласно порядку запуска – см. Запуск таймера.

  • Одновременно могут быть запущены несколько таймеров, в том числе одинаковых.

Срабатывание нескольких таймеров в одном Агенте

Так как проверка таймеров в Платформе происходит с периодичностью один раз в минуту, то запущенные в одном Боте таймеры, которые должны сработать в разницей меньше минуты, могут сработать одновременно и в случайном порядке:

  • Платформа при очередной ежеминутной проверке обнаружит все несработанные (заведенные) таймеры Бота, у которых закончился отсчет, и отправит их на выполнение;

  • После произойдет срабатывание таймеров в случайном порядке.

Примечание: т.е. одновременно если было запущено 2 таймера на один час, то неизвестно, какой из них сработает первым через час.

  • При этом, если среди отправленных на выполнение таймеров есть Interruptable таймеры, то такие таймеры уже не будут прерваны срабатыванием первого в очереди таймера.

Last updated