Логіка розподілу чатів на операторів

Логіка розподілу чатів на операторів

У Beesender Chat Master за замовчуванням існують наступні сценарії пошуку оператора:

Чат ініційований клієнтом

Screenshot 2024-01-15 at 17.12.10.png

 

Коли чат ініційований клієнтом, процедура пошуку оператора відбувається за наступних умов:

Крок 1. Чи існують такі оператори, що відповідають усім 4 умовам нижче?

  1. Статус оператора – “Активний” у розділі конфігурації Beesender;

  2. Працює з чатами в даному каналі;

  3. Оператор знаходиться у статусі “Онлайн” у комунікаційній панелі оператора;

  4. Значення “максимальне навантаження оператора”  дозволяє прийняти новий чат.

Докладніше про статус оператора в розділі конфігурації Beesender, каналах оператора та допустимому навантаженні на оператора.

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

Крок 2. Який з операторів має меншу “позицію в черзі” в картці оператора?

Приклад

Якщо оператори Лінії 1 та Лінії 2 підпадають під умови кроку 1, то розподілення чатів буде відбуватись між операторами Лінії 1.

Якщо оператори Лінії 2 та Лінії 3 підпадають під умови кроку 1, то розподілення чатів буде відбуватись між операторами Лінії 2.

Якщо оператори, що відповідають умовам на кроці 1, при цьому мають однакову найменшу позицію в черзі більше ніж 1, то

Крок 3. Який з операторів має менше відкритих чатів у роботі? Якщо оператори мають однакову кількість чатів у роботі, то

Крок 4. Новий вхідний чат буде розподілений на того оператора, у якого останній завершений чат закритий раніше, ніж у інших операторів.

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

Крок 4 виконується, починаючи з Beesender Chat Master версії 3.2 або новішої.

Чат ініційований оператором з картки Контакту

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

Змена оператора з комунікаційної панелі оператора

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

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

Screenshot 2024-01-15 at 17.37.27.png

Пошук відбувається за умовою:

Крок 1. Чи існують такі оператори, що відповідають усім 5 умовам нижче?

  1. Статус оператора – “Активний” у розділі конфігурації Beesender;

  2. Працює з чатами в даному каналі;

  3. Оператор знаходиться у статусі “Онлайн” у комунікаційній панелі оператора;

  4. Значення “максимальне навантаження оператора”  дозволяє прийняти новий чат;

  5. Оператор належить до вибраної групи операторів?

Якщо операторів, що відповідають умові на кроці 1, більше ніж 1, то

Крок 2. Який з операторів вибраної групи має менше відкритих чатів у роботі? Якщо оператори мають однакову кількість чатів у роботі, то

Крок 3. Розподілити чат на того оператора, у якого останній завершений чат закритий раніше, ніж у інших операторів.

Крок 4 виконується, починаючи з Beesender Chat Master версії 3.2 або новішої.

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

Якщо в обраного користувачем оператора значення “максимальне завантаження” дозволяє прийняти новий чат, то чат буде розподілений на обраного оператора.

При переведенні чату на конкретного оператора, чат буде розподілений незалежно від налаштувань на деталі “Канали” у картці оператора.

Чат на утриманні

Якщо чат на утриманні, то:

  1. чат не буде розподілений на іншого оператора за таймаутом “Час до зміни оператора (хв.)”;

  2. чат не буде закритий за таймаутом “Час закриття чату після останнього повідомлення (хв.)”;

  3. чат не буде врахований як відкритий чат на операторі при визначенні вільного слоту у оператора

Альтернативний процес розподілу чату на оператора

Описана нижче логіка стосується додатку “BeesenderMonthPriorityRouting”, який перевизначає логіку процесу розподілу чату на оператора наступним чином:

Крок 1. Чи існують такі оператори, що відповідають усім 5 умовам нижче?

  1. Статус оператора – “Активний” у розділі конфігурації Beesender;

  2. Працює з чатами в даному каналі;

  3. Оператор знаходиться у статусі “Онлайн” у комунікаційній панелі оператора.;

  4. Значення “максимальне навантаження оператора”  дозволяє прийняти новий чат;

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

Якщо операторів, що відповідають умовам на кроці 1, більше ніж 1, то додати умову

Крок 2. Який з операторів закрив менше чатів, серед усіх створених сьогодні чатів?

Якщо оператори мають однакову кількість закритих чатів, то

Крок 3. Розподілити чат на того оператора, який за останні 30 днів закрив менше чатів, ніж інші оператори.

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

Глосарій

Вільний слот у оператора

Вільний слот у оператора Величина вільного слоту визначається як різниця “максимальне навантаження на оператора” мінус “сума ваги каналів усіх відкритих чатів, на даний момент розподілених на оператора”. Якщо вага каналу чату менша або дорівнює величині вільного слоту, то вільний слот для даного чату є - значення “максимальне навантаження оператора” дозволяє прийняти новий чат.


Джоба розподілу чатів на групу операторів

Керування запуском і зупинкою

За замовчуванням джоба розподілу вимкнена.

Щоб запустити джобу, потрібно вручну запустити бізнес-процес: Run the routing to the group Job

Щоб зупинити джобу, використовується процес: Stop the routing to the group Job

Налаштування частоти та обсягу розподілу

На вкладці «Розподіл чатів» у розділі «Налаштування чатів Beesender» доступні два поля:

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

Частота спрацювання джоби. Значення не може бути від’ємним.

  • Кількість чатів для розподілу

Кількість чатів, які обробляються за один запуск. Значення не може бути від’ємним.

image-20250604-082406.png


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

  • Якщо обидва поля заповнені (> 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 записується спосіб розподілу:

  • Розподілено чат-ботом — якщо чат передано ботом

  • Розподілено оператором — якщо ініціатором передачі був оператор