首页 > 新闻 > 专家观点 >

《FreeSWITCH 1.2》:支持页面呼叫控制

2014-05-04 16:51:00   作者:   来源:CTI论坛   评论:0  点击:


  相对比较新的一个模块mod_httapi 可以支持用户更加动态控制IVR和其他的应用程序。配合这个模块,通过用户输入的不同可以生成自定义的IVR。FreeSWITCH的mod_httapi采用了一个简单的HTTP POST操作对页面应用程序发送各种信息,通过RESTful的实现方式来控制FreeSWITCH 呼叫流程。在中国章节,我们将讨论以下内容:

  · HTTAPI 标记语法

  · HTTAPI 配置

  · 基本HTTAPI 操作,包括httapi 拨号规则应用

  · 一个PHP样本库,使得HTTAPI 应用开发更加简单

  当用户阅读这个章节时,必须牢记mod_httapi 使用了一个循环呼叫处理的流程;一个单个的呼叫,对于web服务器来说,有多个重复的HTTP POST请求。

  这样给了应用开发人员更大的灵活性来设计他们的应用模块。没有必要在单个响应中生成所有可能的呼叫逻辑。一个被httapi应用控制的呼叫将执行在HTTP中指定的响应命令,然后对web服务器发送另外一个HTTP POST请求。实际上,这个httapi 应用获得从web 服务器端来的指令,处理这些指令,然后对web 服务器端说,"我已经完成了那些指令,下一个指令是什么?"。这个循环会一直进行,直到呼叫结束或这个呼叫被转接到其他流程,超出了httapi 拨号规则应用的控制。

  HTTAPI语法

  HTTAPI标志符和原始的XML语法没有什么不同。大部分情况下,HTTAPI的语法构成类似于这样的:

  <document type="text/freeswitch-httapi">
  <variables/>
  <params/>
  <work/>
  </document>

  Document是从web 服务器HTTP POST请求响应中返回的。

  一个HTTAPI 响应必须有text/xml的content type。所有HTTAPI 响应必须包括document 标签,这个标签的类型属性是text/freeswitch-httapi。在响应的对端,指定的响应中,用户可以使用任意一个或者所有的子标签。支持的子标签如下:

  · params: FreeSWITCH对每个web服务器请求发送的POST params(那是,"parameters") 。用户可以使用<params> 标签通知FreeSWITCH传递自定义的POST params。

  · variables: 这些变量是正在呼叫 httapi拨号规则应用的通道变量。<variables> 标签支持用户通道变量,这些变量可以在FreeSWITCH 拨号规则中使用或读回到httapi 下一个请求中。(本章后续将详细讨论。)

  · work: 很多有兴趣的事情在这里发生。有很多不同的action标签可以作为<work>标签的子标签使用,通过这些标签来控制FreeSWITCH正在进行的呼叫:在后台进行发送日志信息,播放语音文件,启动自动语音识别,采集用户输入的DTMF按键数据,和其他的控制。支持的action标签和属性响应的每一个action将在下一个部分进行详细讨论。

  以下许多的actions 可以对用户的程序添加绑定,通过这样的方式来获得FreeSWITCH采集的信息,然后传递这些信息到用户的应用程序中。这样的处理方式非常类似于页面的HTML格式。每一个元素都有一个名称,任何相对这个元素采集的数据将作为同名称的POST param 返回到用户的页面程序中。这个绑定将支持一个正则表达式来匹配返回的结果,然后通过可选的数据前缀从输入的值中来提取出最后的结果。

  Work actions

  HTTAPI work actions 在这个部分进行了描述。在以下的定义中,*DATA* 是标签tag 的content (格式为, <tag>*DATA*</tag>)。

  所有的work actions 至少支持两个two标签:

  · action: 修改新默认目标URL。

  · temp-action: 修改URL提交下一个请求。后续的请求将使用默认的URL或者使用在action标签指定的URL。

  以下是一个work actions列表和他们的描述:

  playback

  Playback 播放一个文件,标签支持可选采集用户输入。它具有以下属性:

  · file: 播放语音文件的路径
  · name: 指定的Param名称来保存结果
  · error-file: 无效输入时,播放错误提示文件
  · digit-timeout: 播放文件完成后的等待输入的时间 (输入绑定时)
  · input-timeout: 多数字输入时,等待更多数字时间设置
  · loops: 播放语音文件的最多次数 (输入绑定时)
  · asr-engine: 启用自动语音识别(ASR)引擎
  · asr-grammar: 使用的自动语音识别语法(ASR)
  · terminators: 输入结束键,一旦系统收到这个按键消息,立即停止采集,马上处理采集的结果数据。

  未完待续······

 

相关阅读:

分享到: 收藏

专题