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 ;
mailbox=10000@device
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)
|