asterisk拨号规则(包含匹配规则说明)转

一、前言
    本文档以asterisk-1.4.32为基础写作而成,可能和其他版本有些区别。其中参考了一些别的书籍和文章。因为写的比较仓促,而且基本都是晚上写的,里面的内容逻辑性和语句没有仔细斟酌,就是想到什么写什么,难免有什么遗漏和错误的地方,大家发现请及时通知我修改。另外这是我第一次写技术性的文章还很嫩涩,算是一个开始,希望大家多多支持。

二、Asterisk dialplan 基本结构
    Asterisk dialplan 的语法可以分为四个关键点,也就是语法结构的四个组成部分,四个部分分别context ,extensionnum ,priority 和 action。由这四个组成部分dialplan的结构为:
  [context]
   exten => extensionnum,priority,action
    1、context
    context是指dialplan的流程块,整个dialplan就是由每个context的内容组成,他们协作完成整个asterisk命令逻辑的运转。context的名字必须放在中括号之中,比如PSTN外线打进系统所执行的流程我们都习惯叫from-pstn,在语法里面就写做"[from-pstn]"。所有属于这个流程的内容都写在这个下面。每一个命令都由换行符来隔开,也就是说每一行就是一个命令,每一行命令都必须由"exten => "(这个里面的空格可以没有)开头。流程的结尾就是遇到到下一个流程标识截止。
    2、extensionnum
    extensionnum是指流程块里面的流程匹配标识(也就是asterisk里面说的extension),这个匹配标识其实通常就是我们要拨的号码(当然这个匹配标识不光是数字也可以是字母或者一些特殊字符)。比如你拨分机101,而你设置的拨分机的流程块是dial-ext,那么asterisk就会在dial-ext流程块里面寻找能匹配101的流程,找到了就会执行。说到匹配大家就会想到通配符吧,哈哈,asterisk里面也有类似的通配符,下面我就介绍一下asterisk里面关于extension的通配符。
     X和x表示单个0-9的数字
     N和n表示单个1-9的数字
     Z和z表示单个2-9的数字
     .表示单个的任何字符和数字
     []中括号里面可以是你想任意的匹配的数字或者字母,比如你想匹配1、3或者6,那么你就可以这样[136]或者[1,3,6],在中括号里面还支持这样[1-8]是指匹配1到8的任意一个数字。
     当你的extensionnum中含有任何通配符的时候你就要用一个短的下划线"_"来作为extensionnum的开头除了这些以外asterisk还有一些特殊意义的匹配字符,
     s :是指Start extension,也就是当没有extension的时候就会执行这个流程(例如在模拟外线进线没有收到callerID的情况下就会转到这个extension来执行),另外在zapata.conf的channels段里面如果设定了immediate=yes程序就会自动找到s这流程来执行。
     t :是指timeout extension,也就是说如果等待用户输入超时后就会转到t这个流程来执行,在这里你可以设置一些提示音来告诉客户超时了。
     i :是指invalid extension,也就是说如果客户输入无效的时候会转到i这个流程来执行
     fax :是指fax calls,也就是说如果asterisk检测到传真信号的时候就会自动转到这个流程里面来执行。
     h :是指hangup extension,就是说呼叫终止后执行的流程,在这里通道已经终止,放音、发送DTMF等命令都不可用了,只能做一些呼叫结束后处理的一些工作。
     需要注意的是,不管你设置的流程是什么都是属于某个流程块的,在不相互包含的情况下,流程块与流程块之间是相互独立的,流程或者变量是不会冲突的。
    3、priority
    priority是指流程里面的命令的执行优先级,除了跳转的情况,都是按照priority值的之从小到大执行的。在流程里面你会经常看见"n"这个priority,它是指next也就是上一个priority+1.我们通常还会给某个priority取个名字,来方便我们流程跳转,也方便流程的阅读。语法是这样的 exten => extensionnum,priority(name),action ,name就是这个priority的名字。
     exten => _123409XX,1,GotoIf($[${EXTEN}=12340910]?ivr1:normal) 
     exten => _123409XX,n(normal),Dial(SIP/101)
     exten => _123409XX,n,Goto(end)
    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值