- 论坛徽章:
- 0
|
可以简单地这么理解,在Asterisk系统上可连接两种设备范围,一为中继,或称外线、上端;二为分机或称内线。
现在我们假设外线设备为一张FXO卡,通道为zap/1,有若干ip话机以sip账号注册到系统中,通道为sip/800、sip/801等。又假设zap/1和sip/800、sip/801的context都是office
在/etc/asterisk/extensions.conf中对office的定义如下:
[office]
;s定义了zap/1通道的行为
;也就是说zap/1通道来电时进入s处理流程,这里直呼sip/800话机
exten => s,1,Dial(sip/800,60)
exten => s,2,Hangup
;这里定义了分机互打的规则
;也就相当于定义了内线号码
;如果分机拨501就呼叫sip/801通道
;分机账号为sip/801的分机号是501,要打电话给它就拨501
exten => 501,1,Dial(sip/801,60)
exten => 501,2,Hangup
;同上,相当于账号为sip/800分机的分机号为500,要打电话给它就拨500
exten => 500,1,Dial(sip/800,60)
exten => 500,2,Hangup
;一样是处理分机送号的规则
;定义9字头加外线号码打外线
;比较复杂一点,看我一一道来
;9X.前面的下划线表示后面的字符是特殊符号,比如在C语言的printf函数输出时,\n是回车符,n就是字符n,这里用下划线作为转义符
;如果没有这个下划线,那拨号的时候就很麻烦啦,意思是你要透过键盘输入这几个符号,你见过电话机上有X键和.键吗?
;当字符X是特殊符号时,表示数字1-9,意思是不可以打长途哦,要打长途就用N,表示数字0-9
;X后面的点也是特殊符号,表示任意多个任何字符
;${EXTEN}这是通道变量,表示你拨的号码,比如你拨号910000,那${EXTEN}的值为91000
;${EXTEN:1}这里1是偏移量,表示从第一个数字之后开始的值,也就是10000,这才是你要透过zap/1送出去的真正的号码呀
;9是出局字头,透过偏移量就可以去掉
exten => _9X.,1,Dial(zap/1/${EXTEN:1},60)
exten => _9X.,2,Hangup
exten => i,1,Playback(exten-invalid)
exten => i,2,Hangup |
|