首页 > 新闻 > 专家观点 >

《FreeSWITCH 1.2》:高级拨号规则概念

2014-04-25 13:59:33   作者:   来源:CTI论坛   评论:0  点击:


  在上面的章节中,我们已经学习了FreeSWITCH XML配置文件的强大。并且用户学习了拨号规则的入口和使用XML来设置基本的配置。在这一章中,我们继续进一步研究拨号规则的基本结构,XML拨号规则的功能,如何通过基本的功能实现复杂的结果。

  一些词条可能在这一章中重复出现,但是我们还要介绍一些已经在以前章节涉及的一下基本内容,包括基本的变化规则功能,并且我们还要解释拨号规则系统如何工作,为什么这样工作。通常情况下,很多用户使用了FreeSWITCH的XML拨号规则,但是没有真正了解其中的原理,导致系统不能拓展或无法排查复杂的问题。这一章节的目的是让用户成为一个FreeSWITCH专家,能够了解他们开发的拨号规则是如何工作的,为什么这样工作。

  在这个章节中,我们假设用户已经有了FreeSWITCH的基本知识,对路由和处理呼叫和XML配置文件有了基本的了解。如果用户安装配置了FreeSWITCH的演示系统,并且测试了一些基本的呼叫,那么对用户在这一章节的学习会非常有帮助。

  在这一章节,我们将讨论以下内容:

  ·拨号规则总览
  ·基本拨号规则概念
  ·解析和执行
  ·XML 拨号规则模块
  ·XML 拨号规则预处理
  ·使用变量
  ·通过正则表达式测试变量
  ·传递变量到其他的legs
  ·拨号规则中的Macros
  ·避免陷阱
  ·多分机设置
  ·XML extensions 特别属性
  ·XML的可选方法

  拨号规则总览

  FreeSWITCH的拨号引擎是一款相当灵活的软件。 如果用户有使用软交换的背景,用户可能了解一些拨号规则的概念。用户通过系统本身的语言预设了这些流程,规定了一些静态的逻辑语句来执行一些指令 (他们是 应答呼叫,播放文件,采集拨号数字和抓接电话)。如果任何功能不能通过软交换预设的命令或有效逻辑语句来实现,那么就没有其他的办法可以实现这个任务。

  在FreeSWITCH环境中, 拨号规则的处理是通过可加载的模块来完成。当处理呼叫时,模块的逻辑可以被调用来完成这些任务,同时用户可以根据自己的业务需求,加载多个模块来支持不同的处理方式。这是FreeSWITCH区别于其他软交换的地方,也是经常被忽略的地方。通过拨号规则处理的模块化设计,创建了一种非常自由灵活的录音呼叫方式。用户可以开发自己的模块或调用可选的模块来处理用户自己的拨号规则,并且为用户自己的拨号规则创建一套新的命令集。和其他的软交换系统相比,FreeSWITCH可以支持用户通过外部的脚本语言来处理自己的拨号规则。FreeSWITCH所有模块都是使用C语言编写,所以集成方便,并且允许用户使用内部的API 接口和链接库(如有必要)无需调用外部的脚本语言。这样的话,在处理呼叫时,FreeSWITCH将占用非常少的系统资源。

  为什么拨号规则处理实行模块化设计呢?首先需要理解的是为什么我们需要一个拨号规则。

  让我们现在忘记程序语言,回顾一下软交换的原理。如果我们分解一下大部分的语音系统,我们会发现每个通话都按照一个逻辑流程图来执行。事实上,如果我们问客户关于电话业务的需求,他们经常也会回答是或否,或者指定一个相应的执行指令。客户的业务需求就可以转换成一个基本的呼叫流程图。无论用户正在做什么,如果用户通过图例的形式来表达整个业务需求的过程时,其实用户已经开始设计拨号规则了。本质上说,用户已经在构想一个拨号规则的模块来满足业务需求。

  让我们拿一个普通的呼叫流程作为举例,然后分拆成更小的部分。进一步观察这个举例,我们可以看到在这个流程图中,我们设置了很多逻辑假设,拨号规则必须处理这些假设的逻辑语句。例如,用户为了对是否是工作时间这个假设做一个判断,用户必须对比工作时间或下班时间。为了判断用户是否输入了按键1,拨号规则处理机制必须支持解析按键式电话机输入。基于条件对比,用户可以让系统执行相应的命令-转接电话,播放语音,挂机,等等。所有这些要求会组成一些逻辑命令,拨号规则会使用这些命令执行电话流程。在很多系统环境中,通过编写一些晦涩难以理解的配置代码来设置一个逻辑判断,这样的方式具有很多局限性,也可能让用户发疯。在FreeSWITCH环境下,用户可以通过自己熟悉的语言来编写这些逻辑。
  
  未完待续······  

相关阅读:

分享到: 收藏

专题