Разработка сайтов и программного обеспечения, системное администрирование, обучение программированию и работе с СУБД MySQL

in english

Многоуровневое меню для Asterisk

Главная Статьи IVR Menu

 

Это просто заметка как сделать многоуровневое вложенное меню для астериска - сервера voip телефонии. Отнеситесь к ней с юмором. Самое главное не путать названия, а то все все время говорят "астерикс" =)

Имеем elastix 1.6-12 (сборка asterisk и CentOS), freepbx - веб-интерфейс для настройки asterisk.

Рисуем где-нить, хоть на бумажке само меню. Думаем... Выбрасываем бумажку... Рисуем новое

Набиваем текст в любом редакторе... Читаем вслух в присутствии еще кого-нить... Желательно занудной сволочи! Исправляем текст.

Еще раз читаем и т.д. пока он не вылизан... Ах... Эта рекурсия должна когда-либо закончиться.

Берем девушку с приятным голосом, уговариваем ее сделать начитку в микрофон. Записываем ее труды. Делаем из них в звуковом редакторе приличное содержимое для прослушивания.

Разрезаем это на файлики так, чтобы не перепутать

Заливаем все материалы на сервант

 

Как сделать голосовое меню - настройка Asterisk

Надо дописать в /etc/asterisk/extensions_custom.conf (Это и есть часть dialplan, он весь находится в /etc/asterisk/)

 

exten => 731,1,Goto(my-menu,s,1)


[my-menu]
exten => s,1,Set(home="/var/lib/asterisk/sounds/custom")
exten => s,2,Wait(1)
exten => s,3,Playback(${home}../welcome)
exten => s,4,Playback(${home}/i-menu-0)
exten => s,5,WaitExten()

exten => 1,1,Playback(${home}/i-menu-1)
exten => 1,2,Goto(s,1)

exten => 2,1,Dial(SIP/202)

exten => 3,1,Playback(${home}/otebe)
exten => 3,2,Goto(s,1)

exten => t,1,Playback(make_choice)
exten => t,2,Goto(s,1)

exten => i,1,Playback(wrong_choice)
exten => i,2,Goto(s,1)




Собственно о меню:
дозваниваться в него будем по номеру 731
строка exten => s,1,Set(home="/var/lib/asterisk/sounds/custom") устанавливает переменную home как папку для ваших звуков

попав в меню человек слушает welcome, а потом i-menu-0, далее система ждет донабора.

короче говоря t - таймаут (время ожидания истекло), i - неверный номер, [хреновинаВскобочках] это контекст, а содержимое этого файла и кучи других называется dialplan - диалплан или набор правил дозвона.

Если захотите сделать несколько уровней в меню, то делайте Goto к нужному пункту.

Пример многоуровневого IVR-меню

Проблема с многоуровневыми IVR заключется в том, что вызывающий должен ввести одну цифру несколько раз (часто одни и те же цифры), но получить различную реакцию в зависимости от меню. Так как номер может быть использован только один раз в данном контексте, вызывающий застрянет на первом уровне меню. Если нам потребуется несколько уровней меню, которые обеспечиват различные ответы для тех же цифр, мы должны поместить подменю в различных контекстах (в нашем примере это [кафе] ). Чтобы перемещаться между этими контекстами, нам следует использовать вызов Goto ().

Предположим, у нас есть следующие звуковые файлы, хранящиеся в /var/lib/asterisk/sounds/:

Если номер отдела продаж 100 и отдела обслуживания 150, диалплан для такого вложенного меню IVR может выглядеть следующим образом:

[example-ivr]
; Это меню будет повторяться до тех пор, пока абонент не повесит трубку
;
exten => 30,1,Answer()
exten => 30,2,Background(mainmenu)
exten => 30,3,Background(silence/3)
exten => 30,4,Goto(2)

exten => 1,1,Dial(SIP/100)

exten => 2,1,Dial(SIP/150)

; Goto() перепрыгиваем в контекст кафе ([cafeteria])
;
exten => 3,1,Goto(cafeteria,100,1)

exten => i,1,Goto(30,2)

[cafeteria]
exten => 100,1,Background(cafeteria)
exten => 100,2,Background(silence/3)
exten => 100,3,Goto(1)

exten => 1,1,Playback(cafeteria-menu-this-week)
exten => 1,2,Wait(2)
exten => 1,3,Goto(1)

exten => 2,1,Playback(cafeteria-menu-next-week)
exten => 2,2,Wait(2)
exten => 2,3,Goto(1)

; Ошибочный набор отправляет нас в главное меню
exten => i,1,Goto(example-ivr,30,2)

Технически, глубина вложенности меню неограничена, однако практика показывает, что абонент обычно вешает трубку на третьем уровне меню.

После правок файлов перезапускайте демон астериска из командной строки. Через веб-интерефейс он плохо себя ведет. Регулярно бекапьте и не бойтесь экспериментов.

Скачать Asterisk можно на официальном сайте http://www.asterisk.org/

Итак, из этой статьи вы узнали, как сделать голосовое меню в Asterisk. Вы можете почитать другие мои статьи или порекомендовать эту друзьям. Надеюсь, моя статья оказалась вам полезной.

Автор в Google+

Реклама:

Метки: Linux, сисадмину, IVR, Asterisk, VoIP, Elastix.

Комментарии:

Алексей:
Спасибо за пример голосового меню. Наконец-то разобрался.
Марина:
Да, к стати - не пытайтесь записываться для автоответчика самостоятельно! Конечно если у вас нет дикторского опыта). Рекомендую студию звукозаписи, которая поможет записать для вашего автоответчика настоящих профессионалов! Профессиональных дикторов. Это придаст вашей фирме статуса и в определенном смысле снимет с вас кучу забот и проблем.
имя:

e-mail (не публикуется):

комментарий:

© Ткачев Филипп, 2005—2017
Программист, веб-разработка и прикладное ПО.
Все права защищены.