Тематические термины: IVR, Asterisk.
Интерактивное голосовое меню, или голосовое дерево, IVR меню или просто, IVR используется для возможности позвонившему подключиться к конкретному сотруднику компании или соединиться с линией поддержки определенной категории. Также, с помощью IVR можно получить необходимую информацию без ответа со стороны оператора, выбрав интересующую информацию. Другими словами, это система, взаимодействующая с абонентом и реагирующая на его команды.
IVR настраивается в плане набора Aterisk (dialplan) — в конфигурационном файле extensions.conf.
Сначала мы проигрываем запись с голосовым приветствием и предложением ввести номер в тональном режиме. В том же файле мы обрабатываем вводимую информацию, перекидывая абонента на другие диалплан, очередь или конкретного сотрудника.
Записать голосовое приветствие с просьбой ввода номера можно с помощью различных программ звукозаписи. Asterisk работает с форматами .waw, .gsm. В случае наличия другого формата, можно воспользоваться пакетом для конвертации — sox. Также можно загрузить и установить готовый список голосов на русском, который частично, можно использовать.
Открываем конфигурационный файл:
vi /etc/asterisk/extensions.conf
Вводим:
[outcaling]…exten => 222,1,Answer() same => n,Background(basic-pbx-ivr-main)exten => _XXX,1,Dial(SIP/${EXTEN},,m)
* в данном примере, при звонке на номер 222 нам проигрывается голосовая запись basic-pbx-ivr-main (из каталога /var/lib/asterisk/sounds/<язык>). Когда мы вводим трехзначный добавочный номер, нас соединяет Asterisk с этим номером. Предполагается, что наш основной диалплан называется outcaling.
Перезапускаем настройки диалплана:
asterisk -x “dialplan reload”
Теперь настроим возможность выбора отдела, с которым абонент захочет соединиться.
Приводим наш диалплан к следующему виду:
exten => 333,1,Answer()exten => 333,2,Background(basic-pbx-ivr-main)exten => 333,3,WaitExten(5)exten => 1,1,Goto(managers,s,1)exten => 2,1,Goto(support,s,1)
[managers]exten => s,1,Ringing same => n,Wait(1) same => n,Background(/var/lib/asterisk/sounds/wav/managers) same => n,Waitexten(5)exten => 1,1,Dial(SIP/201)exten => 2,1,Dial(SIP/202)exten => 0,1,Goto(outcaling,333,1)
[support]exten => s,1,Ringing same => n,Wait(1) same => n,Background(/var/lib/asterisk/sounds/wav/support) same => n,Waitexten(5)exten => 1,1,Dial(SIP/101)exten => 2,1,Dial(SIP/102)exten => 0,1,Goto(outcaling,333,1)
* где:
Перечитываем настройки диалплана:
Добавим обработку неправильно введенной цифры и превышение времени ожидания. В вышеуказанном примере просто происходит отбой звонка.
Данное поведения указывается в диалплане с помощью ключей t и i. Добавим их в наш конфиг:
exten => 333,1,Answer()exten => 333,2,Background(basic-pbx-ivr-main)exten => 333,3,WaitExten(5)exten => 1,1,Goto(managers,s,1)exten => 2,1,Goto(support,s,1)exten => t,1,Dial(SIP/101)exten => i,1,Background(invalid) same => n,Goto(outcaling,333,3)
…
* где t,1,Dial(SIP/101) — позвонить по номеру 101, если будет превышен таймаут ожидания; i,1,Background(invalid) — сообщить о том, что введен неправильный номер.
Если во время тестирования возникнут проблемы при донаборе внутреннего номера, необходимо проверить режим DTMF. В двух словах, это аналоговый сигнал для набора телефонного номера. Он может отправляться разными способами: inband, rfc2833 / rfc4733, info. При возникновении проблем, попробуйте в настройках клиента выставить rfc2833 или inband.
На стороне Asterisk также можно настроить sip-пир на определенный способ передачи DTMF:
vi /etc/asterisk/sip.conf
dtmfmode=rfc2833
* настройка может быть задана на глобальном уровне, уровне шаблона или для конкретного пира.
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies