用FreeSWITCH实现IVR
IVR系统默认的配置文件为/usr/local/freeswitch/conf/autoload_configs/ivr.conf.xml
<include>
<menus>
<menu name="welcome"
greet-long="/usr/local/freeswitch/sounds/welcome.wav"
greet-short="/usr/local/freeswitch/sounds/morning.wav" #一定要注意录音文件的路径
invalid-sound="ivr/ivr-that_was_an_invalid_entry.wav"
exit-sound="voicemail/vm-goodbye.wav"
timeout="15000"
max-failures="3"
max-timeouts="3"
inter-digit-timeout="2000"
digit-len="4">
<entry action="menu-exec-app" digits="0" param="transfer 1000 XML default"/>
<entry action="menu-exec-app" digits="/^(10[01][0-9])$/" param="transfer $1 XML default"/>
<menu>
<menus>
<include>
实现拨打4321号码,转到IVR流程
编辑/usr/local/freeswitch/conf/dialplan/default.xml 新增如下代码
<extension name="incoming_ivr">
<condition field="destination_number" expression="^4321$">
<action application="answer"/>
<action application="sleep" data="2000"/>
<action application="ivr" data="welcome"/>
</condition>
</extension>
greet-long:指定最开始的欢迎词,该语音文件默认位置应该是在/usr/local/freeswitch/sounds目录下;
greet-short:该项指定一个简短的提示音,如果用户长时间没有哦按键,则应重新提示拨号;
invalid-sound:如果用户按错了键,则会使用该提示;
exit-sound:该项指定最后菜单退出是(一般是超时没有按键)的声音;
timeout:指定超时时间(毫秒),即多长时间没有收到按键就超时,播放其他提示音;
max-failures:为容忍用户按键错误的次数;
max-timeouts:即最大超时次数;
inter-digit-timeout:为两次按键的最大间隔(毫秒);
digit-len:说明菜单项的长度,即最大收号位数。
按时间进线路由
<extension name="time_based_ivr">
<condition wday="2-6" hour="8:30-17:30">
<action application="ivr" data="ivr_day"/>
<anti-action application="ivr" data="ivr_night"/>
</condition>
</extension>
wday表示星期(星期日的值为“0“,故周一到五则的值用“2-6”表示)
使用sound_prefix,播放中文语音
修改/usr/local/freeswitch/conf/vars.xml为
<X-PRE-PROCESS cmd="set" data="sound_prefix=$${sounds_dir}/zh/cn/link"/>