Логика распределения чатов на операторов

Логика распределения чатов на операторов

В Beesender Chat Master по умолчанию существуют следующие сценарии поиска оператора: 

Чат инициирован клиентом

Когда чат инициирован клиентом, процедура поиска оператора происходит по следующему процессу: 

 

Шаг 1 Существуют ли такие операторы, что соответствуют всем 4 условиям ниже? 

1. Оператор Активен;

2. Работает с чатами в данном канале; 

3. Оператор находится в статусе “Онлайн”;  

Если не найдено операторов, которые соответствуют всем условиям выше, поиск будет повторятся каждые 5 секунд.

Если операторов, что соответствуют условию в шаге 1, более 1, то 

Шаг 2 Который из операторов имеет меньшую “позицию в очереди” в карточке оператора? 

Пример 

Если условию в шаге 1 соответствуют операторы Линии 1 и Линии 2, то дальнейший поиск будет происходить среди операторов Линии 1.  

Если условию в шаге 1 соответствуют операторы Линии 2 и Линии 3, то дальнейший поиск будет происходить среди операторов Линии 2. 

Если операторов, что соответствуют условию в шаге 1, и имеют одинаковую наименьшую позицию в очереди более 1, то 

Шаг 3 Который из операторов имеет меньше открытых чатов в работе? 

Если операторы имеют одинаковое количество чатов в работе, то 

Шаг 4 Распределить чат на того оператора, у которого последний завершенный чат закрыт раньше, чем у остальных операторов. 

Пример 

Если у “Оператор А” чат был закрыт в 15:00, а у “Оператор Б” в 15:05, оператором нового чата станет “Оператор А”.  

 

Чат инициирован оператором из карточки Контакта 

Когда оператор инициирует чат с помощью карточки Контакта, чат будет распределен на данного оператора вне зависимости от настроек в разделе “Настройки чатов Beesender”.

 

Перевод на оператора с помощью коммуникационной панели

Во время общения с клиентом может возникнуть необходимость перевести чат на группу операторов или конкретного оператора.

 

Перевод чата на группу операторов

Поиск происходит по условию:

Шаг 1 Существуют ли такие операторы, что соответствуют всем 5 условиям ниже? 

1. Оператор Активен;

2. Работает с чатами в данном канале; 

3. Оператор находится в статусе “Онлайн”;  

5. Находится в выбранной группе операторов?

Если операторов, что соответствуют условию в шаге 1, более 1, то 

Шаг 2 Который из операторов выбранной группы имеет меньше открытых чатов в работе? 

Если операторы имеют одинаковое количество чатов в работе, то 

Шаг 3 Распределить чат на того оператора, у которого последний завершенный чат закрыт раньше, чем у остальных операторов. 

 

Перевод чата на выбранного оператора

Если у выбранного пользователем оператора имеется свободный слот, то чат будет распределен на выбранного оператора.

При переводе чата на конкретного оператора чат будет распределен вне зависимости от настроек на детали “Каналы” в карточке оператора.

Чат на удержании

Если чат на удержании, то: 

  1. чат не будет распределен на другого оператора по таймауту “Время до смены оператора (минут)”;

  2. чат не будет закрыт по таймауту “Время до закрытия чата (минут)”;

  3. чат не будет учтен как открытый чат на операторе при определении свободного слота у оператора.

Альтернативный процесс распределения чата на оператора

Описанная ниже логика относится к приложению “BeesenderMonthPriorityRouting”, которое переопределяет логику процесса распределения чата на оператора следующим образом:

Шаг 1 Существуют ли такие операторы, что соответствуют всем 5 условиям ниже? 

  1. Оператор Активен;

  2. Работает с чатами в данном канале; 

  3. Оператор находится в статусе “Онлайн”;  

  4. Имеется ли свободный слот у оператора;

  5. Находится в группе операторов с наименьшей позицией в очереди?

Если операторов, что соответствуют условиям в шаге 1, более 1, то добавить условие

Шаг 2 Который из операторов закрыл меньше чатов, среди всех созданных сегодня чатов?

Если операторы имеют одинаковое количество закрытых чатов, то

Шаг 3 Распределить чат на того оператора, который за последние 30 дней закрыл меньше чатов, чем остальные операторы. 

Та же логика будет применена при распределении чата на группу операторов с помощью коммуникационной панели, за исключением того, что в шаге 1 условие 5 группа операторов будет выбрана пользователем.

Определения

Cвободный слот у оператора

Величина свободного слота определяется как разница “максимальная нагрузка на оператора” минус “сумма веса каналов всех открытых чатов, в данный момент распределенных на оператора”.  Если вес канала чата меньше либо равен величине свободного слота, то свободный слот для данного чата имеется.

 Джоба распределения чатов на группу операторов

Управление запуском и остановкой

По умолчанию джоба распределения отключена.

Чтобы запустить джобу, необходимо вручную запустить бизнес-процесс: Run the routing to the group Job

Чтобы остановить джобу, используется процесс: Stop the routing to the group Job

Настройка частоты и объема распределения

На вкладке «Распределение чатов» в разделе «Настройка чатов Beesender» доступны два поля:

  • Частота запуска распределения чатов (сек.)

Частота срабатывания джобы. Значение не может быть отрицательным

  • Количество чатов для распределения

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

image-20250602-135451.png



Логика приоритетов:

  1. Если оба поля заполнены (> 0) — используются именно эти значения

  2. Если в полях указано 0 — джоба обращается к системным настройкам:

  • BeesenderRoutingFrequence (по умолчанию: 5 секунд)

  • BeesenderRoutingQueueSize (по умолчанию: 15 чатов)
    2.1. Если в разделе заполнено только одно поле, а второе — 0, то из системной настройки возьмётся только то значение, которое не заполнено,  а заполненное значение будет использовано из раздела

  1. Если системные настройки не заданы — применяются значения по умолчанию:

  • частота: 5 секунд

  • количество чатов: 15

Как чаты попадают в очередь

Чаты попадают в объект BeesenderChatInQueue при вызове бизнес-процесса Transfer to agent group. При этом создаётся запись с полями:

  • Chat — Id чата

  • Group — Id группы операторов (справочник BeesenderOperatorGroup)

  • Reason — причина перевода

  • IsBotTransfer — признак перевода ботом

Также возможны другие способы добавления чатов в очередь — например, через бизнес-процесс чат-бота или вручную, с помощью интерфейса Creatio.

Как работает джоба

Джоба запускается с заданной периодичностью.

Из объекта BeesenderChatInQueue выбираются незакрытые и не находящиеся на удержании чаты, отсортированные по дате создания записи в очереди (CreatedOn) — от самых старых к новым.

Отбирается количество чатов, указанное в поле Количество чатов для распределения (или согласно логике приоритетов).

Каждому чату подбирается оператор, и происходит распределение по заданной стратегии.

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

Если подходящих чатов нет — джоба завершается без действий.

Логика распеделения при выключенной джобе

Если джоба отключена, чаты распределяются по стандартной логике, применявшейся ранее.

При вызове процесса Transfer to agent group выполняется проверка:

  • если джоба включена — чат помещается в очередь BeesenderChatInQueue

  • если джоба выключена — выполняется  логика распределения, без использования очереди.

Логика распределения для чатбота

В зависимости от значения поля IsBotTransfer в объекте BeesenderChatInQueue, в объект BeesenderChatOperator записывается способ распределения:

  • Распределен чатботом — если чат был передан ботом

  • Распределен оператором — если инициатором перевода был оператор