chatme.ai
Search…
Создание Агента на платформе
Создание Сценария Агента
ДЛЯ РАЗРАБОТЧИКОВ
Запуск сценария по таймеру | Слот Timer

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

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

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

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

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

Нижеуказанные параметры по умолчанию следует читать так: завести таймер в режиме Interruptable на 1 час после закрытия диалога.
  1. 1.
    Slot Name — название слота, которое будет отображено в Дерево сценария. Максимальная длина значения поля — 40 символов.
  2. 2.
    Count down — время обратного отсчета, которое установится при запуске таймера, после окончания отсчета этого времени произойдет срабатывание таймера.
    • Значение не может быть пустым, минимальное значение 1 минута, шаг 1 минута. При создании слота предустановлено значение времени, равное 1 ч.
    • При попытке ввода в поле min значения, равного или более 60, значение будет автоматически конвертировано в часы и перенесено в поле hours. При заполненном поле hours произойдет сложение конвертированного значения и ранее указанного в поле hours значения.
    • При попытке ввода в поле hours значения, равного или более 24, значение будет автоматически конвертировано в дни и перенесено в поле day. При заполненном поле day произойдет сложение конвертированного значения и ранее указанного в поле day значения.
  3. 3.
    after — событие, которое запускает проверку условия if для запуска таймера.
  4. 4.
    if — дополнительное условие запуска таймера — условие, при котором таймер будет запущен при наступлении события after. Выражение в этом поле должно давать логический результат True или False.
  5. 5.
    Mode — режим работы таймера, он определяет, как таймер может быть прерван
    1. 1.
      Interruptable — режим, при котором любое изменение Состояния общения останавливает таймер, например: Собеседник что-то написал, пришел Incoming Request, Агент сдвинулся по сценарию, сработал другой таймер этого Агента.
    2. 2.
      Always on — режим, при котором изменение Состояния общения не останавливают таймер, его может остановить только Обучение Агента пользователем или запуск нового таймера из этого же слота (например, когда условия выполнились снова).

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

В Слоте Timer допустимо использование Выражений в поле If. Подробнее: Переход на новый синтаксис
Пример:
Если содержание Контекстной переменной client_message, приведенное к нижнему регистру, равно да, то при Закрытии диалога будет заведен Таймер на 1 минуту.

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

Мониторинг

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

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

Триггер
Описание
Особенности
Примеры применения
Dialog closed
Закрытие Диалога запускает таймер, если выполняется Дополнительное условие запуска таймера IF
  • Напомнить Cобеседнику, что он не закончил диалог, оформление заказа, бросил корзину.
  • Отправить данные во внешнюю систему после окончания Диалога.
  • Периодически «ходить» во внешнюю систему за статусом задачи/заказа и уведомлять Собеседника при его изменении.
  • Отправить просьбу оценить качество обслуживания.
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, при чем их триггеры запуска таймера, режимы работы таймера, время отсчета и дополнительные условия могут частично или полностью совпадать. Каждый слот Timer в Сценарии запускает свой таймер, идентифицируемый id этого слота.

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

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

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

Так как проверка таймеров в Платформе происходит с периодичностью один раз в минуту, то запущенные в одном Боте таймеры, которые должны сработать в разницей меньше минуты, могут сработать одновременно и в случайном порядке:
  • Платформа при очередной ежеминутной проверке обнаружит все несработанные (заведенные) таймеры Бота, у которых закончился отсчет, и отправит их на выполнение;
  • После произойдет срабатывание таймеров в случайном порядке.
Примечание: т.е. одновременно если было запущено 2 таймера на один час, то неизвестно, какой из них сработает первым через час.
  • При этом, если среди отправленных на выполнение таймеров есть Interruptable таймеры, то такие таймеры уже не будут прерваны срабатыванием первого в очереди таймера.
Copy link
On this page
Назначение и общая информация
Создание и настройка слота Timer
Атрибуты слота
Использование синтаксиса в Слоте Timer
Работа слота Timer
Мониторинг
Триггеры запуска таймера
Запуск таймера
Срабатывание таймера
Удаление (остановка) таймера
Режимы работы таймера
Несколько слотов Timer в одном Агенте
Запуск нескольких таймеров в одном Агенте
Срабатывание нескольких таймеров в одном Агенте