IVR голосовое меню для Asterisk сервера
09.07.2013 - 09:06
если необходимо ввести добавочный номер:
Подготовим звуковые файлы:
Краткая заметка по IVR...
[root@voip /usr/local/etc/asterisk]#cat /usr/local/etc/asterisk/extensions.conf
#include "/usr/local/etc/asterisk/menu/company.tree"
;КиевСтар-1
[ks1]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo "${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}" >> /var/log/asterisk/sms.tx
t)
exten => sms,n,Hangup()
exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo "${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${USSD}" >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
exten => s,1,GotoIfTime(9:00-18:00|mon-fri|*|*?wellcome,s,1)
exten => s,2,GotoIfTime(18:00-9:00|mon-fri|*|*?not_work,s,1)
exten => s,3,GotoIfTime(9:00-15:00|sat|*|*?wellcome,s,1)
exten => s,4,GotoIfTime(15:00-9:00|sat|*|*?not_work,s,1)
exten => s,5,GotoIfTime(*|sun|*|*?not_work,s,1)
;Интертелеком-1
[it1]
exten => 44XXXXXXX,1,GotoIfTime(9:00-18:00|mon-fri|*|*?wellcome_it,44XXXXXXX,1)
exten => 44XXXXXXX,2,GotoIfTime(18:00-9:00|mon-fri|*|*?not_work,s,1)
exten => 44XXXXXXX,3,GotoIfTime(9:00-15:00|sat|*|*?wellcome_it,44XXXXXXX,1)
exten => 44XXXXXXX,4,GotoIfTime(15:00-9:00|sat|*|*?not_work,s,1)
exten => 44XXXXXXX,5,GotoIfTime(*|sun|*|*?not_work,s,1)
;КиевСтар-1
[ks1]
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS})
exten => sms,n,System(echo "${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}" >> /var/log/asterisk/sms.tx
t)
exten => sms,n,Hangup()
exten => ussd,1,Verbose(Incoming USSD: ${USSD})
exten => ussd,n,System(echo "${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME}: ${USSD}" >> /var/log/asterisk/ussd.txt)
exten => ussd,n,Hangup()
exten => s,1,GotoIfTime(9:00-18:00|mon-fri|*|*?wellcome,s,1)
exten => s,2,GotoIfTime(18:00-9:00|mon-fri|*|*?not_work,s,1)
exten => s,3,GotoIfTime(9:00-15:00|sat|*|*?wellcome,s,1)
exten => s,4,GotoIfTime(15:00-9:00|sat|*|*?not_work,s,1)
exten => s,5,GotoIfTime(*|sun|*|*?not_work,s,1)
;Интертелеком-1
[it1]
exten => 44XXXXXXX,1,GotoIfTime(9:00-18:00|mon-fri|*|*?wellcome_it,44XXXXXXX,1)
exten => 44XXXXXXX,2,GotoIfTime(18:00-9:00|mon-fri|*|*?not_work,s,1)
exten => 44XXXXXXX,3,GotoIfTime(9:00-15:00|sat|*|*?wellcome_it,44XXXXXXX,1)
exten => 44XXXXXXX,4,GotoIfTime(15:00-9:00|sat|*|*?not_work,s,1)
exten => 44XXXXXXX,5,GotoIfTime(*|sun|*|*?not_work,s,1)
[root@voip /usr/local/etc/asterisk/menu]# /usr/local/etc/asterisk/menu/company.tree
[wellcome]
exten => s,1,Answer() ;Поднимаем трубку.
exten => s,n,Background(/usr/local/share/asterisk/sounds/music/wellcome) ;Здравствуйте, Вас приветствует компания "___", оставайтесь пожалуйста на линии.
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m) ;Мелодия ожидания 20сек.
exten => s,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}' >> /var/log/asterisk/missed.txt)
exten => s,n,Playback(/usr/local/share/asterisk/sounds/music/line_is_busy) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => s,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Hangup() ; положить трубку
[wellcome_it]
exten => 44XXXXXXX,1,Answer()
exten => 44XXXXXXX,n,Background(/usr/local/share/asterisk/sounds/music/wellcome)
exten => 44XXXXXXX,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => 44XXXXXXX,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${CALLERID(name)} - ${CALLERID(num)}' >> /var/log/asterisk/miss
ed.txt)
exten => 44XXXXXXX,n,Playback(/usr/local/share/asterisk/sounds/music/line_is_busy) ; в данный момент никто не может принять Ваш звонок
exten => 44XXXXXXX,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => 44XXXXXXX,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => 44XXXXXXX,n,Hangup() ; положить трубку
[not_work]
exten => s,1,Playback(/usr/local/share/asterisk/sounds/music/not_work_time)
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => s,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}' >> /var/log/asterisk/missed.txt)
exten => s,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Hangup() ; положить трубку
exten => s,1,Answer() ;Поднимаем трубку.
exten => s,n,Background(/usr/local/share/asterisk/sounds/music/wellcome) ;Здравствуйте, Вас приветствует компания "___", оставайтесь пожалуйста на линии.
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m) ;Мелодия ожидания 20сек.
exten => s,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}' >> /var/log/asterisk/missed.txt)
exten => s,n,Playback(/usr/local/share/asterisk/sounds/music/line_is_busy) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => s,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Hangup() ; положить трубку
[wellcome_it]
exten => 44XXXXXXX,1,Answer()
exten => 44XXXXXXX,n,Background(/usr/local/share/asterisk/sounds/music/wellcome)
exten => 44XXXXXXX,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => 44XXXXXXX,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${CALLERID(name)} - ${CALLERID(num)}' >> /var/log/asterisk/miss
ed.txt)
exten => 44XXXXXXX,n,Playback(/usr/local/share/asterisk/sounds/music/line_is_busy) ; в данный момент никто не может принять Ваш звонок
exten => 44XXXXXXX,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => 44XXXXXXX,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => 44XXXXXXX,n,Hangup() ; положить трубку
[not_work]
exten => s,1,Playback(/usr/local/share/asterisk/sounds/music/not_work_time)
exten => s,n,Dial(SIP/201&SIP/202&SIP/203&SIP/204&SIP/205,20,m)
exten => s,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLENAME} - ${CALLERID(num)}' >> /var/log/asterisk/missed.txt)
exten => s,n,Playback(vm-nobodyavail) ; в данный момент никто не может принять Ваш звонок
exten => s,n,Hangup() ; положить трубку
если необходимо ввести добавочный номер:
[ivr]
exten => s,1,Answer()
;Проигрываем приветствие
exten => s,2,Background(/etc/asterisk/ivr/ivr-main)
;Ждем 5 секунд ввода добавочного номера
exten => s,3,WaitExten(5)
;Звоним по введенному добавочному
exten => _XXX,1,Dial(SIP/${EXTEN})
;Если введен не существующий номер, то говорим об этом и отправляем в начало приветствия
exten => _XXX,2,Playback(privacy-incorrect)
exten => _XXX,3,Goto(ivr-main,s,1)
;Если звонящий ничего не вводит, то звоним секретарю
exten => t,1,Dial(SIP/100)
exten => s,1,Answer()
;Проигрываем приветствие
exten => s,2,Background(/etc/asterisk/ivr/ivr-main)
;Ждем 5 секунд ввода добавочного номера
exten => s,3,WaitExten(5)
;Звоним по введенному добавочному
exten => _XXX,1,Dial(SIP/${EXTEN})
;Если введен не существующий номер, то говорим об этом и отправляем в начало приветствия
exten => _XXX,2,Playback(privacy-incorrect)
exten => _XXX,3,Goto(ivr-main,s,1)
;Если звонящий ничего не вводит, то звоним секретарю
exten => t,1,Dial(SIP/100)
Подготовим звуковые файлы:
#!/bin/sh
for i in *.wav
do
ffmpeg -i $i -acodec pcm_s16le -vol 50 -ar 8000 -ac 1 -y done/"${i%wav}wav"
done
for i in *.wav
do
ffmpeg -i $i -acodec pcm_s16le -vol 50 -ar 8000 -ac 1 -y done/"${i%wav}wav"
done
или с помощью sox, -v 0.5 - уменьшить входящую громкость на 50%:
sox -v 0.5 -V hello.wav -r 8000 -c 1 -t ul hello.ulaw
sox -v 0.5 -V hello.wav -r 8000 -c 1 -t al hello.alaw
sox -v 0.5 -V hello.wav -r 8000 -c 1 -t gsm hello.gsm
sox -v 0.5 -V hello.wav -r 8000 -c 1 -t al hello.alaw
sox -v 0.5 -V hello.wav -r 8000 -c 1 -t gsm hello.gsm
Параметры аудиофайла:
Формат файла wav
Audio frequency: 8 000 Hz
Аudio bitrate: 16 kbps
Audio channels: mono
- Войдите на сайт для отправки комментариев
- Версия для печати