Статьи

Статьи->Другое->IVR (Interactive voice response) - Голосовое меню в Asterisk [ Поиск ]

IVR (Interactive voice response) - Голосовое меню в Asterisk
Заголовок IVR (Interactive voice response) - Голосовое меню в Asterisk
Описание IVR (Interactive voice response) - Голосовое меню в Asterisk
Отправил Shaman
В качестве примера возьмем вариант с приветствием, 2-мя подменю (отдел продаж и тех. поддержки) и 3-мя попытками выбора.

При входящем звонке из города:
Поднимаем трубку
говорим приветствие
нажмите 4-ре - отдел продаж
нажмите 5 - отдел тех.поддержки

Выдержка из файла /usr/local/etc/asterisk/extensions.conf

[fromcity]
exten => s,1,Answer()
;Поднимаем трубку 
exten => s,n,Background(hello)
;Запускаем приветствие
exten => s,n,Set(numTries=0)
;Выставляем кол-во попыток
exten => s,n(naberite),Background(naberite)
;Рассказываем о возможности набрать цифры 4 и 5
exten => s,n,WaitExten()
;Ждем ввода от пользователя
exten => 4,1,Goto(otdel-prodaj,s,1)
; Нажали 4-ре переходим на голосовое меню отдела продаж
exten => 5,1,Goto(supports,s,1)
;Нажали 5-ть - переходим на голосовое меню тех.подов
exten => i,1,Playback(pbx-invalid)
;Нажали не 4-ре и не 5-ть - говорим что ввод не верный
exten => i,n,Goto(s,naberite)
; Возвращаемся и повторяем сообщение о том какие кнопки можно нажимать
exten => t,1,Set(numTries=$[${numTries} + 1])
; Увеличивает кол-во попыток на 1-цу при таймауте набора
exten => t,n,GotoIf($["${numTries}" < "3"]?s|naberite)
;Пока кол-во потыток меньше 3-х повторяем сообщение о том какие кнопки можно нажимать
exten => t,n,Playback(bay)
;Кол-во попыток на таймаут израсходовано, прощаемся
exten => t,n,Hangup()
; Вешаем трубку

[otdel-prodaj]
exten => s,1,Playback(vi_nahodites_v_menu)
exten => s,n,Playback(otdela_prodag)
exten => s,n,Background(glavnoe_menu_nazmite_zvezdochka)
exten => s,n,Background(dlya_zaversheniya_nazmite_reshetka)
exten => s,n,WaitExten()
exten => *,1,Goto(fromcity,s,naberite)
;Нажали звездочку, выходим в главное меню
exten => #,1,Hangup()
;Нажали решетку - вешаем трубку
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,1)
exten => t,1,Playback(bay)
exten => t,n,Hangup()

[supports]
exten => s,1,Playback(vi_nahodites_v_menu)
exten => s,n,Playback(otdela_supportov)
exten => s,n,Background(glavnoe_menu_nazmite_zvezdochka)
exten => s,n,Background(dlya_zaversheniya_nazmite_reshetka)
exten => s,n,WaitExten()
exten => *,1,Goto(fromcity,s,naberite)
exten => #,1,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,n,Goto(s,1)
exten => t,1,Playback(bay)
exten => t,n,Hangup()

Вот так это работает. Вы можете создать ещё саб-менюхи.
В саб-менюхах (в примере это otdel-prodaj и supports) вы можете описывать новые саб-меню по нажаитию кнопок и т.д.

Главное чтобы саб-меню выступали как отдельные экстеншены.

Немаловажно помнить о том, что при проигрывании сообщения с помощью функции Playback нажатие каких либо клавиш игнорируются, “прослушка” нажатия клавиши от пользователя ТОЛЬКО при использовании функции Background.

Как записать сами голосовые файлы ?

Вариантов 2:

С помощью самого сервера Asterisk (такая возможность реализована в веб-интерфейсе asterisk-gui -> в FreeBSD /usr/ports/www/asterisk-gui -> сайт

http://www.asterisknow.org/)

Записать с помощью Windows recorder (”Пуск”-”Программы”-”Стандартные” - “Развлечения и звукозапись”), выбираем параметры записи: Формат PCM, Mono, 8bit

Если вы записали файлы вторым способом, то для того чтобы Asterisk “понял” их необходимо перекодировать в формат gsm. Это можно сделать утилитой sox (в FreeBSD

/usr/ports/audio/sox)


sox input.wav -r 8000 -c 1 output.gsm resample -ql

где input.wav - записанный вами в Windows файл

output.gsm - файл для Asterisk на выходе, его потом нужно разместить в /usr/local/share/asterisk/sounds/path/to/your/IVR_files

“Нарезать” wav файлы удобно с помощью программы Audacity
Голосов Голосов: 1 - В среднем: 5

Добавить комментарий Оценить
Комментарии

Статистика
Всего 14 статей в базе
Наиболее просматриваемые: NAT через loopback интерфейс
Лучшие по оценкам: NAT через loopback интерфейс

Пользователи в разделе статьи: 3 (0 Пользователи 3 Гости и 0 Скрытые пользователи)
Видимые пользователи: 0


 

MKPortal ©2003-2008 mkportal.it