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

Например, с помощью слота Timer можно (значения времени в примерах могут быть любыми):
- «Разбудить» Агента через 2 часа после закрытия Диалога, если Собеседник не завершил оформление заказа в чате, чтобы напомнить ему завершить оформление.
- Принудительно перевести Диалог на Оператора, если с начала Диалога прошло 10 минут, а вопрос Собеседника не решен.
- Напомнить Собеседнику вернуться в Диалог, если Агент не получает ответ на вопрос в течение 5 минут.
- С периодичностью раз в сутки делать запросы о статусе доставки во внешнюю систему и уведомить Собеседника, если статус изменился.
Следует различать слот Timer и таймер. При выполнении условий слота Timer в системе создается объект Заведенный таймер – задание, которое будет выполнено по расписанию и начнет ветку Сценария Бота, следующую за слотом Timer. Заведенный таймер может быть прерван до срабатывания – см. Работа слота Timer.

- Слот Timer можно создать только после слота Start при наличии обычной ветки обработки входящих через Бота сообщений.
- Разрешено несколько слотов Timer в Сценарии, при чем их параметры могут быть одинаковыми.
Нижеуказанные параметры по умолчанию следует читать так: завести таймер в режиме Interruptable на 1 час после закрытия диалога.

- 1.Slot Name — название слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
- 1.При сохранении Слота проверяется значение в поле:
- 1.если поле пустое, выводится ошибка Please enter a slot name
- 2.если в поле более 40 символов, выводится ошибка Name must contain no more than 40 characters
- 2.Count down — время обратного отсчета, которое установится при запуске таймера, после окончания отсчета этого времени произойдет срабатывание таймера.
- Значение не может быть пустым, минимальное значение 1 минута, шаг 1 минута. При создании слота предустановлено значение времени, равное 1 ч.
- При попытке ввода в поле min значения, равного или более 60, значение будет автоматически конвертировано в часы и перенесено в поле hours. При заполненном поле hours произойдет сложение конвертированного значения и ранее указанного в поле hours значения.
- При попытке ввода в поле hours значения, равного или более 24, значение будет автоматически конвертировано в дни и перенесено в поле day. При заполненном поле day произойдет сложение конвертированного значения и ранее указанного в поле day значения.
- При сохранении Слота проверяется значение в поле:
- при значении менее 1 минуты выводится ошибка Please setup timer value
- 3.after — событие, которое запускает проверку условия if для запуска таймера.
- 4.if — дополнительное условие запуска таймера — условие, при котором таймер будет запущен при наступлении события after. Выражение в этом поле должно давать логический результат True или False.
- 5.Mode — режим работы таймера, он определяет, как таймер может быть прерван
- 1.Interruptable — режим, при котором любое изменение Состояния общения останавливает таймер, например: Собеседник что-то написал, пришел Incoming Request, Агент сдвинулся по сценарию, сработал другой таймер этого Агента.
- 2.Always on — режим, при котором изменение Состояния общения не останавливают таймер, его может остановить только Обучение Агента пользователем или запуск нового таймера из этого же слота (например, когда условия выполнились снова).
Пример:
Если содержание Контекстной переменной client_message, приведенное к нижнему регистру, равно да, то при Закрытии диалога будет заведен Таймер на 1 минуту.
Платформа мониторит Чаты на события-триггеры (триггер запуска таймера) для каждого слота Timer в Сценарии. Дальнейшие действия выполняются для каждого слота Timer в Чате.
Триггер | Описание | Особенности | Примеры применения |
Dialog closed | Закрытие Диалога запускает таймер, если выполняется Дополнительное условие запуска таймера IF | |
|
Dialog started | Открытие Диалога запускает таймер, если выполняется Дополнительное условие запуска таймера IF | |
|
Variable changed | Изменение переменной запускает таймер, если выполняется Дополнит ельное условие запуска таймера IF | Переменная указывается пользователем в новом поле, которое отображается при выборе этого пункта. Ввод переменной обязателен |
|
Bot started waiting | Переход Бота в состояние ожидания ввода от Собеседника (слоты Wait For Reaction, SlotFilling, Button Menu) запускает таймер, если выполняется Дополнительное условие запуска таймера IF. | |
|
- Если триггер запуска таймера сработал, Платформа проверяет Дополнительное условие запуска таймера 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, Агент передвинулся по Сценарию, сработал другой таймер этого Бота.
Прерывание переобучением бота | Прерывание изменением состояния общения | Прерывание запуском нового таймера того же слота | Прерывается методом DROP CHAT VARS | Прерывается методом DROP AGENT CHATS FULLCONTEXT |
|
|
| | |
- Always on – непрерывный таймер – режим, при котором изменение состояния общения не останавливает таймер. Таймер может быть остановлен только обучением Бота Пользователем или запуск нового таймера этого же слота (например, когда условия выполнились снова).
Прерывание переобучением бота | Прерывание изменением состояния общения | Прерывание запуском нового таймера того же слота | Прерывается методом DROP CHAT VARS | Прерывается методом DROP AGENT CHATS FULLCONTEXT |
| |
| | |
В одном Сценарии допускается несколько слотов Timer, при чем их триггеры запуска таймера, режимы работы таймера, время отсчета и дополнительные условия могут частичн о или полностью совпадать. Каждый слот Timer в Сценарии запускает свой таймер, идентифицируемый id этого слота.
- Каждый таймер запускается из своего слота Timer, независимо от других, согласно порядку запуска – см. Запуск таймера.
- Одновременно могут быть запущены несколько таймеров, в том числе одинаковых.
Так как проверка таймеров в Платформе происходит с периодичностью один раз в минуту, то запущенные в одном Боте таймеры, которые должны сработать в разницей меньше минуты, могут сработать одновременно и в случайном порядке:
- Платформа при очередной ежеминутной проверке обнаружит все несработанные (заведенные) таймеры Бота, у которых закончился отсчет, и отправит их на выполнение;
- После произойдет срабатывание таймеров в случайном порядке.
Примечание: т.е. одновременно если было запущено 2 таймера на один час, то неизвестно, какой из них сработает первым через час.
- При этом, если среди отправленных на выполнение таймеров есть Interruptable таймеры, то такие таймеры уже не будут прерваны срабатыванием первого в очереди таймера.