Страница 1 из 1

Очередь операторов с автоинформером

Добавлено: 03 фев 2016, 13:02
RomA
Введение:
Абонент звонит на определенный номер и в ответ слышит какой он в очереди, сколько примерно ждать пока ему ответит оператор и всё такое. Оператор же, снимая трубку, слышит сколько времени абонент весел на телефоне, пока не соединился с оператором.

Задача:
Цитирую:
Роман, привет!

Реально на нашей IP телефонии сделать очередь дозвона до операторов службы поддержки с автоматическим расчетом времени, когда смогут ответить на звонок? Чтобы оно говорило – оператор сможет ответить на ваш звонок через … суток))) Если у вас заявка по почте, принтеру или работе с ПК, можете оставить голосовую заявку, для этого нажмите циферку.

Дано:
Asterisk 11.13.0

Реализация:
В качестве Операторов техподдержки у нас будут обычные телефоны пользователей. Таким образом заводим пару телефоноы - пусть это будут номера 1871 и 1872 - два оператора техподдержки. Правим файл sip.conf

Код: Выделить всё

[local](!)
type=friend
host=dynamic
directmedia=no
pickupgroup=1
callgroup=1
disallow=all
allow=alaw
dtmfmode=rfc2833
call-limit=100

[1871](local)
username=1871
secret=1871
context=td
callerid="Test 1871" <1871>

[1872](local)
username=1872
secret=1872
context=td
callerid="Test 1872" <1872>
Где:
[local] - общий шаблон для всех телефонов
[1871](local) - номер телефона и шаблон, присоединенный к нему
Test 1872 - тут надо вписать имя оператора, скажем Ivanov I.I.

Регистрируем аппараты и пробуем позвонить с одного на другой - если работает - двигаемся дальше.
Теперь создадим сами очереди и пропишем параметры автоответов - правим файл queues.conf

Код: Выделить всё

[operator]
reportholdtime=yes
announce-frequency = 90
min-announce-frequency = 15
periodic-announce-frequency = 30
random-periodic-announce=no  
announce-holdtime = yes ; yes| none
announce-position = yes
announce-position-limit = 5
announce-round-seconds = 10
queue-youarenext = queue-youarenext
queue-thereare  = queue-thereare
queue-callswaiting = queue-callswaiting
queue-holdtime = queue-holdtime
queue-minutes = queue-minutes
queue-seconds = queue-seconds
queue-thankyou = queue-thankyou
queue-reporthold = queue-reporthold
periodic-announce = queue-periodic-announce 

context = queue_out_cont

retry=5
strategy=ringall
timeout=15
member => SIP/1871
member => SIP/1872
Где:
reportholdtime - отвечает за информирование оператора - говорит сколько времени абонент висел на телефоне.
announce-holdtime - информирование абонента о времени ожидания.
announce-position - информирование абонента о его позиции в очереди. Это не произносится для первого и для единственного абонента.
queue - это ссылки на звуковые файлы
strategy - как будут распределяться звонки между операторами
context - контекст в файле extensions.conf который будет работать внутри этой очереди, если вдруг пользователю надоело слушать.

Теперь надо создать маршрутизацию звонков - правим extensions.conf
Выделим некий произвольный свободный номер для данных целей - у меня это будет номер 1870 - надо разместить эти строки в том контексте, который у вас будет рабочим - у меня это контекст [gorod], на который приходят все звонки в других АТС компании и с города

Код: Выделить всё

exten => 1870,1,Answer
exten => 1870,n,Playback(welcome)
exten => 1870,n,Queue(operator,120)
Где:
welcome - файл звукового приветствия
operator - контекст очереди

Ниже в этом же файле пропишем меню для особо неперпеливых:

Код: Выделить всё

[queue_out_cont] 

exten => #,1,Answer()
exten => #,n,Set(numTriest=0)
exten => #,n,Set(numTriesi=0)
exten => #,n,Playback(/usr/local/etc/asterisk/audio/support/m-busy)
exten => #,n(menu),Background(/usr/local/etc/asterisk/audio/support/m-1);1
exten => #,n,Background(/usr/local/etc/asterisk/audio/support/m-2); 2
exten => #,n,Background(/usr/local/etc/asterisk/audio/support/m-3); 3
exten => #,n,Background(/usr/local/etc/asterisk/audio/support/m-email); #
exten => #,n,WaitExten(7)
exten => 1,1,WaitExten(1)
exten => 1,n,Playback(/usr/local/etc/asterisk/audio/support/m-onmail)
exten => 1,n,Voicemail(Voice message E-mail@support,s)
exten => 1,n,Playback(/usr/local/etc/asterisk/audio/support/m-end)
exten => 2,1,WaitExten(1)
exten => 2,n,Playback(/usr/local/etc/asterisk/audio/support/m-onmail)
exten => 2,n,Voicemail(Voice message Print & Copy@support,s)
exten => 2,n,Playback(/usr/local/etc/asterisk/audio/support/m-end)
exten => 3,1,WaitExten(1)
exten => 3,n,Playback(/usr/local/etc/asterisk/audio/support/m-onmail)
exten => 3,n,Voicemail(Voice message PC & Laptop@support,s)
exten => 3,n,Playback(/usr/local/etc/asterisk/audio/support/m-end)
exten => #,1,Hangup()
;ne vernyi nabor
exten => i,1,Playback(pbx-invalid)
exten => i,n,Set(numTriesi=$[${numTriesi} + 1])
exten => i,n,GotoIf($["${numTriesi}" < "1"]?s,menu)
exten => i,n,Hangup()
;povtor esli net nabora
exten => t,1,Set(numTriest=$[${numTriest} + 1])
exten => t,n,GotoIf($["${numTriest}" < "2"]?s,menu)
exten => t,n,Hangup()

Где:
# - это символ, который абонент должен нажать, что бы попасть в это меню

Дальше всё понятно, или уже описано на этом форуме - идем надиктовка сообщения и отправка голосового файла на почту техподдержки.

Литература:
http://xgu.ru/wiki/Очереди_звонков
http://asterisk-support.ru/forum/topics/599/
http://voxlink.ru/kb/asterisk-configura ... cli_queue/
http://bos-info.com/asterisk/очередиqueues.html