Приблизительное время чтения: 10 минут
Настройка очередей звонков в Asterisk #
Организация любого Call-Центра начинается с правильной настройки очередей в сервере телефонии. За постановку входящих звонков в очередь отвечает приложение Asterisk – Queue(), очередей можно создать любое количество и с разным функционалом обработки звонков.
Система очередей вызовов состоит из функционала:
- Поступающие входящие вызовы помещаются в определенную очередь указанную в сценарии звонков. Можно использовать различные очереди и функционал во время обработки поступающих звонков.
- Сотрудники, обрабатывающие очередь, отвечают на вызовы поступающие в очередь (в их качестве могут быть либо устройства либо пользователи, зарегистрировавшиеся в системе в качестве агентов).
- Порядок распределения поступающих вызовов между сотрудниками, обрабатывающими очередь, зависит от настроенной для нее стратегии распределения вызовов.
- Во время ожидания ответа сотрудников, клиент прослушивает системные аудио файлы, например номер в очереди рекламу и др. информацию.
Участники очереди:
- Агенты (Agents) – динамический участник по обработке звонков в очереди. Авторизация пользователя к определенной очереди происходит через комбинацию кодов в IP АТС.
- Устройство (Members) – устройство в IP АТС, которое подключается через внутренний номер или мобильный телефон к определенной очереди.
Настройка Queue #
Чтобы добавить очередь перейдите в раздел: УПРАВЛЕНИЕ Очереди
Список настроек для создания очереди Queues:
- Название очереди – Укажите название для очереди.
- Номер для очереди. Укажите свободный номер в системе.
- Постоянные операторы. (persistentmembers) – Сохранять каждого динамического оператора во внутренней БД Asterisk (astdb), чтобы после перезагрузки, все операторы были восстановлены из записей очереди в astdb
- Автозаполнение очереди. (autofill) – Поведение очереди по умолчанию (autofill=no) подразумевало последовательный тип подключения, при котором ожидающий абонент, подключался к оператору, только с первой позиции в очереди. Значение (autofill=yes) позволяет ожидающему абоненту, подключится к оператору (агенту) очереди, с любой позиции, если есть свободные агенты, не дожидаясь, пока он займет первую позицию. Такое поведение позволяет быстрее обрабатывать вызовы и является предпочтительным.
- Общий последний вызов. (shared_lastcall) – Если оператор (агент) обслуживает больше чем одну очередь, то учитываются параметры, такие как wrapuptime (пауза после завершения разговора в течении которой на агента не поступают вызовы), для всех вызовов, из всех очередей.
- Не использовать операторов с отрицательным пенальти. (negative_penalty_invalid) – Рассматривать операторов с отрицательным пенальти, как неактивных, не использовать их в очереди.
- Регистрация агентов с именем. (log_membername_as_agent) – Регистрировать агентов с именем, а не номером интерфейса. параметр для обратной совместимости, поведение как при работе с модулем chan_agents.
- Выбор мелодии в режиме ожидания (musicclass) – Выбор класса мелодии для ожидания ответа оператора.
- Звуковое сообщение оператору обслуживающему очередь. (announce) – Звуковое сообщение может быть проиграно оператору (а не вызывающему абоненту) перед тем, как он примет вызов, например, для идентификации очереди, из которой поступил вызов, если оператор обслуживает более одной очереди.
- Стратегия вызова операторов очереди. (strategy) – Параметр указывает как будут распределяться вызовы между операторами. ringall – вызываются все операторы одновременно, пока кто-нибудь не ответит. leastrecent – вызвать оператора дольше всех не принимавшего вызовы. fewestcalls – вызвать оператора принявшего меньше всего вызовов. random – распределить вызовы случайным образом. rrmemory – по кругу (round robin), после агента отвечавшего крайним. linear – вызывать начиная с первого в порядке перечисления. Динамические агенты, будут вызываться в порядке добавления. wrandom – звонит случайный интерфейс, но использует штраф этого участника в качестве веса (weight) при расчете метрики.
- Параметр для статистики (servicelevel) – Параметр используется для статистики уровня обслуживания (вызовы, отвеченные в пределах временных рамок уровня обслуживания). Существует два расчета производительности уровня обслуживания SL и SL2. SL = (общее количество отвеченных вызовов в пределах порога / общее количество отвеченных вызовов) * 100. SL2 = ((отвеченные вызовы в пределах порога + вызовы, потерянные в пределах порога) / (отвеченные вызовы + потерянные вызовы)) * 100.
- Ограничение участников очереди. (penaltymemberslimit) – Параметр указывает не использовать настройки penalty, если очередь обслуживают кол-во операторов меньшее или равное тому, что указано в данном параметре.
- Параметр таймаут указывает в течении какого промежутка времени, в секундах, будет вызываться телефон оператора. (timeout) – Настройка «таймаута» указывается двумя способами. Данный таймаут указывает в течении какого промежутка времени, в секундах, будет вызываться телефон оператора, прежде чем будет считаться, что он не ответил. Второй таймаут, задается в настройках сценарии звонков. Этот таймаут по времени обозначает куда направить вызов после истечении времени.
- Время в секундах для вызова следующего в очереди оператора. (retry) – Параметр указывает через какое время в секундах будет переход к следующему оператору, который указан в списке.
- Параметр указывает разграничение таймаутов оператора и очереди. (timeoutpriority) – Параметр отвечающий за разграничение таймаутов оператора и очереди, если выбран app — приоритет получает таймаут очереди, если conf — приоритет получает таймаут оператора.
- Приоритет для вызова оператора обслуживающего больше одной очереди. (weight) – Чем выше приоритет очереди weight, тем выше приоритет для вызова оператора обслуживающего данные очереди.
- Время в секундах для паузы отдыха оператора после последнего вызова. (wrapuptime) – После завершения успешного вызова, время в секундах отдыха оператора, прежде чем он снова сможет принимать вызовы.
- Изменение общих настроек автозаполнения для данной очереди. (autofill) – Переопределяет общую установку параметра autofill, отдельно для настройки данной очереди.
- Поставить оператора на паузу, если он не ответил на вызов. (autopause) – Значения параметра autopause. no – Не использовать автопаузу для данной очереди. yes – Поставить на паузу, только в данной очереди. all – Поставить на паузу во всех очередях, которые обслуживает оператор.
- Отложить постановку на паузу оператора на время в секундах, с момента завершения последнего неудачного вызова. (autopausedelay).
- Установка оператора на паузу, если он занят. (autopausebusy) – Поставить оператора на паузу (yes или no), если у него статус занят.
- Приостановить оператора, если он недоступен. (autopauseunavail) – Приостановка оператора (yes или no), если у него статус недоступен.
- Максимальное кол-во ожидающих абонентов в очереди. (maxlen) – Максимальное кол-во ожидающих абонентов в очереди. Если значение превышено, последующие вызовы будут отменены. Значение 0 – неограниченно.
- Параметр setinterfacevar. (setinterfacevar) – Если установлено yes, то переменные будут назначены в каналах вызывающего абонента и оператора очереди. MEMBERINTERFACE – наименование интерфейса оператора(например. SIP/100). MEMBERNAME – имя оператора (например. Иванов Иван). MEMBERCALLS – кол-во вызовов принятых данным интерфейсом оператора. MEMBERLASTCALL – Время последнего вызова (UNIX-time). MEMBERPENALTY – (penalty) оператора. MEMBERDYNAMIC – указывает динамического оператора или нет. MEMBERREALTIME – указывается realtime конфигурация оператора или нет.
- Параметр setqueueentryvar. (setqueueentryvar) – Если установлено yes, то следующие переменные будут назначены в каналах вызывающего абонента и оператора очереди. QEHOLDTIME – время ожидания вызывающего абонента. QEORIGINALPOS – позиция в очереди.
- Параметр setqueuevar. (setqueuevar) – Если установлено yes, то следующие переменные будут назначены в каналах вызывающего абонента и оператора очереди, при соединении или когда вызывающий абонент покидает очередь. QUEUENAME – имя очереди. QUEUEMAX – максимальное кол-во вызовов разрешенных в очереди. QUEUESTRATEGY – стратегия очереди. QUEUECALLS – текущее кол-во вызовов в очереди. QUEUEHOLDTIME – среднее время ожидания в очереди на данный момент. QUEUECOMPLETED – кол-во обработанных вызовов. QUEUEABANDONED – кол-во неотвеченных вызовов. QUEUESRVLEVEL – уровень обслуживания очереди. QUEUESRVLEVELPERF – процент вызовов отвечающих условию servicelevel.
- Звуковое сообщение абоненту о позиции в очереди и среднее время ожидания. (announce-frequency) – Установка времени в секундах для озвучивания позиции в очереди и среднее время ожидания для абонентов. Параметр 0 – выключено. Примечание: этот параметр игнорируется при изменении позиции абонента в очереди.
- Минимальный интервал между переходом абонента на следующую позицию в очереди и звуковым сообщением среднего времени ожидания. (min-announce-frequency) – Минимальный интервал между переходом на следующую позицию и сообщением среднего времени ожидания. Параметр позволяет отключать звуковые сообщения когда позиция в очереди абонента часто меняется.
- Частота оповещения в секундах. (periodic-announce-frequency) – Частота оповещения абонентов в секундах.
- Оповещение абонентов в случайном порядке. (random-periodic-announce) – Оповещение абонентов в случайном порядке. no – выключено.
- Рассчитывать время для оповещения с момента завершения предыдущего сообщения, а не от его начала. (relative-periodic-announce) – Рассчитывать время для оповещения с момента завершения предыдущего сообщения, а не от его начала. no – выключено.
- Звуковое сообщение о среднем времени ожидания позиции в очереди. (announce-holdtime) – Звуковое сообщение о среднем времени ожидания позиции в очереди. no – выключено. yes – включено. once – один раз.
- Использовать звуковое сообщение о позиции в очереди. (announce-position) – Использование звукового сообщения о ожидании позиции в очереди. yes – оповещать о позиции ожидающего абонента. more – если кол-во ожидающих в очереди больше чем задано в announce-position-limit. т.е., если announce-position-limit=5 включить сообщение, что в очереди ожидают больше 5-ти абонентов. limit – только ожидающие абоненты в пределах announce-position-limit услышат объявление. no – выключено.
- Проигрывать звуковые сообщения первому абоненту в очереди. (announce-to-first-user) – Проигрывать звуковые сообщения первому абоненту в очереди. no – выключено.
- Проигрывать звуковые сообщения для ожидающих абонентов при включенном параметре announce-position «limit» или «more». (announce-position-limit) – Если вы указали «limit» или «more» для параметра announce-position, то следующее значение используется для определения того, какое объявление воспроизводить для ожидающих абонентов. Если вы установили для параметра announce-position что-то другое, то это не повлияет на работу с очередью.
- Таймаут в секундах для оповещения абонентов. (announce-round-seconds) – Округлять таймаут по времени в секундах для звуковых сообщений до заданного значения. Возможные значения 0, 5, 10, 15, 20 и 30.
- Воспроизвести позицию звонящего только в том случае, если она улучшилась с момента последнего звукового сообщения. (announce-position-only-up) – Воспроизвести позицию звонящего только в том случае, если она улучшилась с момента последнего звукового сообщения. Значение по умолчанию — no.
- Звуковой файл «Ваш звонок является первым в очереди и будет обслужен первым доступным оператором». (queue-youarenext)
- Звуковой файл «Ваша позиция в очереди». (queue-thereare)
- Звуковой файл «Ожидайте пожалуйста ответа оператора». (queue-callswaiting)
- Звуковой файл «Прогнозируемое время ожидания составляет». (queue-holdtime)
- Звуковой файл «минут». (queue-minutes)
- Звуковой файл «секунд». (queue-seconds)
- Звуковой файл «Благодарим за терпение». (queue-thankyou)
- Звуковой файл «Время ожидания». (queue-reporthold)
- Звуковой файл «Все наши операторы заняты, пожалуйста оставайтесь на линии и Ваш звонок будет обслужен первым доступным оператором». (periodic-announce)
- Параметр при котором абонент может присоединится к очереди. (joinempty) – Параметр при котором абонент может присоединится к очереди. Значения: yes, paused, penalty, inuse, ringing, unavailable, invalid, unknown, wrapup.
- Параметр при котором абонент может покинуть очередь. (leavewhenempty) – Параметр при котором абонент может покинуть очередь. Значения: no, paused, penalty, inuse, ringing, unavailable, invalid, unknown, wrapup.
- Оповещение оператора о том сколько по времени абонент ожидал в очереди. (reportholdtime) – Оповещение оператора о том сколько по времени абонент ожидал в очереди.
- Не направлять вызов на оператора, если его статус «in use». (ringinuse) – Не направлять вызов на оператора, если его статус «in use». Значение – no.
- Время задержки соединения оператора с абонентом. (memberdelay) – Параметр устанавливает время задержки в секундах между тем, когда оператор отвечает на вызов и происходит соединение с вызывающим абонентом. Значение – no.
- Сброс настроек параметра таймаут для оператора. (timeoutrestart) – Если параметр «timeoutrestart» установлен в значение yes, тогда значение таймаута для оператора будет сбрасываться, если от него будет получен сигнал BUSY или CONGESTION.
- Список операторов для очереди (member) – Укажите операторов, которые будут использоваться для данной очереди. SIP/100,0,Иванов Иван,SIP/100 или SIP/100
Примеры настройки очереди #
Пример конфигурационного файла для очереди, который расположен в директории: /etc/asterisk/queues.conf
[general]
persistentmembers=yes
shared_lastcall=yes
[500]
musicclass=default
strategy=ringall
servicelevel=60
penaltymemberslimit=0
timeout=15
retry=5
timeoutpriority=app
weight=0
wrapuptime=0
autofill=no
autopause=no
autopausedelay=0
autopausebusy=no
autopauseunavail=no
maxlen=0
setinterfacevar=yes
setqueuevar=yes
announce-frequency=0
min-announce-frequency=15
periodic-announce-frequency=0
announce-holdtime=once
announce-position=yes
queue-youarenext=queue-youarenext
queue-thereare=queue-thereare
queue-callswaiting=queue-callswaiting
queue-thankyou=queue-thankyou
joinempty=yes
leavewhenempty=no
reportholdtime=no
ringinuse=yes
memberdelay=0
timeoutrestart=no
member=>SIP/300,0,Иванов Иван,SIP/300
member=>SIP/301,0,Ирина Сидорова,SIP/301
member=>SIP/302,0,Петр Родионов,SIP/302
Пример настройки очереди
Пример входящего звонка в очередь с номером 500