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

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

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

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

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

Выполним аналогичные настройки на IP PBX Asterisk.

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

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

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

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

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

[6500]

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

Или правим в «ручную».[queues]

Теперь, чтобы зарегистрировать агента, набираем номер 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.