freeswitch实现ivr语音导航

1.测试

用分机拨打5000可以收听系统默认的ivr

2.放置welcome音频文件

centeros的sounds文件在 /usr/share/freeswitch/sounds下,默认的是英文的,问我这边做了中文支持

[root@localhost sounds]# ls
en  fr  music  ru  zh
[root@localhost sounds]# cd zh/cn/link/
[root@localhost link]# ls
ascii  currency  custom  digits  directory  ivr  misc  phonetic-ascii  time  voicemail

创建custom文件夹,将提前录制的welcome.wav  welcome_short.wav放进去

3.创建ivr xml

进入ivr_menus,所有的ivr文件都放在这里了,我们新建welcome.xml文件

[root@localhost ivr_menus]# pwd
/etc/freeswitch/ivr_menus
[root@localhost ivr_menus]# ls
demo_ivr.xml  new_demo_ivr.xml  welcome.xml
<include>
        <menu name="welcome"
              greet-long="custom/welcome.wav"
              greet-short="custom/welcome_short.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>
</include>

在上述配置中,首先,我们指定菜单的名字(name)是welcome,其他各项的含义如下:
·greet-long:指定最开始的欢迎音,即最开始播放的“您好,欢迎致电某某公司,请直拨分机号,查号请
拨0”的语音,该语音文件默认的位置应该是在/usr/local/freeswitch/sounds目录下。应该事先把声音文件录好(可
以使用Windows系统自带的“录音机”或其他录音软件实现,后面我们还会讲到其他录音的方法),在本例子
中,我们都使用相对路径,当然也可以使用绝对路径,如/root/ivr/welcome.wav)。另外,PSTN交换机都是使用
PCM编码的,如果与PSTN对接的话,将声音文件存储为单声道、8000Hz的格式,能获得较好的音质并占用较少
的系统资源。当然,对于其他采样率的声音文件,FreeSWITCH也能自动转换,只是在Log中会有相关的采样率不
匹配的警告,初学者可以暂时不必理会。
·greet-short:该项指定一个简短的提示音。如果用户长时间没有按键,则应重新提示拨号,但重新提示应
该简短,比如直接说“请直拨分机号,查号请拨0”,而不用再把公司的欢迎广告再重复播放一遍。所以,可以把
这么一个声音文件录制到welcome_short.wav中。
·invalid-sound:如果用户按错了键,则会使用该提示。如果使用“make sounds-install”命令安装了声音文
件,则该文件应该是默认存在的。只是它是英文的,如果需要中文的提示,可以自己录一个,并修改这里的路径
使其指向自己录制的声音文件。
·exit-sound:该项指定最后菜单退出时(一般是超时没有按键)的声音,默认会提示“Good Bye”。
·timeout:指定超时时间(毫秒),即多长时间没有收到按键就超时,播放其他提示音。
·max-failures:为容忍用户按键错误的次数。如果用户的按键与下面配置的正则表达式不匹配(即没有找
到相关的菜单项),就认为是错误的。
·max-timeouts:即最大超时次数。
·inter-digit-timeout:为两次按键的最大间隔(毫秒)。如用户拨分机号1001时,假设拨了10,等3秒,
然后再按01,这时系统实际收到的号码为10(后面的01超时后没有收到),则会播放invalid-sound指定的声音文件
以提示错误。
·digit-len:说明菜单项的长度,即最大收号位数。在本例中,用户分机号长度为4位,因此我们使用4。
该菜单中有两个菜单项(Entry),第一个是在用户按0(digits="0")时,通过menu-exec-app执行一个
App。在此处它执行transfer,将来话转到default Dialplan中进行路由,并会最终转到分机1000。
如果来电用户知道被叫的分机号,则可以直接拨分机号,而不用经过人工转接,以节约时间。在本例中,第
二个菜单项中的digits正则表达式“/^(10[01][0-9])$/”会匹配用户输入的1000~1019之间的分机,也是转到
default Dialplan中进行路由,并最终转到对应的分机上。
如果来电用户按其他按键,则由于找不到匹配的菜单项进而提示错误(invalid-sound指定的声音),并提示
用户重新输入。
以上菜单设定好后,需要在控制台中执行reloadxml(或按F6键)使配置生效。
配置完成后就可以在控制台上进行如下测试(呼叫1001,接听后进入ivr菜单):
freeswitch> originate user/1001 &ivr(welcome)

4.修改dialplan拨号计划

[root@localhost freeswitch]# cd dialplan/
[root@localhost dialplan]# ls
default  default.xml  features.xml  public  public.xml  skinny-patterns  skinny-patterns.xml
[root@localhost dialplan]# vi default.xml 
<extension name="incoming_call">
         <condition field="destination_number" expression="^1234$">
             <action application="answer" data=""/>
             <action application="sleep" data="1000"/>
             <action application="ivr" data="welcome"/>
        </condition>
    </extension>

接下来拨打1234就可以听到ivr语音了

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FreeSWITCH是一个开源的电话软交换平台,它支持多种通信协议和编解码器。在FreeSWITCH中,可以通过mod_event_socket模块来实现WebSocket协议的支持。 要实现WebSocket协议,需要进行以下步骤: 1. 安装mod_event_socket模块:在FreeSWITCH中,可以通过mod_event_socket模块来实现与外部应用程序的通信。可以通过以下命令安装该模块: ``` sudo apt-get install freeswitch-mod-event-socket ``` 2. 配置mod_event_socket模块:在FreeSWITCH的配置文件中,需要添加以下内容来启用mod_event_socket模块: ``` <load module="mod_event_socket"/> <module name="event_socket"> <param name="listen-ip" value="127.0.0.1"/> <param name="listen-port" value="8084"/> <param name="password" value="ClueCon"/> </module> ``` 其中,listen-ip和listen-port参数指定了mod_event_socket模块监听的IP地址和端口号,password参数指定了连接时需要提供的密码。 3. 启动mod_event_socket模块:可以通过以下命令启动mod_event_socket模块: ``` fs_cli -x "event_socket start" ``` 4. 使用WebSocket连接到FreeSWITCH:可以使用任何支持WebSocket协议的客户端应用程序连接到FreeSWITCH。连接时需要提供以下信息: - WebSocket URL:ws://<FreeSWITCH IP>:<FreeSWITCH WebSocket端口号>/api - 认证信息:ClueCon 连接成功后,可以通过WebSocket协议发送命令给FreeSWITCH,并接收FreeSWITCH的响应。 以上是实现WebSocket协议的基本步骤,具体实现细节可以参考FreeSWITCH的官方文档。如果您有其他问题,请随时提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值