fxsks=1
;定义fxs端口采用通道1以ks信令协议
;fxoks=2
;定义fxo端口采用通道2以ks信令协议
loadzone=us
defaultzone=us
|
[trunkgroups] ;定义一个主干组
; define any trunk groups
[channels] ;硬件通道和他们选项信令方式.
; hardware channels ;硬件通道
; default ;默认
busydetect=yes ;增加这两行,要不FXO口不能检测到挂机信号。
busycount=5
usecallerid=yes ;设置来电显示
hidecallerid=no ;设置去电不隐藏号码
callwaiting=yes ;设置呼叫等待
threewaycalling=yes ;开启三方通话(先闪断,再呼叫第三方,再闪断,就可以实现三方通话)
transfer=yes ;转叫前转(需要三方通话支持)
echocancel=yes ;回声消除
echotraining=yes ;回音练习(会话前发个声音,用于测试回声)
; define channels ;定义通道
context=from-test ; Context内执行指令需要在extensions.conf内定义 [from-test]
signalling=fxs_ks ;FXO通道使用FXS信令
channel => 2 ; PSTN放在端口2上
|
[root@ask asterisk]# vi /etc/udev/rules.d/50-udev.rules
#在末尾添加上以下
KERNEL="zapctl", NAME="zap/ctl"
KERNEL="zaptimer", NAME="zap/timer"
KERNEL="zapchannel", NAME="zap/channel"
KERNEL="zappseudo", NAME="zap/pseudo"
KERNEL="zap[0-9]*", NAME="zap/%n"
|
[from-test]
exten => s,1,Answer()
exten => s,n,Echo()
|
[general]
context=default
srvlookup=yet ;建立一个逻辑和可解析地址的方法,你可以达到这个地址,还可以获取DNS很多好处
[10000]
username=10000 ;用户名
type=friend ;可以定义用户(user)\端(peer)\朋友(friend)
secret=123456 ;认证密码
record_out=Always;去电录音Adhoc须要时,Never从不,Always总是
record_in=Never ;来电录音
callgroup ;呼叫组,默认为"1"
pickupgroup ;代接组
disallow ;不允许编码
allow ;允许编码
port=5060 ;端口号
qualify=yes ;监视Asterisk服务器与电话之间是否延时(默认2,000可达;yes可替换毫秒)
context=default ;指令的地点
host=dynamic ;要求号码要注册,以便Asterisk如何找到电话.(static则不需要注册)
dtmfmode=rfc2833 ;
callerid=test1 <10000>
canreinvite=no ;
|
[general] ;至少需要一个主要段落,主要定义IAX协议的相关设置.
jitterbuffer=no
register => remote_number:password@domain ;注册到远程服务器上,告诉服务器当前位置(互联网位置)在哪
[REC_SERVER]
type=user ;用user来定义呼入呼叫的类型
context=incoming ;进行呼入呼叫鉴定
auth=rsa
inkeys= ;公钥,是Asterisk标准
通过extensions.conf设置一个incoming的context:
[incoming]
exten => remote_number,1,Dial(SIP/number) ;拨打远程号码时(呼入)转移到number(内部)号码上
|
[REMOTE_SERVER]
type=peer ;用peer定义呼出类型
host=my.receiving.server.ca ;接收服务器域名或IP地址
username=number ;接收服务器认证用户(账户号码)
secret=password ;接收服务器认证密码(账户密码)
qualify=yes ;不时检查远端的服务器是否响应用
disallow=all ;用于复位原来设置的所有编码信息
allow=gsm ;支持gsm编码
allow=libc ;支持libc编码
allow=g726 ;支持持g726编码
****使用disallow复位原来设置的所有编码信息.再重新设置支持的编码,优先级从高到低
|
[to_remove]
exten => remove_number,1,Dial(IAX2/REMOVE_SERVER/number)
|
extensions的名字或号码
priority(每个extension可以有多个步骤,步骤的编号称作priority)
|
exten => name,priority,application()
|
exten=>50001,1,Answer() #编号为1的priority,执行接听电话
exten=>50001,2,Hangup() #编号为2的priority,然后挂电话
|
exten => 601,1,Dial(Zap/1&SIP/50000&IAX/60000)
|
exten => 601,1,Dial(SIP/50000,30,Ttwr)
|
exten => 602,1,Dial(Zap/1/5732381)
|
exten => 601,1,Dial(SIP/60000,,T)
或
exten => 601,1,Dial(SIP/60000)
|
[test]
exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 601,1,Dial(Zap/1,30,Ttrw) exten => 601,2,Playback(vm-nobodyavail) exten => 601,3,Hangup() exten => 601,102,Playback(tt-allbusy) exten => 601,103,Hangup() exten => 602,1,Dial(SIP/50000,30,Ttrw) exten => 602,2,Playback(vm-nobodyavail) exten => 602,3,Hangup() exten => 602,102,Playback(tt-allbusy) exten => 602,103,Hangup( ) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(test,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup() |
[globals]
80000=Zap/1
或
[internal]
exten => 123,1,SetGlobalVar(80000=Zap/1)
|
exten => 601,1,Set(80000=Zap/1)
|
[globals]
PSTN=Zap/1
TEST=SIP/80000
[test]
exten => s,1,Answer()
exten => s,2,Background(enter-ext-of-person)
exten => 101,1,Dial(${PSTN},10)
exten => 101,2,Playback(vm-nobodyavail)
exten => 101,3,Hangup()
exten => 101,102,Playback(tt-allbusy)
exten => 101,103,Hangup()
exten => 102,1,Dial(${TEST},10)
exten => 102,2,Playback(vm-nobodyavail)
exten => 102,3,Hangup()
exten => 102,102,Playback(tt-allbusy)
exten => 102,103,Hangup()
exten => i,1,Playback(pbx-invalid)
exten => i,2,Goto(incoming,s,1)
exten => t,1,Playback(vm-goodbye)
exten => t,2,Hangup()
[default]
exten => 101,1,Dial(${PSTN},,r)
exten => 102,1,Dial(${TEST},,r)
|
X
:匹配 0-9 的任何数字;
Z
:匹配 1-9 的任何数字;
N
:匹配 2-9 的任何数字;
.
(句号)通配符,匹配一个或多个字符;
[15-7]:匹配1,5,6,7;
|
exten => _9XXXXXXX,1,SayDigits(${EXTEN})
;SayDigits()应用会把所拨的8位extension读出来
exten => _9XXXXXXX,1,SayDigits(${EXTEN:1})
;只读出来后7位数,其中"1"表示不拨前面1位数
exten => _9XXXXXXX,1,SayDigits(${EXTEN:-1})
;只读出来最后1位,其中"1"表示只拨出最后1位数
|
---本地去话拨号---
[outbound-local]
ignorepat => 9
exten => _9NXXXXXX,1,Dial(Zap/1/${EXTEN:1})
exten => _9NXXXXXX,2,Congestion()
exten => _9NXXXXXX,102,Congestion()
---再加入紧急电话拨号---
exten => 9119,1,Dial(Zap/1/119)
exten => 119,1,Dial(Zap/1/119)
exten => 9110,1,Dial(Zap/1/110)
exten => 110,1,Dial(Zap/1/110)
---长途电话拨号---
[outbound-long]
exten => _90NXXNXXXXXX,1,Dial(Zap/1/${EXTEN:1})
exten => _90NXXNXXXXXX,2,Congestion()
exten => _90NXXNXXXXXX,102,Congestion()
|
[internal]
include => outbound-local
include => outbound-long
exten => _80XXX,1,Dial(SIP/${EXTEN},30,r)
exten => _80XXX,2,Playback(vm-nobodyavail)
exten => _80XXX,3,Hangup()
exten => _80XXX,102,Playback(tt-allbusy)
exten => _80XXX,103,Hangup()
|
$[expression]
$[${COUNT} + 1]
$[${COUNT} / 2]
;
引用变量
,
必须把这个变量名用花括号
"{}"
括起来
,
而且在前面加上美元符号
"$"
标示出来
|
${FUNCTION_NAME(argument)}
|
${FUNCTION_NAME(${FUNCTION_NAME(argument)})}
|
exten=>123,1,set(TEST=example) ;赋值example变量给TEST
exten=>123,2,saynumber(${LEN(${TEST})}) ;计算出变量TEST长度,并读出长度数
结果是:7
|
exten=>s,1,set(TIMEOUT(digit)=30)
|