您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

Asterisk课堂-拨号规则中的Include使用方法

2017-01-03 10:23:50   作者:james.zhu   来源:CTI论坛   评论:0  点击:


\
  Asterisk 拨号规则的使用方式和C语言的格式基本类似,如果用户了解基本的C语言语法或者其他的开发语言的话,也非常容易了解拨号规则中的Include 使用方式。因为拨号规则涉及了非常多的业务逻辑,如果一个企业PBX的业务非常多,分机设置也很多的话,把所有的逻辑都在一个文件中编写是非常麻烦的,也不容易维护,所以需要把整个拨号规则分割成不同的文件。Include 使用方式支持了用户的这个要求。当然,因为包含了一些声明或者其他的文件,所以可能导致用户对呼叫执行的逻辑出现误判,呼叫流程发送错误。视频中介绍了Include中的几个拨号规则和执行的流程,请大家留意:
  现在我们根据Include 的语法,给大家归纳了几个应该注意的问题:
  • 语法和拨号规则逻辑要清晰。很多用户在编写拨号规则时没有注意编写拨号规则的一些基本的逻辑和语法,这样导致了很多问题。这些问题的根本原因就在于呼叫流程执行错误。通常来说,这些错误的发生是因为Include 声明的位置顺序发生了错误。在以下的图例中,拨号规则会首先判断拨打号码,然后根据Include context 来一步步查询最后匹配的语法。如果Include 的位置不对,拨号规则的执行顺序或者逻辑完全可能发生改变。希望大家一定要注意这些问题。
\
\
\

  • Inlcude 和Goto 命令之间的跳转。如果拨号规则中使用了Goto命令时,用户一定要注意Goto 跳转到位置。如果错误使用了跳转的命令,拨号规则完全可能执行了一个错误的流程。在Goto 跳转过程中以后要了解原来继承的context,并且注意在拨号规则中Goto命令中的context, 优先级等等问题。如下图例中,如果用户拨打 2 的话,在context_1 中没有找到2 号码,则会继续匹配include context_2, 最后在context_2 中找到了号码 2, 然后执行回放语音功能。当然,如果用户拨打 3 时也是类似的执行方式,拨号规则会查询第一个context,然后接下来查询Include context 中是否有包含的号码3, 如果匹配了号码3,则执行相应的呼叫规则。
\
\
  • Include context 和Include 文件的不同。Include 声明的执行方式比较容易理解,拨号规则按照逻辑流程一步步执行,看起来没有什么太疑惑的地方。Include context 会影响拨号规则的逻辑,而include file 则不会影响Asterisk 拨号规则的执行流程。Asterisk仅解析包含文件中的内容,然后把内容加载到拨号规则中。另外,大家要注意,Include 一个文件的格式和Include 一个context是不同的,包含文件时,必须加前缀#。
\
  总结,本章节简单介绍了Include 中包含context和包含文件的不同,也重点提示用户注意Include的位置顺序,还有Goto跳转时可能引起的逻辑错误。建议大家在编写拨号规则中的Include时要特别注意位置顺序Goto跳转的位置和继承关系,以免引起拨号规则的流程错误。

相关阅读:

专题