Перейти к содержанию

Алгоритмы назначения чатов

Cервис Webim предлагает несколько алгоритмов выбора оператора для обслуживания поступившего обращения от посетителя сайта.

Виды алгоритмов назначения чатов

Глобально Webim поддерживает два вида назначения чатов: ручной и алгоритмы автоназначения.

При использовании алгоритма ручного выбора чатов, который действует по умолчанию, операторы сами берут в обработку пользовательские обращения из общей очереди. Эта очередь нераспределённых обращений отображается у оператора в РМО в списке Ожидают ответа (у каждого оператора этот список сужается за счёт отсева тех обращений, в которых посетители потребовали операторов из других отделов или с навыками общения на других языках).

Это единственный алгоритм, доступный на бесплатном тарифе.

Алгоритмы автоназначения предусматривают автоназначение диалогов на операторов по выбору сервиса Webim. При этом оператор параллельно с автоматическим назначением на него чатов может самостоятельно брать диалоги из общей очереди в обработку, если её просмотр не отключён. В секции Ожидают ответа в этом случае отображаются только те диалоги, которые назначены сервисом на данного конкретного оператора. Автоназначение упрощает работу и операторам, и администратору, а для посетителей снижает риск неответа или позднего ответа.


Виды автоназначения

Условно можно выделить две разновидности автоназначения: базовое автоназначение и автоназначение с приоритизацией отделов (скиллизацией), что является дополненной и видоизменённой версией базового автоназначения.

Алгоритм скиллизации предполагает распределение чатов на операторов с учётом приоритетов отделов (скиллов). При включении данного алгоритма на странице редактирования оператора появляется вкладка Отделы, где можно установить приоритеты для отделов, к которым он привязан. В первую очередь на оператора будут назначаться обращения, оставленные в отдел, приоритет для которого выше (число меньше).

Использование алгоритма скиллизации может решать разные задачи. Например, таким образом можно обеспечить попадание большей части обращений с определённых отделов к конкретным операторам (наиболее компетентным в направлении отдела), но они, в случае загруженности наименее "приоритетного" для себя отдела, могли бы взять часть его обращений в обработку, что позволило бы равномернее распределить нагрузку между операторами и не упустить обращения.

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

Скиллизация отделов также может быть включена для отделов, которые обрабатывают обращения с каналов общения. То, откуда поступают обращения в отдел, не влияет на приоритизацию, и она происходит по выставленным для отделов приоритетам.


Описание работы режимов автоназначения

Во всех режимах автоназначения в зависимости от настроек параметров возможны следующие алгоритмы выбора оператора из списка (при прочих равных):

Значение параметра auto_assign_priority_by_last_chat_assigned_ts Значение параметра auto_assign_priority_by_operator_order Сценарий автоназначения
true true либо false Для назначения чата среди операторов с наименьшим количеством диалогов (count) будет выбран тот, на которого последний диалог назначался наибольшее количество времени назад (значение параметра last_chat_assigned_ts минимальное).
false true Для назначения чата среди операторов с наименьшим количеством диалогов (count) будет выбран оператор с наименьшим значением порядка сортировки (указывается во вкладке Основные на странице редактирования оператора).
false false Чат будет назначен на случайного оператора из числа операторов с наименьшим количеством диалогов.

По умолчанию в значением параметра auto_assign_priority_by_last_chat_assigned_ts установлено false и параметра auto_assign_priority_by_operator_order является false.

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


Алгоритм назначения чатов при базовом автоназначении

Ниже описан механизм распределения чатов при базовом автоназначении.

Автораспределение происходит сначала для всех онлайн-чатов, затем для офлайн-чатов. И те, и другие чаты последовательно проходят через один алгоритм. Офлайн-чаты начинают распределяться, когда распределены все онлайн-чаты.

Проход 1. Онлайн-чаты

  1. Анализируется занятость всех активных операторов (находящихся в статусе Онлайн), а именно сколько свободных слотов есть у операторов в пределах числа, указанного в параметре max_chats_per_operator в account config (т.е. сколько новых чатов каждый из них может взять при текущем количестве чатов).

  2. Вычисляется, для каких сочетаний отделов и языков общения какие операторы доступны.

  3. Для каждого сочетания отдела и языка список активных операторов, привязанных к отделу, сортируется по убыванию количества свободных слотов.

  4. Онлайн-чаты сортируются по времени поступления обращения (т.е. времени создания чата): более старые чаты распределяются первыми.

  5. Первый в отсортированном списке из пункта 4 чат распределяется на выбранного оператора из пункта 3.

Проход 2. Офлайн-чаты

После того, как все онлайн-чаты распределены, тем же образом распределяются офлайн-чаты.

Иными словами, сервис Webim выбирает того оператора, который находится в статусе онлайн, при этом:

  • Уполномочен ответить на обращения, то есть принадлежит соответствующему отделу, см. Регистрация отделов, и общается на языке обращения

  • Имеет наименьшее количество назначенных на него диалогов, и это количество меньше установленного лимита (см. ниже)

Если такой оператор найден, то новое обращение распределяется на него. Если таких операторов в настоящий момент нет, то обращение остаётся ожидать распределения в очереди. Операторы и администраторы видят такие обращения в РМО в списке Общая очередь либо Офлайн-обращения. Администратор видит длину очереди нераспределённых обращений в графе Ожидает на Панели приборов.


Алгоритм назначения чатов при включённой приоритизации отделов (скиллизации)

Автораспределение происходит сначала для всех онлайн-чатов, затем для офлайн-чатов. И те, и другие чаты последовательно проходят через один алгоритм. Офлайн-чаты начинают распределяться, когда распределены все онлайн-чаты.

Проход 1. Онлайн-чаты

  1. Анализируется занятость всех активных операторов (находящихся в статусе Онлайн), а именно сколько свободных слотов есть у операторов в пределах числа, указанного в параметре max_chats_per_operator (т.е. сколько новых чатов каждый из них может взять при текущем количестве чатов).

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

  3. Список операторов с их приоритетами для разных отделов и языков сортируется по возрастанию уровней приоритетов: от операторов с наивысшим приоритетом для отдела обращения (т.е. наименьшим числовым значением приоритета) к операторам с наименьшим приоритетом.

  4. Для элемента списка с отсортированными приоритетами из пункта 3 последовательно в порядке сортировки берутся очереди чатов, соответствующие:

    • онлайновости чатов (в данном случае онлайн-чаты)

    • отделам и языкам общения оператора для выбранного приоритета

  5. Среди отобранных в пункте 4 чатов выбирается минимальный чат и очередь.

    Минимальный чат в очереди — первый чат внутри отсортированной очереди, а минимальная очередь — первая очередь в отсортированном списке очередей.

  6. Минимальный чат из пункта 5 распределяется на оператора из пункта 2, то есть, у которого:

    • наибольшее количество свободных слотов

    • наивысший приоритет для отдела, в который поступил данный чат

Проход 2. Офлайн-чаты

После того, как все онлайн-чаты распределены, тем же образом распределяются офлайн-чаты.

Следовательно, при автоназначении чатов из общей очереди на операторов можно заметить, что обращения, поступившие в сервис раньше, могут назначаться на операторов после того, как распределились обращения, поступившие в сервис позже по времени. Такое поведение системы является корректным и объясняется особенностями логики распределения чатов. Наглядно механизм автоназначения чатов при включённой приоритизации отделов можно рассмотреть на примере.

Пример

  1. Оператор 1 имеет один свободный слот (т.е. больше, чем у Оператора 2) и может взять в обработку один чат.

  2. Ожидающие автораспределения чаты сортируются согласно приоритетам оператора (у Оператора 1 в приоритете чаты в Отдел 2). Вверху списка оказываются чаты в Отдел 2, после них — чаты в Отдел 1.

  3. Чаты для отделов сортируются по времени поступления обращения. У чатов, поступивших в Отдел 2, наибольшим приоритетом обладает чат, поступивший в 11:55 (раньше, чем другой чат в данный отдел). В Отдел 1 поступило только одно обращение, и оно стоит в очереди после чатов в Отдел 2.

  4. На оператора распределяется самый ранний чат из чатов в Отдел 2, то есть тот, что поступил в 11:55.

  5. После этого распределяется следующее по времени обращение в Отдел 2, то есть обращение в 12:01.

  6. Так как обращение в Отдел 1 не был взято за это время в обработку другим оператором (все его слоты были заняты или он обрабатывал чаты из отделов с более высоким для себя приоритетом), оно распределяется на Оператора 1 в 12:10 после того, как все чаты в Отдел 2 были обработаны. Если бы до этого в Отдел 2 поступило новое обращение и оно бы не было назначено на других операторов до того, как у Оператора 1 появился свободный слот, оно бы обладало наивысшим приоритетом и было на него распределено, и обращению в Отдел 1 пришлось бы ждать ещё дольше.

Таким образом, обращение, которое было оставлено раньше всех (в 11:40) было обработано позднее, чем обращения, оставленные в 11:55 и 12:01, поскольку включённая скиллизация нацелена на то, чтобы обращения обрабатывались наиболее компетентными по конкретному вопросу операторами.

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

Если включена приоритизация отделов (скиллизация) и администратор меняет приоритеты отделов, то произойдет следующее: при сохранении изменений выполнится операция обновления настроек (flush) и в следующем 30-секундном цикле работы автоназначения сработают новые приоритеты. То есть, максимальное время ожидания вступления в силу настроек — длительность операции обновления настроек + 30 секунд.


Автоназначение приоритетных чатов

Если включена настройка high_priority_urls в account config, то вне зависимости от типа автоназначения (со скиллизацией отделов или без неё) и статуса чатов (онлайн или офлайн) первыми будут распределяться чаты посетителей с приоритетных страниц. Таким образом, при сортировке чатов дополнительно будет проверяться поле посетителя high_priority, значение которого определяется тем, с какой страницы посетитель начал чат. Если значение поля равно 1 ('high_priority' = "1" - посетитель находится на приоритетной странице), то этот чат будет расположен в очереди раньше других. Затем приоритетные чаты (если их несколько) сортируются по времени обращения.

Также поле high_priority может быть указано у посетителя(ей) самостоятельно клиентом, если нужно, чтобы чаты от определённых посетителей обрабатывались в первую очередь. Например, такой подход можно использовать в мобильном приложении на основе Webim Mobile SDK.


Переключение между режимами

На бесплатном тарифе включение автоназначения невозможно.

Включение и регулирование функции автоназначения осуществляет администратор в разделе Общие настройки, на вкладке Дополнительные функции:

Опции автоназначения

Для включения функции:

  1. Установите флажок Автоназначение.

  2. Укажите Максимальное кол-во чатов на оператора. Это значение устанавливает лимит, при превышении которого автоназначение на такого оператора перестаёт работать. Значение по умолчанию: 5. Введите значение вручную или используйте стрелочки для увеличения-уменьшения.

Кроме того, возможно отдельно выставлять автоназначение для онлайн и офлайн-чатов. По умолчанию для офлайн-чатов автоназначение включено, если включено автоназначение для онлайн-чатов, и наоборот. Если Вы хотите установить для офлайн-чатов другой режим, Вам необходимо изменить параметр auto_assign_offline в специальных настройках, недоступных через Консоль управления, либо попросить об этом техническую поддержку.

Приоритизация отделов работает при включённом автоназначении, которое включается в Общих настройках (см. предыдущий пункт) и тем самым устанавливает значение true параметру auto_assign. Для активации самого алгоритма скиллизации необходимо установить значение true специальному параметру operator_department_prioritization (по умолчанию false). Это делается в account config по отдельному URL. Если у Вас нет к нему доступа, обратитесь в техническую поддержку Webim.


Настройки для режимов автоназначения

При автоназначении возможна настройка следующих параметров account config:

Параметр Тип Значение по умолчанию Описание
auto_assign_priority_by_operator_order Boolean false Выбор оператора при автоназначении по порядку сортировки, а не случайно. Выбирается оператор с минимальным значением порядка из числа предварительно отсеянных.
auto_assign_priority_by_last_chat_assigned_ts Boolean
  • true - у аккаунтов, созданных после ноября 2018 года
  • false - у аккаунтов, созданных ранее
Выбор оператора при автоназначении по времени назначения предыдущего чата на него. Выбирается оператор, которому последний чат назначался раньше всех из числа предварительно отсеянных.
auto_assign_to_last_chat_operator Boolean true Чат назначается на оператора, с которым у посетителя был последний чат.
auto_assign_to_last_chat_operator_if_busy Boolean false Чат назначается на оператора, с которым у посетителя был последний чат, вне зависимости от занятости оператора. Действует только при auto_assign_to_last_chat_operator = true.

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

Параметр Тип Значение по умолчанию Описание
default_operator_department_priority Integer 5 Значение приоритета по умолчанию, если не выставлено другое.
restricted_profiles Boolean false Невозможность редактировать свои собственные настройки, в том числе приоритеты отделов (операторы, супервизоры).

Выставлять приоритеты для отделов для операторов и супервизоров всегда может администратор, а супервизор может менять приоритеты операторов, которые находятся в подревизных ему отделах, а также подревизных супервизору напрямую. По умолчанию (при значении системного параметра restricted_profiles = false) операторы и супервизоры могут менять значение приоритетов у своих отделов. Если параметр restricted_profiles = true, операторы и супервизоры не могут редактировать свои приоритеты.

По умолчанию приоритеты отделов равны 5.