artem
09.03.2017
2448

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

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

Настройка

Ниже приведён диалплан, реализующий описанный функционал:

 

[globals]
INBOUND_ANNOUNCE_LEN=12

[sub-answer-wait] exten => s,1,GotoIf($[“${ARG1}” = “” | “${ARG2}” = “”]?end)
same  => n,NoOp(arg1: ${ARG1}, arg2: ${ARG2})
same  => n,Set(MOH_PLAYED=$[${EPOCH} – ${ARG2}])
same  => n,Set(MOH_LEFT=$[${ARG1} – ${MOH_PLAYED}])
same  => n,ExecIf($[${MOH_LEFT} > 0]?Wait(${MOH_LEFT}))
same  => n,Playback(beep)
same  => n,Wait(0.5)
same  => n(end),Return

[inbound-calls]
exten => _X.,1,Answer
same  => n,Dial(Local/900@ext-queues/n,60,m(inbound_announce_moh)tgU(sub-answer-wait^${INBOUND_ANNOUNCE_LEN}^${EPOCH}))
same  => n,Hangup

[ext-queues]
exten => 900,1,Queue(900,t,,,180)
same  => n,Hangup

Пояснения

sub-answer-wait – контекст, реализующий задержку до соединения с оператором, выполняется в момент ответа оператора через Gosub. Контекст принимает два параметра: 1-й параметр – длительность приветствия (т.е. минимальное время, которое должно пройти от начала проигрывания приветствия до соединения с оператором); 2-й параметр – время начала проигрывания приветствия. После завершения ожидания, оператору очереди проигрывается гудок и происходит соединение со звонящим.

 

INBOUND_ANNOUNCE_LEN – глобальная переменная, содержащая длительность проигрываемого приветствия (длительность приветствия измеряется вручную).

 

inbound-calls – контекст для обработки входящих вызовов, в этом контексте происходит ответ и вызов очереди 900 через канал Local. Во время вызова в очередь проигрывается музыка в ожидании класса inbound_announce_moh. В момент ответа на вызов выполняется Gosub в контекст sub-answer-wait, если вместо вызова очереди через канал Local воспользоваться параметром gosub приложения Queue, очередь будет переходить к вызову следующего оператора, если во время ожидания завершения проигрывания сообщения звонящему истечёт время ожидания ответа оператора (при этом связь с ответившим оператором будет разорвана).

 

– В класс музыки в ожидании inbound_announce_moh первой должна входить запись приветствия, которую необходимо проиграть звонящему до соединения с оператором, затем должны идти файлы музыки в ожидании, которые используются в очереди. Сам класс должен быть описан в файле /etc/asterisk/musiconhold.conf, например, так:

 

[inbound_announce_moh]
mode=files
sort=alpha
directory=/var/lib/asterisk/moh/inbound_announce_moh
 

  • ext-queues – контекст для вызова очереди через канал Local. До вызова приложения Queue не должно происходить ответа на вызов, иначе музыка/гудки из очереди заменят проигрываемое сообщение.

 

Ограничения

При использовании описанной логики нельзя использовать донабор внутренних номеров, можно только использовать донабор одной цифры с помощью опции d приложения Dial.

 

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices