Логика распределения чатов на операторов
В Beesender Chat Master по умолчанию существуют следующие сценарии поиска оператора:
Чат инициирован клиентом
Когда чат инициирован клиентом, процедура поиска оператора происходит по следующему процессу:
Шаг 1 Существуют ли такие операторы, что соответствуют всем 4 условиям ниже?
1. Оператор Активен;
2. Работает с чатами в данном канале;
3. Оператор находится в статусе “Онлайн”;
4. Имеется ли свободный слот у оператора?
Если не найдено операторов, которые соответствуют всем условиям выше, поиск будет повторятся каждые 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. Оператор находится в статусе “Онлайн”;
4. Имеется ли свободный слот у оператора;
5. Находится в выбранной группе операторов?
Если операторов, что соответствуют условию в шаге 1, более 1, то
Шаг 2 Который из операторов выбранной группы имеет меньше открытых чатов в работе?
Если операторы имеют одинаковое количество чатов в работе, то
Шаг 3 Распределить чат на того оператора, у которого последний завершенный чат закрыт раньше, чем у остальных операторов.
Перевод чата на выбранного оператора
Если у выбранного пользователем оператора имеется свободный слот, то чат будет распределен на выбранного оператора.
При переводе чата на конкретного оператора чат будет распределен вне зависимости от настроек на детали “Каналы” в карточке оператора.
Чат на удержании
Если чат на удержании, то:
чат не будет распределен на другого оператора по таймауту “Время до смены оператора (минут)”;
чат не будет закрыт по таймауту “Время до закрытия чата (минут)”;
чат не будет учтен как открытый чат на операторе при определении свободного слота у оператора.
Альтернативный процесс распределения чата на оператора
Описанная ниже логика относится к приложению “BeesenderMonthPriorityRouting”, которое переопределяет логику процесса распределения чата на оператора следующим образом:
Шаг 1 Существуют ли такие операторы, что соответствуют всем 5 условиям ниже?
Оператор Активен;
Работает с чатами в данном канале;
Оператор находится в статусе “Онлайн”;
Имеется ли свободный слот у оператора;
Находится в группе операторов с наименьшей позицией в очереди?
Если операторов, что соответствуют условиям в шаге 1, более 1, то добавить условие
Шаг 2 Который из операторов закрыл меньше чатов, среди всех созданных сегодня чатов?
Если операторы имеют одинаковое количество закрытых чатов, то
Шаг 3 Распределить чат на того оператора, который за последние 30 дней закрыл меньше чатов, чем остальные операторы.
Та же логика будет применена при распределении чата на группу операторов с помощью коммуникационной панели, за исключением того, что в шаге 1 условие 5 группа операторов будет выбрана пользователем.
Определения
Cвободный слот у оператора
Величина свободного слота определяется как разница “максимальная нагрузка на оператора” минус “сумма веса каналов всех открытых чатов, в данный момент распределенных на оператора”. Если вес канала чата меньше либо равен величине свободного слота, то свободный слот для данного чата имеется.
Джоба распределения чатов на группу операторов
Управление запуском и остановкой
По умолчанию джоба распределения отключена.
Чтобы запустить джобу, необходимо вручную запустить бизнес-процесс: Run the routing to the group Job
Чтобы остановить джобу, используется процесс: Stop the routing to the group Job
Настройка частоты и объема распределения
На вкладке «Распределение чатов» в разделе «Настройка чатов Beesender» доступны два поля:
Частота запуска распределения чатов (сек.)
Частота срабатывания джобы. Значение не может быть отрицательным
Количество чатов для распределения
Количество чатов, обрабатываемых за один запуск. Значение не может быть отрицательным
Логика приоритетов:
Если оба поля заполнены (> 0) — используются именно эти значения
Если в полях указано 0 — джоба обращается к системным настройкам:
BeesenderRoutingFrequence (по умолчанию: 5 секунд)
BeesenderRoutingQueueSize (по умолчанию: 15 чатов)
2.1. Если в разделе заполнено только одно поле, а второе — 0, то из системной настройки возьмётся только то значение, которое не заполнено, а заполненное значение будет использовано из раздела
Если системные настройки не заданы — применяются значения по умолчанию:
частота: 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 записывается способ распределения:
Распределен чатботом — если чат был передан ботом
Распределен оператором — если инициатором перевода был оператор