Asterisk 拨号计划之匹配规则和优先级详解

转载 2015年07月09日 09:47:43

1. Asterisk拨号计划简介
    自己查资料

2. Asterisk配置
    先添加SIP分机 801,用软电话注册分机后,修改801分机的context=test-inc ,因为我们下面要探究Asterisk 基于类似正则表达式的匹配以及include=>包含指令优先级。在asterisk拨号计划配置文件extensions.conf 中加入如下拨号规则

[test-inc]
include => inc1
include => inc2
include => inc3
exten => _.,1,NooP(==00==)
[inc1]
exten => _33XX,1,NooP(==11==)
[inc2]
exten => _22.,1,NooP(==22==)
[inc3]
exten => 3333,1,NooP(==3333==)

3. 先直接给出结论
    1)在同一个context中,对于正则匹配的规则,分机越详细的规则 对应的APP就会被优先匹配执行。例如:
exten=> _X5X.,n,APP1 和 exten=> _15X.,n,APP2 ,后面的正则匹配表达式“_15X.” 明显就比前面的要详细和明确,所以对于 exten为 1581000000的手机号,那么优先执行后面的拨号计划,也就是执行APP2

    2)容器类context(也就是有include=>包含子context的上下文),比如上面的[test-inc]中的明确给出的拨号计划语句,总是比它用 include=> 指令包含的context中的优先级要高,即使子context里面的正则匹配比它的父context还要详细和明确,只要拨号的分机extension能够匹配父context中的分机正则表达式分机,那么拨号计划的流程绝对不会执行到子context。 例如上面的例子中,父context 有一个 exten => _.,1,NooP(==00==) 这样的_.的全部匹配的分机正则表达式,那么所有sip分机配置中凡是设置了context=test-inc 的分机拨号后都只能执行NooP(==00==)。因为_.是万能匹配的,所有的分机都可以在父context [test-inc]中找到匹配,所以子context中的拨号规则永远也不会执行。
测试:请用801拨打3333测试,你会发现 asterisk CLI> 输出的是执行NooP(==00==) ,而不是 NooP(==3333==) ,请自行测试。
另外:如果父context中匹配不了分机拨打的extension,那么asterisk才会考虑去匹配子context中的规则。

    3)某个父context中的include=> 中的优先级是 从上到下而递减的。 举例来说: [test-inc] 中匹配优先级inc1 > inc2 > inc3 。具体体现在某个拨号规则,在父context中没有匹配,那么aterisk将会查找include=>子context 中的拨号规则去寻求匹配,但是是有优先级顺序的。比如某个来电的分机匹配了 inc1中的extension规则,即使在 inc2,inc3中有更加明确的正则表达式匹配,结果也不会去匹配inc2或者inc3中的规则的。
注释掉上面的“exten => _.,1,NooP(==00==)” ,然后重载拨号规则,再拨打3333 ,你将会发现执行的是[inc1]中的 “NooP(==11==)” 而非“[inc3]”中的 “NooP(==3333==)” 。请自行测试。

4. 明白了上述几点,也就会明白为什么FreePBX生成的拨号规则总会一个 include => XXXX-custom 放在每个context的第一行,而且FreePBX会有调整出局路由优先级的概念了


相关文章推荐

Asterisk权威指南/第六章 拨号计划基础

拨号计划是你的Asterisk系统的心脏。它定义了呼叫是如何流进和流出系统的。拨号计划用一种脚本语言写成的,Asterisk依照其中的指令响应外部触发。和传统电话系统相比,Asterisk的拨号计划是...

asterisk拨号规则

原文地址:asterisk拨号规则作者:胡思乱想的磊子asterisk拨号规则                       --Leizi 一、前言     本文档以asterisk-1.4.32为基...

asterisk拨号规则

本文转载自http://www.cnblogs.com/einyboy/archive/2012/10/17/2727792.html 一、前言     本文档以asterisk-1.4....
  • ccfxue
  • ccfxue
  • 2016年11月25日 15:22
  • 419

ASTERISK 拨号方案基础

原文地址:拨号方案基础">ASTERISK 拨号方案基础作者:sun快乐  摘录> 拨号方案定义了Asterisk如何处理来话和去话,它由指令和步骤列表组成,Asterisk按步骤来执行这些指令.与...

asterisk 系统变量,研究拨号规则的需要用到

http://www.voip-info.org/wiki/view/Asterisk+Detailed+Variable+ListAsterisk standard channel variable...

asterisk拨号规则

asterisk拨号规则 --刘焱磊 一、前言 本文档以asterisk-1.4.32为基础写作而成,可能和其他版本有些区别。其中参考了一些别的书籍和文章。因为写的比较仓促,而且基本都是晚上写的...

asterisk拨号方案中应用使用详解

  • 2012年06月19日 09:34
  • 106KB
  • 下载

nginx匹配规则说明以及匹配的优先级

location 匹配规则 语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = ...

Asterisk拨号方案常用函数说明

Asterisk拨号方案常用函数说明 (1)Answer() 应用于接听正在响铃通道,它不需要任何参数.   (2)Playback() 应用在通道上播放事先录制好的语音文件.指定一个文件名...

asterisk账号和拨号方案mysql存储(静态)

asterisk账号和拨号方案的静态存储相对动态的话,比较
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asterisk 拨号计划之匹配规则和优先级详解
举报原因:
原因补充:

(最多只允许输入30个字)