Этот адрес электронной почты защищен от спам-ботов. У вас должен быть включен JavaScript для просмотра. + 7 499 704 2566 Skype Me™!

Операторский центр - Automatic Call Distribution

Оцените материал
(2 голосов)

Операторский центр – это метод организации персонала и оборудования для достижения определенных деловых целей. Офисная АТС должна "уметь" работать как система, автоматически распределяющая поступающие вызовы (ACD - Automatic Call Distribution), позволяющая связаться с несколькими людьми через один номер или обработать несколько вызовов одновременно. В службах поддержки, и не только, это очень полезная возможность. Пользователь звонит на один из номеров, а на звонок отвечает свободный в данное время сотрудник.

Рассмотрим конфигурацию ACD на базе Asterisk и AVAYA. И в том и в другом случае работа центра основана на организации сотрудников (называемых агентами), в группы поиска. Установим группу поиска для внутренней линии справки/помощи. Назначим троих сотрудников (агентов) с собственными добавочными номерами для обслуживания нашей линии справки/помощи. Вызовы будут поступать к любому из свободных сотрудников. И так AVAYA - вводим add hunt-group next:

  • Group Name - имя группы - Helpdesk.
  • Group Extension - соответствующий номер телефона.
  • Group Type - код метода распределения вызовов. ucd-loa вызов будет поступать к агенту, имеющему наименьший показатель процентного содержания рабочего времени с момента входа в систему.

Укажем системе, как поступить с вызовом группы поиска, если он не может быть обработан сразу. Такой вызов устанавливается в “очередь”. Определим, что в очереди может находиться до 5 вызовов, но если вызов находится в очереди более 30 секунд, то системе следует уведомить об этом. Также требуется, чтобы система предупреждала о том, что в очереди находится 3 или более вызовов.

  • Queue - y.
  • Queue Length - максимальное число вызовов, которые могут находиться в очереди - 5.
  • Calls Warning Threshold - максимальное число вызовов в очереди, при превышении которого в системе вспыхнут кнопки состояния очереди - 3.

На третьей странице экрана HUNT GROUP добавим добавочные номера агентов.

Из методов распределения вызовов доступны:

 

  • circ - следующий свободный агент в последовательности.
  • UCD-MIA - свободный агент, который не был задействован дольше всех с момента последнего вызова.
  • UCD-LOA - свободный агент, имеющий наименьший показатель процентного содержания рабочего времени с момента входа в систему.
  • EAD-MIA- свободный агент с наивысшей квалификацией, который не был задействован дольше всех с момента последнего вызова.
  • EAD-LOA- свободный агент, имеющий наивысшую квалификацию и наименьший показатель процентного содержания рабочего времени с момента входа в систему.
  • DDC- первый агент, администрированный в этой группе поиска. В случае занятости первого агента вызов поступает ко второму агенту, и так далее.
Выполним аналогичные настройки на IP PBX Asterisk.

В отличии от AVAYA, Asterisk-агенты не привязаны к одному номеру и могут подключаться с любых. Для этого пользователь должен позвонить по определенному внутреннему номеру и ввести свой ID, пароль и номер телефона, к которому его нужно привязать. То есть агент – это как бы еще один виртуальный номер телефона. Позволим нашему внутреннему номеру быть агентом.

Данная операция внесет новый параметр в файл users.conf, в описание номера:

  • hasagent = yes.

Кроме того нам не придется редактировать файл agents.conf и вносить запись типа: agent => 3001,1234,Vasja Pupkin. Определим очереди для обработки вызовов и выберем агентов(в нашем случае он один :) ).

Asterisk может использовать шесть стратегий распределения вызовов между агентами.

  • ringall (звонить всем) Очередь звонит всем доступным агентам и устанавливает соединение с агентом, ответившим первым (это по умолчанию).
  • roundrobin (циклический) – устаревший Очередь последовательно перебирает всех агентов до тех пор, пока не найдет того, кто может принять вызов. roundrobin не учитывает загруженности агентов. Также, поскольку roundrobin всегда начинает с первого агента в очереди, эта стратегия подходит только в среде, где агенты более высокого ранга должны обрабатывать все вызовы, и только в случае их занятости принять вызов могут агенты с более низким рангом.
  • leastrecent (самый давний) Вызов направляется на обработку агенту, который не получал вызовы дольше всех.
  • fewestcalls (меньше всего вызовов) Вызов направляется на обработку агенту, который получил меньше всего звонков. Эта стратегия не учитывает фактической загруженности агента; она учитывает только количество принятых им вызовов (например, агент, принявший 3 вызова по 10 мин каждый, будет предпочтительнее агента, принявшего 5 вызовов по 2 мин каждый).
  • random (случайный) Как следует из имени этого параметра, выбор агента осуществляется случайным образом. Для небольшого центра обработки вызовов эта стратегия, вероятно, наиболее предпочтительная.
  • rrmemory Очередь перебирает список обработчиков очереди вызовов, отслеживая, кто из них получил вызов последним. При поступлении следующего вызова Asterisk начнет с этого участника. (Эта стратегия известна как циклическая память (round-robin memory)). Она обеспечивает более или менее равномерное распределение вызовов между агентами.

Или что то-же самое, в "ручную" правим файл queues.conf.

[6500]

  • fullname=helpdesk
  • strategy=ringall
  • timeout=15
  • wrapuptime=15
  • autofill=no
  • autopause=no
  • joinempty=yes
  • leavewhenempty=no
  • reportholdtime=no
  • maxlen=0
  • musicclass=default
  • member=Agent/6008

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

Или правим в "ручную".
[queues]
  • exten=6500,1,Queue(${EXTEN})
  • exten=6006,1,agentlogin()

Теперь, чтобы зарегистрировать агента, набираем номер 6006 и по подсказкам системы вводим сначала ID = 6008 и #, затем пароль XXXX (как вы заметили с тем-же с которым вы регистрируетесь на SIP аккаунте asterisk) и #. Получим сообщение о регистрации агента.

pbx*CLI>

== Agent '6008' logged in (format ulaw/ulaw)

Оператор с этого момента находится на линии и ему проигрывается музыка до тех пор пока не поступит входящий вызов. Когда агенту поступает на обработку вызов из очереди, он услышит звуковой сигнал (beep) и вызывающий абонент соединяется непосредственно с агентом. Используя функцию agentlogin(), "выход" агента происходит при опускании трубки.

Функция AgentCallbackLogin хоть и присутствует в интерфейсе управления но уже не используется.

Это приложение является устаревшим, его функциональность замещена логикой "диалплана" на AEL, размещенного в файле doc/queues-with-callback-members.txt в папке исходного кода Asterisk. Рассмотрим как организовать регистрацию агента с возможностью "обратного вызова". Обеспечим возможность динамической регистрации агента, для этого редактируем файл extensions.ael и добавим новый контекст queues-loginout.

context queues-loginout {

6010 => {

Answer();

Read(AGENT_NUMBER,agent-user);

VMAuthenticate(${AGENT_NUMBER}@default,s);

Set(queue-announce-success=1);

goto queues-manip,I${AGENT_NUMBER},1;

};

 

6011 => {

Answer();

Read(AGENT_NUMBER,agent-user);

Set(queue-announce-success=1);

goto queues-manip,O${AGENT_NUMBER},1;

};

};

В данном контексте мы описали два внутренних номера, один из которых (6010) предназначен для регистрации агента, второй (6011) для выхода. Коротко остановимся на функциях. Read - проигрывает приглашение agent-user.gsm и считывает в указанную переменную - AGENT_NUMBER, вводимую пользователем, DTMF последовательность, завершенную символом '#'.

VMAuthenticate - эта команда ведет себя аналогично приложению Authenticate(), за тем исключением, что пароли для проверки берутся из файла voicemail.conf, попросту говоря Вы проходите аутентификацию по паролю почтового ящика. И в заключении переходим в контекст queues-manip.

context queues-manip {

includes {

queues;

};

_[IO]60XX => {

&queue-addremove(6500,0,${EXTEN});

&queue-success(${EXTEN});

};

};

Из данного контекста вызываются два макроса. В первый в качестве параметра передается имя очереди описанное в queues.conf, приоритет (penalty) и номер абонента, где и происходит динамическая регистрация агента.(функция AddQueueMember() ) Содержание макроса queue-addremove.

macro queue-addremove(queuename,penalty,exten) {

switch(${exten:0:1})

{

case I: // Login

AddQueueMember(${queuename},Local/${exten:1}@agents,${penalty});

break;

case O: // Logout

RemoveQueueMember(${queuename},Local/${exten:1}@agents);

break;

};

};

Макрос queue-success проосто проигрывает соответствующие звуковые файлы о регистрации или выходе.

macro queue-success(exten) {

if( ${queue-announce-success} > 0 )

{

switch(${exten:0:1})

{

case I:

Playback(agent-loginok);

Hangup();

break;

case O:

Playback(agent-loggedoff);

Hangup();

break;

};

};

};

Контекст agents и макрос callagent для возможности совершить "обратный вызов" и отключить не отвечающего агента.

context agents {

6008 => &callagent(SIP/6008,${EXTEN});

};

//***********************************************************************

macro callagent(device,exten) {

if( ${GROUP_COUNT(${exten}@agents)}=0 )

{

Set(OUTBOUND_GROUP=${exten}@agents);

Dial(${device},300,t);

switch(${DIALSTATUS})

{

case BUSY:

Busy();

break;

case NOANSWER:

Set(queue-announce-success=0);

goto queues-manip,O${exten},1;

default:

Hangup();

break;

};

}

else

{

Busy();

};

Для проверки зарегистрируемся в качестве агента. Для этого набираем номер 6010 и следуя подсказкам вводим номер и пароль, завершая символом '#'.

Получаем сообщение об успешной регистрации. С этого момента вызовы попадающие в очередь - 6500, будут направлены агенту. В случае его занятости, будет проигрываться музыка и сообщения о состоянии очереди. В случае не ответа агента - он будет отключен из обслуживания данной очереди. Для мониторинга состояния очереди применяем команду queue show.