Asterisk и IP-телефония

«Железная леди» – IVR (Interactive voice response) – Голосовое меню в Asterisk | Subnets.ru blog

Материал перенесён из старой базы знаний ATC-IP и оформлен в едином стиле нового сайта.

Subnets.ru blog
Сети, настройка оборудования, сетевые сервисы.
Быстрый переход:
Главная блога
Главная сайта
Форум
Если Вы чего то недопоняли или не нашли - задайте
вопрос на нашем
форуме
и мы попробуем Вам помочь.
Subnets.ru
ресурс компании ООО "Меганет-2003"
mega-net.ru
Версия для печати
Настраиваем Addpac AP200B для работы с Asterisk
Multicast и Unicast вещание с помощью VLC media player (vlc multicast and unicast stream)
«Железная леди» – IVR (Interactive voice response) – Голосовое меню в Asterisk
В качестве примера возьмем вариант с приветствием, 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.
Как записать сами голосовые файлы ?
Вариантов как минимум два:
С помощью самого сервера Asterisk c помощью функции
Record
, сделать экстеншн (exten) под это дело.
Пример:
exten => 1111,1,Set(TIME="${STRFTIME(${EPOCH},,%C%y-%m-%d_%H-%M-%S)}")
exten => 1111,n,Playback(beep)
exten => 1111,n,Record(/usr/local/share/asterisk/sounds/record%d_${TIME}.gsm)
exten => 1111,n,Playback(${RECORDED_FILE})
exten => 1111,n,Hangup()
записанный файл будет сохранен в директории /usr/local/share/asterisk/sounds/ и иметь название формата record_НОМЕР_ВРЕМЯ.gsm
(или ещё вариант: такая возможность реализована в веб-интерфейсе 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
если версия sox 14.3.0:
sox input.wav -r 8k -c 1 -e gsm output.gsm
где
input.wav
– записанный вами в Windows файл
output.gsm
– файл для Asterisk на выходе, его потом нужно разместить в
/usr/local/share/asterisk/sounds/
«Нарезать» wav файлы удобно с помощью программы
Audacity
При копировании статьи ссылка на источник
ОБЯЗАТЕЛЬНА
Автор: Николаев Дмитрий (virus (at) subnets.ru)
Похожие статьи:
Asterisk: автообзвон (auto-dial out) и обратный звонок (callback) с использованием AGI
Защита Asterisk или несколько способов как защититься от подбора пароля к SIP аккаунту
app_meetme VS app_conference для Asterisk под FreeBSD
Вещание радио со спутника в локальную сеть.
Позвонить +7 (343) 382-33-16