Asterisk. Делаем простейшее голосовое меню (IVR).
Одним из основных достоинств Астериск является легкость, с которой с помощью него создаются IVR.
Для того что бы создать IVR нужно в первую очередь представить себе его структуру, то есть что за чем и как будет делаться, и составить тексты.
Сейчас мы опишем создание простейшего голосового меню, состоящего из приветствия и после приветствия, переключение на оператора. Файл в котором хранится фраза «Здравствуйте, вы позвонили в нашу компанию» называется welcome.wav и находится в директории /home/menu. Номер, который принимает звонки 444. А выглядеть меню будет так:
[sip-in] exten => 444,1,Set(home="/home/menu") exten => 444,2,Wait(1) exten => 444,3,Playback(${home}/welcome) exten => 444,4,Dial(SIP/operator)
У нас появилась новая функция Playback, она предназначена для проигрывания звуковых файлов, файлы должны быть подготовленны заранее, так как мы описывали в статье ffmpeg, подготавливаем звуковые файлы для Asterisk. Есть еще сходная функция Background, она отлдичается от Playback тем, что не блокирует нажатия на кнопки, то есть в момент проигрывания голосовых меню, позволяет реагировать на передаваемые звонившим DTMF.
Это простейший IVR и в нем отсутствует основная особенность IVR, нет никакого выбора. Поэтому приведем пример с диалогом. Тут будет присутствовать вторая начитка: «Для связи того что бы прослушать тарифы нажмите 1, для связи с оператором нажмите 2″. Файл содержащий эту начитку будет называться menu.wav и файл с тарифами соответсвенно tariff.wav. После прочтения инструкции должен осуществляться переход в главное меню.
Выглядит это так:
[sip-in] exten => 444,1,Goto(menu,s,1) [menu] exten => s,1,Set(home="/home/menu") exten => s,2,Wait(1) exten => s,3,Playback(${home}/welcome) exten => s,4,Playback(${home}/menu) exten => s,5,WaitExten() exten => 1,1,Playback(${home}/tariff) exten => 1,2,Goto(s,1) exten => 2,1,Dial(SIP/operator) exten => t,1,Playback(make_choice) exten => t,2,Goto(s,1) exten => i,1,Playback(wrong_choice) exten => i,2,Goto(s,1)
Тут у нас появилось много нового. Во первых Goto – функция безусловного перехода. Если в качестве параметров ей передается 3 аргумента, это контекст, екстеншен и метка на которую нужно перейти. Если всего 2 аргумента, то подразумевается, что контекст текущий.
Так же появились екстеншены i – это реакция на неправильно нажатую кнопку, Invalid input и t – реакция на истекшее время ожидания выбора. Если их не описать то при истечении таймаута или при неправильно нажатой кнопке произойдет обрыв соединения.




By zm, 26.01.2010 @ 13:42
А в какой это файл записывать?
By Iraqez, 08.02.2010 @ 18:58
extensions.conf пиши наверное сюда
By astnub, 26.08.2010 @ 16:21
А если меню будет 3 да в каждом по три варианта выхода…
phpivr мою проблему решил быстрее, там конфиг попонятнее будет