《FreeSWITCH: VoIP实战》:使用 XML 建立 IVR

       IVR的全称的Interactive Voice Response,就是我们经常说的电话语音菜单。FreeSWITCH支持非常强大的语音菜单──你可以写简单的XML,或更灵活的Lua,当然还有Event Socket,Erlang Socket等等。

  这里,简单介绍一下XML。其实语音菜单说来也简单,说难也难。让我们先来一个感性的认识--其实,FreeSWITCH默认的配置已包含了一 个功能齐全的例子,随便拿起一个分机,拨5000,就可以听到菜单提示了,当然,默认的提示是英文的,大意是说欢迎来到FreeSWITCH,拨1进入 FreeSWITCH会议;拨2进入回音(echo)程序,这时候可以听到自己的回音;拨3听等待音乐(MOH,Music on Hold),拨4会转到FreeSWITCH开发者Brian West的SIP电话上;拨5你会听到一只尖叫的猴子;拨6进入下级菜单;拨9重听,拨1000-1019之间的号码则会转到对应分机。

  最简单的菜单

  感受这些之后,让我们先来配置一种最简单的情形。一些廉价的企业小交换机通常只能提供这点功能──“您好,欢迎致电XX公司,请直拨分机号,查号请拨 0”。在此,我们假定使用FreeSWITCH的默认配置,分机号为1000-1019,前台分机号为0,拨0则转人工台,查号或转接其它分机。

  系统默认的配置文件存放在/usr/local/freesiwtch/conf/autoload_configs/ivr.conf,配置 文件是XML格式,菜单放到 中,而每一个即是一个菜单。并且,每个menu应该有一个唯一的名字(name),以便在拨号计划(dialplan)中引用。

<configuration name="ivr.conf" description="IVR menus">
  <menus>
    <menu name="demo_ivr">
    </menu>
  </menus>
</configuration>

好,我们先来实现上述最简单的menu:

<menu name="welcome"
    greet-long="custom/welcome.wav"
    greet-short="custom/welcom_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>

  我们指定菜单的名字是welcome,greet-long即为最开始播放的语音--“您好,欢迎致电XX公司,请直拨分机号,查号请拨0”,该语音 文件默认的位置应该是/usr/local/freeswitch/sounds/,所以,您应该事先把声音文件录好,放到custom /welcome.wav(当然,你也可以使用其它路径,如/home/your_name/ivr/welcome.wav)。并且,由于PSTN交换 机都是使用PCM编码,所以,welcome.wav文件的格式应为单声道,8000HZ。

  如果用户长时间没有按键,刚应重新提示拨号,但重新提示应该简短,如“请直拨分机号,查号请拨0”。所以,可以录制这么一个声音文件放到custom/welcome_short.wav。

  invalid-sound:如果用户按错了键,则会使用该提示。如果你安装时指定了make sounds-install,则该文件应该用默认存在的,只是它是英文的,如果你需要中文的提示,可以自己录一个放到custom中。

  exit-sound:不说也知道,最后菜单退出时(一般时超时),会提示Good Bye。

  timeout指定超时时间;max-failures容忍用户按键错误的次数。max-timeouts即最大超时次数。inter- digit-timeout为两次按键的最大间隔(毫秒),如用户拨分机号1001时,如果拨了10,等2秒,然后再按01,这时系统收到的号码为10, 则会提示错误 invalid-sound。

  digit-len说明菜单项的长度,在本例中,用户分机号为4位。

  该menu中有两个选项,第一个是在用户按0时, menu-exec-app执行一个命令(参见mod_command),在此处它执行transfer,将来话转到分机1000。

  如果来电用户知道分机号,则可以直接拨分机号,而不用经过前台转接,节约时间。在该例中,正则表达式"/^(10[01][0-9])$/" 会匹配用户输入1000-1019之间的分机,

  以上菜单设定好后,需要在控制台中执行 reloadxml (或按F6)才可以配置生效。

  配置完成后就可以在控制台上进行测试:

  FS> originate user/1001 &ivr(welcome)

  测试成功后,当然,你可能需要先把用户来话转到语音菜单。根据配置不同,用户来话的接听有多种配置方式,一般来说,来话会先到达public dialplan,所以,你可以在conf/dialplan/public.xml中加入一个extension:

    <extension name="incoming_call">
      <condition field="destination_number" expression="^你的DID号码$">
 <action application="answer" data=""/>
 <action application="sleep" data="1000"/>
 <action application="ivr" data="welcome"/>
      </condition>
    </extension>

  这样,如果有外部呼叫进来,就可以听到语音菜单了。

  默认菜单简介

  明白了以上简单的菜单,就很容易理解更复杂一点的配置了。系统默认提供了一个名字demo_ivr的菜单。最初的语音提示greet- long/greet-short是用phrase实现的。phrase是用XML定义的一些短语,最终也是播放声音文件,但在多语言系统中会更灵活。在 此,我们不讨论phrase,你可以简单的认为它就是一个声音文件。

  菜单选项大多都是根据用户按键使用menu-exec-app执行相应的命令,上面已经讲到了。menu-sub表示会执行一个下级菜单,这样,在下级菜单中(此外是demo_ivr_submenu)便可以用menu-top来返回上级菜单。

  基本上就这么多。通过设置多级菜单,以及与dialplan配合,根据不同的情况进行跳转,可以实现相当复杂的一些功能。如果这些还不够,可以尝试一下更高级的LUA菜单或Event Socket。

  调试

  打开控制台或fs_cli,按F8将loglevel调到debug状态,能看到详细的执行过程。如果看到红色的(如果你的控制台不支持彩色,看ERROR的吧),可能是配置错误,不过一般会是声音文件找不到之类的,检查相应路径下是否有对应的声音文件。

### 回答1: 《FreeSWITCH: VOIP实战》是一本非常好的技术书籍,它详细介绍了如何使用FreeSWITCH构建高可用性、高性能的VoIP解决方案。该书的作者是Anthony Minessale、Darren Schreiber和Michael S. Collins。 本书的目的是教读者学会使用FreeSWITCH构建功能丰富、灵活可扩展的电话系统。该书从基础概念开始,包括了FreeSWITCH的架构、模块、配置和调优等方面的内容。接着,书中介绍了如何使用FreeSWITCH来实现常见的电话功能,例如IVR、语音信箱、音频会议、呼叫中心、呼叫转移和呼叫路由等。 此外,本书还涵盖了FreeSWITCH的高级功能,例如多租户支持、安全性、彩铃、录音和统计数据收集等。书中还提供了大量的示例代码和配置文件,读者可以参考并直接应用到实际项目中。 总的来说,《FreeSWITCH: VOIP实战》是一本非常有用的技术书籍,它涵盖了FreeSWITCH的方方面面,非常适合VOIP开发人员、系统管理员和网络工程师阅读。在阅读完本书后,读者将能够熟练地使用FreeSWITCH构建高性能、高可用性的VOIP系统,从而为企业提供更好的通讯服务。 ### 回答2: 《FreeSWITCH: VoIP实战》PDF是一本介绍FreeSWITCH开源软件的VoIP技术书籍。它由Anthony Minessale、Darren Schreiber和Michael S. Collins所著。本书的读者目标是想要深入了解FreeSWITCH工作原理和使用方法的VoIP从业人员。 本书首先介绍了VoIP的基础知识和一些常用的协议和标准。接着,书中详细讲解了FreeSWITCH架构和组件,如何安装、配置和管理FreeSWITCH,以及如何使用FreeSWITCH实现呼叫控制、音频处理、录音等功能。此外,该书还介绍了FreeSWITCH的高级应用,如群组呼叫、多方会议、IVR等。 《FreeSWITCH: VoIP实战》PDF的亮点在于其深入浅出的讲解方式和丰富的案例分析。书中许多实例都是作者亲身经历的,能够帮助读者更好地理解FreeSWITCH的工作原理和解决实际问题的方法。此外,该书还在最后一章中介绍了一些FreeSWITCH的扩展和集成,如何与Asterisk、Kamailio等软交换平台交互,以及如何使用WebRTC实现浏览器间的实时音频通话等。 总之,如果您是一名VoIP从业人员,希望深入了解FreeSWITCH技术并应用于实际项目中,那么《FreeSWITCH: VoIP实战》PDF无疑是一本值得阅读的书籍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值