СЛОТЫ

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

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

@Слот
Timer (таймер) предназначен для запуска
@Сценарий
@Агент
а по истечении заданного времени после наступления определенных условий в конкретном
@Чат
е.
image.png
image.png
Например, с помощью слота Timer можно (значения времени в примерах могут быть любыми):
“разбудить”
@Агент
а через 2 часа после
@Закрытие диалога
, если
@Собеседник
не завершил оформлять заказ в
@Чат
е, чтобы напомнить ему завершить оформление
принудительно перевести
@Диалог
на оператора, если с начала диалога прошло 10 минут, а вопрос
@Собеседник
а не решен
“напомнить”
@Собеседник
у вернуться в
@Диалог
, если
@Агент
не получает ответа на вопрос в течение 5 минут
С периодичностью раз в сутки делать запросы о статусе доставки во внешнюю систему и уведомить
@Собеседник
а, если статус изменился

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

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

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

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

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

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

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

image.png

Мониторинг

@Платформа
мониторит
@Чат
ы на события-триггеры для каждого слота Timer в их
@Сценарий
.
Триггеры запуска таймера
Not synced yet
Триггер
Описание
Особенности
Примеры применения
1
Dialog closed
Напомнить собеседнику, что он не закончил диалог, оформление заказа, бросил корзину
Отправить данные во внешнюю систему после окончания диалога
Периодически “ходить” во внешнюю систему за статусом задачи\заказа и уведомлять собеседника при его изменении
Отправить просьбу оценить качество обслуживания
2
Dialog started
запускает таймер, если выполняется
принудительно подключить оператора, если диалог длится долгое время, но вопрос не решен
3
Variable changed
Изменение переменной на новое (другое) значение запускает таймер, если выполняется
Переменная указывается пользователем в новом поле, которое отображается при выборе этого пункта. Ввод переменной обязателен, имя переменной указывается без кавычек
через час после получения ключевых данных (например, номер телефона), отправить их во внешнюю систему, не зависимо от статуса диалога
4
Bot started waiting
Переход а в состояние ожидания ввода от а: , , запускает таймер, если выполняется .
“пропинговать” собеседника, если он отвлекся от диалога
пригласить оператора в диалог, если собеседник не отвечает
There are no rows in this table
Дальнейшие действия выполняются для каждого слота Timer в
@Агент
е:

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

Если
@Триггер запуска таймера
сработал,
@Платформа
проверяет
@Дополнительное условие запуска таймера
.
Когда
@Дополнительное условие запуска таймера
выполняется, таймер запускается — в системе создается задание по расписанию. Если
@Дополнительное условие запуска таймера
не выполняется — ничего не происходит.
Сам
@Запуск таймера
не влияет на
@Общение
и не изменяет
@Состояние общения
, он просто создает задачу по расписанию в системе.
@Запуск таймера
прерывает предыдущий, еще не сработавший таймер, заведенный из этого же слота Timer, если такой
@Заведенный таймер
есть.
Примечание: технически, в базе остается все тот же первоначальный
@Заведенный таймер
, но в нем устанавливается новое время срабатывания.

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

@Платформа
проверяет, какие из
@Заведенный таймер
закончили обратный отсчет (поле Count down) и выполняет активацию их
@Слот
ов Timer в соответствующих
@Чат
ах — происходит
@Срабатывание таймера
, и в
@Чат
ах запускаются соответствующие
@Ветка сценария
.
Период проверки: 1 минута.
Это означает, что возможна задержка между плановым и фактическим срабатыванием таймера до 1 минуты (59 секунд).
Если в
@Заведенный таймер
обратный отсчет закончен до окончания очередной минуты,
@Срабатывание таймера
все еще не произойдет, так как
@Платформа
еще не произвела проверку и не знает, что отсчет времени закончен. Но как только эта минута закончится,
@Платформа
произведет проверку таймер сработает.
Примечание: как показывает практика чаще всего задержка бывает в промежутке от 40 до 59 секунд, следует это учесть, при выставлении значения обратного отсчета.
По окончании каждой минуты срабатывают сразу друг за другом все таймеры, обратный отсчет в которых закончился за минуту. Т.е. они могли быть запущены “на одно и то же время” с промежутком в 1-59 секунды, но сработают “одновременно”, так как
@Платформа
узнала об этом в рамках одной проверки (см. )
@Срабатывание таймера
изменяет
@Состояние общения
:
Текущий сценарий в
@Активный диалог
“прервется”, т.к
@Агент
незамедлительно “перескочит” на
@Ветка сценария
после
@Слот
а Timer и продолжит общение со следующего за
@Слот
ом Timer
@Слот
а.
Если на этот момент в данном
@Чат
е нет
@Активный диалог
, то
@Сценарий
в
@Чат
е запустится, но
@Диалог
будет открыт при первом входящем или исходящем сообщении.

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

@Заведенный таймер
может быть остановлен (сброшен, удален) определенными событиями, исходя из режима, в котором он запущен.
Любой
@Заведенный таймер
может быть сброшен запуском нового таймера из этого же
@Слот
а Timer.
Примечание: технически, в базе остается все тот же первоначальный
@Заведенный таймер
, но в нем устанавливается новое время срабатывания.
Переобучение
@Агент
а или удаление/деактивация
@Канал Агента
удаляет все
@Заведенный таймер
в сбрасываемых
@Чат
ах.
Режимы работы таймера
Not synced yet
Режим
Описание
Прерывание переобучением агента
Прерывание изменением состояния Общения
Прерыванием запуском нового таймера из этого же слота
Drop chat vars
Drop agent chats fullcontext
1
Interruptable
прерываемый таймер - режим, при котором изменение останавливает таймер, например: что-то написал, пришел , сдвинулся по сценарию, сработал другой таймер этого а .





2
Always оn
непрерывный таймер - режим, при котором изменение не останавливают таймер, его может остановить только запуск нового таймера из этого же слота (например, когда условия выполнились снова)





There are no rows in this table

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

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

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

Каждый таймер запускается из своего
@Слот
а Timer независимо от других согласно порядку запуска — см. .
Одновременно могут быть запущены несколько таймеров, в т.ч “одинаковых”.

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

Так как в
@Платформа
происходит с периодичностью один раз в минуту, то запущенные в одном
@Агент
е таймеры, которые должны сработать в разницей меньше минуты, могут сработать “одновременно” и в случайном порядке:
@Платформа
при очередной ежеминутной проверке обнаружит все несработанные (заведенные) таймеры
@Агент
а, у которых закончился отсчет, и отправит их “на выполнение”
После чего произойдет их в случайном порядке.
Т.е. одновременно если было запущено 2 таймера на один час, то неизвестно, какой из них сработает первым через час.
При этом, если среди "отправленных на выполнение” таймеров есть
@Interruptable
-таймеры, то они уже не прервутся срабатыванием первого в очереди таймера.

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.