Базовая очередь доступна в стандартной лицензии ECSS-10. Для такого типа очереди определяется одна из следующих стратегий распределения вызовов:
Стратегии распределения делятся на два вида: простые и множественного выбора.
Простые стратегии распределения подразумевают выбор одного свободного оператора за попытку распределения. Вот их список:
Если оператор не отвечает на распределенный вызов, он временно блокируется очередью. Время блокировки зависит от свойства оператора goodness:
Изначально у всех операторов значение свойства goodness = good. При каждом неотвеченном вызове значение goodness, в зависимости от текущего значения, изменяется от good к bad или от bad к ugly. При каждом отвеченном вызове значение goodness изменяется в обратном направлении - от ugly к bad или от bad к good.
Очередь не будет предпринимать попытки распределения на заблокированного оператора и, если у вызова не исчерпались попытки распределения, вызов будет обслужен другим свободным оператором.
Блокировка очередью не является штатным механизмом работы очереди, так как оператор, уходящий на перерыв или отсутствующий по другим причинам, может перейти в состояние "отошел", либо выполнить logout, используя телефонный аппарат или веб-АРМ. Кроме того, супервизор может принудительно заблокировать оператора, используя механизм блокировки супервизором, или же выполнить force-logout. Однако блокировки очередью служат защитным механизмом, в случае если отсутствующий на оператор всё же не был выведен из обслуживания, или же, если в качестве операторов используются рядовые абоненты SSW, не использующие функционал агентов. Сказанное выше о блокировках очередью справедливо для всех простых стратегий распределения как в базовых, так и в расширенных очередях.
Стратегии распределения множественного во время одной процедуры распределения захватывают сразу всех операторов (или подходящих по скиллу. См. skill-based распределение) и устанавливают с ними соединение, руководствуясь логикой конкретной стратегии распределения.
В случае всех остальных стратегий распределения множественного выбора, блокировка очередью не применяется.
Параметр очереди window_duration актульнен только для стратегий serial, cycled и progressive. Это время в секундах после которого очередь начнет устанавливать соединение со следующей подгруппой операторов. Иными словами, это время сдвига окна распределения. По умолчанию 10 секунд.
Для тобы очередь при распределении могла выбрать наиболее подходящего оператора, обладающего тем или иным умением, существует skill-based распределение. Когда оно активировано, очередь будет применять процедуру распределения не ко всем свободным операторам, а к тем из них, кто наиболее соответствует по уровню умения. Примеры умения - владение английским языком, знание принципов построения сетей TCP/IP, навыки оказания первой помощи и так далее. Список скиллов является открытым и администратор домена может создавать произвольные скиллы по своему усмотрению.
Чтобы активировать skill-based распределение, нужно установить у очереди параметр skill_based_distribution (см. "3.14.0 Настройка расширенной очереди").
Также для того чтобы skill-based распределение работало, скиллы, с одной стороны, должны быть настроены у операторов, и, с другой стороны должны быть выставлены у вызова перед его помещением в очередь с помощью IVR-блока Set.
Скилл в общем виде задаётся как <имя скилла>[:<уровень скилла>]. Уровень скилла может быть опущен, и тогда он по умолчанию равен 1. Примеры скиллов:
Имя скилла может быть разделено на две части разделенные знаком /: <тип>/<подтип>. Никакой алгоритмической ценности данное разделение не имеет - оно служит только для смысловой группировки скиллов, и специальным образом не обрабатывается. Пример такого задания скиллов:
В данном примере language/english и language/belarus никак не связаны, и общий префикс language/* не даёт при определении соответствия никаких преимуществ перед другими скиллами. При определении соответствия учитывается только полное имя скилла включающее и тип и подтип
С помощью IVR блока Set вызову могут быть назначены один и более скиллов, разделённых запятой (см. IVR-редактор).
Для того чтобы выбрать наиболее подходящих по умению операторов, очередь выполняет оценку соответствия каждого оператора затребованному скиллу.
В простом случае, когда вызову назначен всего один скилл, его уровень соответствия скиллу (далее conformance) будет равен <Уровень скилла оператора>/<Требуемый уровень скилла вызова>. Т.е, для примера, если вызову назначен уровень скилла language/english:5, а у оператора уровень скилла language/english:4, то вычисленный уровень соответствия скиллу будет равен 4/5, т.е 0.8.
Conformance для одного скилла не может превышать 1, поэтому если вызову требуется уровень скилла language/english:5, то даже если уровень скилла оператора превышает данное значение, он не будет иметь преимуществ перед операторами у которых значение уровня точно равно 5. В обоих случаях conformance будет равняться 1.
Если у оператора отсутствует запрошенный скилл, то его значение conformance для данного скилла будет равняться 0.
После оценки соответствия, очередь выберет из всех операторов подгруппу, у которых максимальное и одинаковое между собой значение conformance и применит к ней текущую стратегию распределения (см. Стратегии распределения). Приведём пример.
Допустим вызову выставлен скилл language/english:5.
| Оператор | skill | conformance |
|---|---|---|
| Оператор 1 | language/english:4 | 0.8 |
| Оператор 2 | language/english:7 | 1 |
| Оператор 3 | - | 0 |
| Оператор 4 | language/english:5 | 1 |
В этом случае очередь выберет операторов под номером 2 и 4, так как у них максимальное среди прочих значение conformance.
Если у всех операторов значение conformance будет равно 0, то очередь будет применять текущую стратегию распределения ко всем операторам.
В случае, если вызову выставлено более одного скилла, то суммарное значение conformance будет вычислено как сумма conformance каждого скилла в отдельности. Например, если вызову назначены скиллы language/english:5 и emergency/medicine:5, а оператору назначен уровень скилла language/english:4 и emergency/medicine:3, то суммарное значение conformance будет равняться conformance первого скилла т.е 0.8 плюс conformance второго скилла т.е 0.6, и будет равняться 1.4. Т.е. в случае более одного скилла conformance может быть и больше единицы. Приведём пример.
Допустим вызову выставлены скиллы language/english:5 и emergency/medicine:5.
| Оператор | skill-ы | conformance english | conformance medicine | conformance |
|---|---|---|---|---|
| Оператор 1 | language/english:4, emergency/medicine:3 | 0.8 | 0.6 | 1.4 |
| Оператор 2 | language/english:3, emergency/medicine:4 | 0.6 | 0.8 | 1.4 |
| Оператор 3 | language/english:3 | 0.6 | 0 | 0.6 |
| Оператор 4 | emergency/medicine:10 | 0 | 1 | 1 |
В этом случае очередь выберет операторов под номером 1 и 2, так как у них максимальное среди прочих значение conformance.
В случае простых стратегий распределения (см. Простые стратегии распределения), порядок выбора оператора для распределения можно формально описать так:
Таким образом в случае простых стратегий распределения, если есть свободные операторы, вызов будет распределяться в любом случае, даже если среди свободных операторов наибольшее значение соответствия скиллу будет 0, так как skill-based распределение в случае простых стратегий распределения применяется только к операторам, которые в данный момент не обслуживают вызовы. Иными словами, в случае простых стратегий распределения, skill-based распределение носит для очереди рекомендательный характер и более строгого разделения можно добиться перемещением операторов в отдельные очереди средствами IVR сценария.
В случае стратегий распределения множественного выбора, порядок выбора оператора отличается:
Таким образом в случае стратегий множественного выбора операторы выбираются по соответствию скиллу строгим образом. Т.е если операторы свободны, но есть более подходящие операторы, соответствующие скиллу, которые заняты, вызов будет ожидать в очереди, пока эти более подходящие операторы не освободятся.
Для того чтобы включить механизм выбора оператора по принципу повторного обращения нужно включить для очереди опцию remember_choice (ссылка на конфигурирование очереди).
Если эта опция включена, очередь будет запоминать, какой оператор был выбран в прошлый раз для обслуживания вызова с номера А, и будет считать этого оператора предпочтительным для обслуживания вызова, пытаясь выполнить распределение на него. Сервис выбора оператора по принципу повторного обращения предваряет любую стратегию распределения и skill-based распределение и если сервис срабатывает успешно, то они не применяются. Очередь хранит информацию о предпочтительном операторе в течение времени, которое определяется параметром cc_queue_remember_choice_timeout в /domain/test.domain/timers/core/*. По умолчанию 1 час со времени последнего соединения с оператором.
remember_choice может принимать значения none, strict и non-strict:
При указании стратегии распределения Manual, очередь НЕ БУДЕТ самостоятельно распределять вызовы. Этим должен будет заниматься супервизор (или оператор, если это позволяется лицензией). Данный функционал необходимо использовать с осторожностью, так как это может привести к слишком долгому ожиданию вызовов в очереди и потере клиентов. Рекомендуем использовать одну из стратегий распределения (mia, loa, random) в совокупности с функционалом принудительного распределения.
Алгоритм работы очереди в режиме Manual: