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之Dialplan编程一般规则

1. 变量设置 使用 Set() 来创建和修改变量: exten => 1002,1,Set(Favoriteanimal = "Tiger") exten => 1002,n,Set(Favor...
  • yuesichiu
  • yuesichiu
  • 2014年08月05日 15:49
  • 3416

asterisk拨号规则

原文地址:asterisk拨号规则作者:胡思乱想的磊子asterisk拨号规则                       --Leizi 一、前言     本文档以asterisk-1.4.32为基...
  • u013132673
  • u013132673
  • 2016年09月18日 08:47
  • 825

asterisk拨号规则

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

asterisk用户管理方案

ubuntu环境下安装asterisk后,其配置文件 “extensions.conf” 包含了Asterisk的拨号方案(dial plan)。它的所有操作的控制和执行流程...
  • xiazhao1234
  • xiazhao1234
  • 2012年06月29日 17:20
  • 987

asterisk拨号规则

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

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

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

Solr 总结

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事...
  • t4904
  • t4904
  • 2015年06月15日 18:00
  • 713

有关html的学习

HTML文档制作不是很复杂,且功能强大,支持不同数据格式的文件镶入,这也是WWW盛行的原因之一,其主要特点如下:   1 简易性,HTML版本升级采用超集方式,从而更加灵活方便。   2 ...
  • yingzhaom
  • yingzhaom
  • 2012年05月30日 00:18
  • 2012

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

location 匹配规则 语法规则 location [=|~|~*|^~] /uri/ { … } 模式 含义 location = /uri = ...
  • qq_15766181
  • qq_15766181
  • 2017年06月01日 11:29
  • 1234

asterisk拨号规则

原文地址:asterisk拨号规则作者:胡思乱想的磊子asterisk拨号规则                       --Leizi 一、前言     本文档以asterisk-1.4.32为基...
  • u013132673
  • u013132673
  • 2016年09月18日 08:48
  • 111
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Asterisk 拨号计划之匹配规则和优先级详解
举报原因:
原因补充:

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