我自己翻译的,有什么错误,欢迎大家提出来,共同进步
SIP 配置说明
1. 介绍
extensions.conf中使用sip设备的语法是SIP/devicename,devicename名在下一节中说明。
如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNS SRV功能。
如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxyhostname形式,proxyhostname的定义在下面的章节说明。
2. 在CLI中的查询命令:
u sip show peers 显示所有的SIP peers(包括friends)
u sip show users 显示所有的SIP users(包括friends)
u sip show registry 显示注册到的主机状态
u sip debug 显示所有的Sip信息
u module reload chan_sip.so 重新装载sip的配置文件
3. 设备命名
命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:
1) Asterisk取出SIP From: address中的username,使用它来匹配系统中定义的type=user的的设备名。
2) Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的type=peer的设备。
不要混淆extensions和设备名的概念。设备需要一个唯一的名字。设备名不能用于电话号码。电话号码是拨号计划中的声明的一个extension。
注意:参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用。
4. 通用属性说明
[general] ;通用属性
context=default ;呼入电话默认使用的context
allowguest=no ; 允许或拒绝客户呼叫 (默认 yes)
allowoverlap=no ; 允许重叠拨号(默认yes)
allowtransfer=no ; 允许呼叫转接(默认yes)
realm=mydomain.tld ; 认证的领域。默认是asterisk,如果在asterisk.conf中设置了系统名称,
;该值就会默认成系统的名称,Realms设置必须全局唯一。一般可以设置
;为主机名或域名。
bindport=5060 ;asterisk监听的本地端口号。(SIP标准端口号5060) bindaddr=0.0.0.0 ;绑定的IP地址 (0.0.0.0所有地址)
srvlookup=yes ; 打开外呼的DNS SRV查找。注意,asterisk仅使用SRV记录中的第一
;个主机。该功能可以在拨号计划中使用SIP/username@domain形式通过
;域名拨打Internet上的SIp电话。
pedantic=yes ; 打开头信息中tags值检测,URIs和多行格式化头信息中国际字符转换等
;严格的SIP兼容性问题。(默认是no)
下面是关于TOS参数,可以参考doc/ip-tos.txt
tos_sip=cs3 ; Sets TOS for SIP packets.
tos_audio=ef ; Sets TOS for RTP audio packets.
tos_video=af41 ; Sets TOS for RTP video packets.
maxexpiry=3600 ; 注册和订阅的最大间隔-秒
minexpiry=60 ; 注册和订阅的最大间隔-秒(默认 60)
defaultexpiry=120 ; 默认注册间隔的时长
t1min=100 ; 消息到达录音服务器的最小折返时间,默认100 ms
notifymimetype=text/plain ; 修改在通知中消息MWI NOTIFY 的mime类型
checkmwi=10 ; peer检测语音邮箱的时间间隔
buggymwi=no ; Cisco SIP防火墙不完全支持MWI RFC。打开该选项时,向电话发送MWI时,也不会收到错误信息。
vmexten=voicemail ; 语音邮箱在拨号计划中的extension。用来设置MWI通知消息中的
;Message-Account信息,默认是asterisk。
disallow=all ; 先屏蔽掉所有的编码
allow=ulaw ; 打开允许的编码,按顺序引用
allow=ilbc ; 更多的选项,看文档 doc/rtp-packetization
下面参数设置了呼叫等待音乐的默认项,如果没有在拨号计划中使用Set(CHANNEL(musicclass)=whatever) 指定通道的呼叫等待音乐首选项,将会使用该值。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohinterpret=default
呼叫等到时,建议通道播放的等待音乐。这个选项可以使指定为全局的,也可以对单个user或peer设置。
mohsuggest=default
language=en ; 设置所有users/peers的语言,也可以对单个users/peers设置。
relaxdtmf=yes ; 宽松dtmf处理
trustrpid = no ; 是否信任远端ID(Remote-Party-ID)
sendrpid = yes ; 是否发送远端ID(Remote-Party-ID)
progressinband=never ; 是否产生呼入铃音。Never表示从来不适用呼入信号。可选值:yes, no, never。默认值never。
useragent=Asterisk PBX ; 修改user agent 字符串
promiscredir = no ; 如果设置为yes, 允许302 或 REDIR非本地SIP地址。注意,对本地
;系统做重定向操作会导致循环调用,asterisk并不支持这种操作。
usereqphone = no ; 如果设置为 yes, 会在uri 中增加";user=phone",使uri中包含一个合法
;的电话号码。
dtmfmode = rfc2833 ; 设置发送DTMF模式。默认:rfc2833
;其他选项:
; info : SIP INFO messages
; inband :按键的设备产生拨号音 (需要64 kbit 编码 -alaw, ulaw)
; auto : 默认使用rfc2833,如果远端不支持时会使用inband
compactheaders = yes ; 发送压缩的SIP头.
videosupport=yes ;打开视频支持。
maxcallbitrate=384 ; 视频呼叫的最大速率 (默认 384 kb/s)
callevents=no ; sip ua执行事件时产生管理事件
alwaysauthreject = yes ; 一个INVITE 或 REGISTER请求由于任何原因被拒绝时,总会使用同一
;个原因,用户名合法但密码不正确。而不会告诉请求者是否有这个
;user或peer。这样会减少攻击者扫描SIP账户的可能性。
g726nonstandard = yes ; 是否使用G726-32 协商,使用AAL2包次序来替代RFC3551(需要
;Sipura 和 Grandstream ATAs)的次序。AAL2与RFC3551的规则相反,
;会使用AAL2-G726-32协商。
matchexterniplocally = yes ; 如果本地设置与外部设置相同,仅替代externip 或 externhost.
dynamic_exclude_static = yes ; 不允许动态主机使用静态主机的IP地址注册。这将避免使用相同
;IP注册的错误。
contactdeny=0.0.0.0/0.0.0.0 ; 拒绝所有主机的联络
contactpermit=172.16.0.0/255.255.0.0 ; 只能有一部分IPs可以注册到该服务器
如果设置了regcontext,将会为一个是有us注册和反注册并且有regexten=配置项目的用户动态创建和销毁一个NoOp priority1extension。可以使用&指定多个context。如果没有指定'regexten' ,将会使用注册peer的regexten或名字。如果指定了多个context,则必须在regexten中使用@来指定。在regexten中也可以使用'&'来指定多个。Regexten中也可以使用模式匹配。
regcontext=sipregistrations
5. RTP定时器
这些是当前音频和视频流使用的定时器。RTP超时仅仅应用于音频通道。该属性可以全局设置,也可以对每一个设备设置。
rtptimeout=60 ;如果60秒之内音频通道没有RTP或RTCP活动,将挂断电话。
;主要使用在通话中对方掉电或是老人忘记挂电话的情况。 ;
rtpholdtimeout=300 ; 如果300秒之内音频通道没有RTP或RTCP活动,将挂断电话。
; 主要使用在我方等待时间过长的情况
rtpkeepalive=<secs> ;在RTP流中发送保活信息,保持NAT开放。默认是关闭(0)
6. SIP调试信息
sipdebug = yes ;打开SIP调试信息
recordhistory=yes ; 默认记录SIP历史
dumphistory=yes ; 在对话结尾丢且SIP历史,被写到DEBUG日志
7. 状态通知STATUS NOTIFICATIONS (SUBSCRIPTIONS)
可以使用"hint" priority来订阅extensions的状态 (见extensions.conf.sample) 。
chan_sip支持两种通知的格式:dialog-info 和 SIMPLE 。
如果你为一个设备设置了呼叫限制,就可以得到更多的细节报告(比如busy)。当呼叫限制时,会被告知忙。为了能够转接,你至少需要设置限制级别为2。
对于队列,你需要状态报告达到这个细节的界别。不管怎么样,如果你使用Sip订阅,队列和管理会为读状态信息使用相同的内部接口。
注意,如果设置了一个realtime的拨号计划,并且使用了realtime switch,订阅不会工作。
allowsubscribe=no ;不支持订阅 (默认yes)
subscribecontext = default ;为订阅请求设置context。用来限制订阅到本地extensions。
;可以对每个peer/user进行设置。
notifyringing = yes ;当发起其他呼叫时,INUSE状态的订阅者是否会发送RINGING (默认no)
notifyhold = yes ;处于HOLD 状态时,通知订阅者。(默认no)
;如果在使用realtime时,打开了notifyringing 和 notifyhold,将会增加很
;多的数据库的传输。
limitonpeers = yes ;仅对peers进行呼叫限制。
8. 传真T.38
该项目既可以在[general]中设置, 也可以对每个设备进行配置。设置为yes,表示允许在SIP到Sip的模式下传输传真,传输的两端都必须配置为支持T38。T.38 仅工作在SIP到SIP 呼叫中。
t38pt_udptl = yes ; 默认false
9. 外呼SIP注册
Asterisk可以把自己作为一个SIP ua注册到一台SIP代理上。注册格式如下:
register => user[:secret[:authuser]]@host[:port][/extension]
如果没有指定extension,将使用's' extension。该extension必须在extensions.conf中定义,以便于可以从SIP代理上接收呼叫。
Host即可以是DNS中定义的一个主机名,也可以是在下面定义的一个section名,如serverA,见本文最后部分。
例子:
register => serverB:[email protected]/serverA
register => 1234:[email protected] ;将把呼叫传递给's' extension
register => 2345:password@sip_proxy/1234
在代理10.0.2.252上注册serverB。如果你在下面定义了一个section叫做serverA,则呼叫会转到serverA中定义的context中。否则呼叫将会从这个代理上链接到本地extension serverA (定义在extensions.conf中), 使用默认的context。
u 技巧1:尽量避免在sip.conf中设置主机名作为section,如[provider.com]
u 技巧2:如果有双向呼叫时,在代理中分开定义type=peer 和 type=user,避免使用type=friend
registertimeout=20 ; 注册间隔20秒(默认)
registerattempts=10 ; 注册尝试次数,
; 0 一直尝试,直到接受了注册。默认值0
10. NAT支持
如果Asterisk在一个NAT设备内部与外部的一个服务通讯,需要设置externip, externhost 和 localnet。
externip = 200.201.202.203 ; 在公网上的一个中间人地址,处理SIP消息。当注册和与一个代理通讯
;时,需要设置externip和localnet
externhost=foo.dyndns.net ; 也可以配置一个域名,Asterisk 将会执行DNS查询。不推荐这
;种方式,尽量使用IP,配置externip。
externrefresh=10 ;更新externhost的时间间隔。
可以有多个本地配,设置一个合理的就可以。(RFC 1918--私有地址分配 )
localnet=192.168.0.0/255.255.0.0 ; All RFC 1918 addresses are local networks
localnet=10.0.0.0/255.0.0.0 ; Also RFC1918
localnet=172.16.0.0/12 ; Another RFC1918 with CIDR notation
localnet=169.254.0.0/255.255.0.0 ;Zero conf local network
nat=设置用于Asterisk在一个公网地址上,需要和一个NAT设备后的设置通讯。如果出现音频问题,一般是NAT配置或防火墙屏蔽了SIP+RTP端口。RTP端口配置在rtp.conf中。
nat=no ; 全局NAT 配置,(影响所有的peers和users),取下列值:
; yes 总是忽略信息,假定使用NAT
; no 基于RFC3581使用NAT模式(;rport)
; never 从不尝试使用NAT模式或RFC3581支持
; route假定使用NAT,不发送rport
11. 媒体流处理
默认情况下,Asterisk会尽量使音频流走最优的路径(re-invite)。如果没有特别设置媒体流需要通过服务器的话,Asterisk会把媒体流重定向。当Asterisk在NAT外部,客户端在NAT内部时,上述功能不能工作,这时必须配置canreinvite=nonat。
canreinvite=yes ; 默认情况下,RTP媒体流会不经过服务器,在呼叫两端直接传递。
; 一些设备不支持这种方式(特别是一端在NAT内)。默认设置yes。
; 如果所有的客户端都在NAT内,或其他原因想让媒体流通过服务器,
;需要关闭该选择。
directrtpsetup=yes ; 打开新的实验性的直接RTP建立,建立一个呼叫,媒体流直接
; peer-to-peer 传递,而不是使用re-invites 方式。视频不支持该方式。
; 被叫方发送RTP载荷和收到200OK响应的fmtp头信息不能与主叫的
; INVITE请求匹配。
; 如果NAT后边的设备设置了canreinvite=yes,传输也会失败。
canreinvite=nonat ; 允许媒体路径重定向的另一个选项,告诉发送媒体流的peer不在
; NAT里边, (RTP核心可以决定使用收到媒体的from地址).
;canreinvite=update ; 允许媒体路径重定向的第三个选项, UPDATE替代INVITE,可以和'nonat'
; 合并成'canreinvite=update,nonat'. 相当于 'yes'.
12. REALTIME支持
关于ARA(Asterisk Realtime Architecture)结构的更多信息,可以看源代码中/doc 目录下的realtime.txt和extconfig.txt文件。
rtcachefriends=yes ; 通过把realtime friends加入到一个内部列表中来缓存friends。
;就好像是把friends从配置文件中加载一样。(yes|no)
rtsavesysname=yes ; 注册时保存systemname到realtime数据库,默认no
rtupdate=yes ; 注册时更新数据库(yes|no)
; 如果设置为yes,当SIP UA 注册成功时,IP、原始端口、注册期间和用
; 户名会被更新到realtime数据库。默认是yes。
; 如果设置为no,realtime功能可能会执行错误。
rtautoclear=yes ; 自动失效已经创建的friends (yes|no|<seconds>)。
; 如果设置为yes,当注册预期时,friend将从注册信息中清除。
; 如果设置为一个整数,friends 会在这个秒数内过期,而不是在注册时间
; 间隔内过期。
ignoreregexpire=yes ; 打开这个设置有两个功能:
; 对于非realtime peers,注册过期时,注册信息也不会从内存或asterisk数
; 据库移除。如果有电话呼叫这个peer时,该注册信息会一直可以使用,
; 不管这个peer是否已经过期。
; 对于realtime peers, 无论是否过期,从数据库得到的注册信息仍然可以
; 使用。如果过期,realtime peer信息仍然在内存(由于缓存或其他原因),
; 该信息不会从realtime数据库移除。
13. SIP域名支持
收到的INVITE 和 REFER 消息可以和一系列的被允许的域名匹配。每一个域名能够直接呼入他们描述的特定context.。默认情况下,所有的域都会接收呼叫,并发送呼叫到指定的context或者user/peer指定的Context。如果配置了域列表,REGISTER请求的域不在其中,呼叫将会被拒绝。
使用如下方式使用域:
domain=<domain>[,<context>]
例如:
domain=myasterisk.dom
domain=customer.com,customer-context
另外,如果需要过滤呼入请求时,应该增加一个服务器的默认域设置。
autodomain=yes
allowexternaldomains=no ;不允许请求非本地域
domain=mydomain.tld,mydomain-incoming
; 为一个呼入呼叫配置域和context
domain=1.2.3.4 ; 使用IP地址作为本地域,可以同时又几个域设置。
allowexternaldomains=no ; 不允许INVITE和REFER请求非本地域,默认yes。
autodomain=yes ; 自动把本地主机名和IP地址加入域名列表。
fromdomain=mydomain.tld ; 当进行外呼SIP INVITEs 到一个非peers时,使用主域而不是IP
; 地址来识别From: headers头信息。这是一个礼貌的用法,它可
; 能对一些在你的服务器上没有优先账号的目的地址是必须的。
14. 抖动缓存(jitterbuffer)配置
jbenable = yes ; 打开SIP通道接收端的抖动缓冲。默认no。在接收端不能接收
; 抖动的情况下,可以使用抖动缓存来接收抖动。
jbforce = no ; 强迫在SIP通道的接收端使用抖动缓存,默认no。
jbmaxsize = 200 ; 抖动缓存大小(毫秒)
jbresyncthreshold = 1000 ; 跳过抖动缓存的帧的时间长度,再同步缓存的帧。可以用来提高
; 语音的质量。外部设备和程序经常会造成大的跳动或中断。默认
; 设置为1000。
jbimpl = fixed ; SIP通道接收端抖动缓存的实现,当前有两种形式:
; fixed 缓存大小等于jbmaxsize,大小固定。
; adaptive 可变大小,实际上用于IAX2的一个新的抖动缓存。
; 默认是fixed。
jblog = no ; 对抖动缓存帧记录日志,默认是no。
;-----------------------------------------------------------------------------------
15. 认证
[authentication]
外呼的全局证书。当一个代理挑战认证您的asterisk服务器,如果挑战通过,这些证书将覆盖peer/register中定义的证书。另外,asterisk也可以使用其他的挑战码对外呼进行认证。我们挑战代理上的认证码,从认证码列表中选择一组证书。
语法:
; auth = <user>:<secret>@<realm>
; auth = <user>#<md5secret>@<realm>
例子:
; auth=mark:[email protected]
也可以增加认证配置到peer的定义中。该配置将覆盖其他的认证设置。
16. User peer friend
Users和peers有不同的设置,Friends有Users和peers的所有功能。
; User 配置选项: Peer 配置:
; -------------------- -------------------
Context context
Callingpres callingpres
Permit permit
Deny deny
Secret secret
md5secret md5secret
dtmfmode dtmfmode
canreinvite canreinvite
nat nat
callgroup callgroup
pickupgroup pickupgroup
language language
allow allow
disallow disallow
insecure insecure
trustrpid trustrpid
progressinband progressinband
promiscredir promiscredir
useclientcode useclientcode
accountcode accountcode
setvar setvar
callerid callerid
amaflags amaflags
call-limit call-limit
allowoverlap allowoverlap
allowsubscribe allowsubscribe
allowtransfer allowtransfer
subscribecontext subscribecontext
videosupport videosupport
maxcallbitrate maxcallbitrate
rfc2833compensate mailbox
t38pt_usertpsource username
template
fromdomain
regexten
fromuser
host
port
qualify
defaultip
rtptimeout
rtpholdtimeout
sendrpid
outboundproxy
rfc2833compensate
t38pt_usertpsource
contactpermit ; 限制主机注册地点。
Contactdeny ; 一个小窍门,作为一个SIP提供者在相同的IP地
; 址注册,呼叫自己,会被重定向到同一位置。
在Asterisk中对某个peer的类型分为3种:peer, user和friend,在asterisk中是这样解释的:
type=peer定义对方是一个服务提供者, 它允许你的Asterisk通过这里定义的服务商打电话;
而user则定义对方是你的一个客户端, 允许对方通过你的Asterisk打电话.
friend就是两者兼有。
但type的真正意义在于Asterisk怎么去处理发往外部和来自外部的请求.
如果type是peer,有两层含义.
n 可以将对方作为一个SIP Service Provider, 允许你的Asterisk通过对方进行呼出.
n 如果对方在逻辑上是一个客户端, asterisk将根据传入的Invite请求来对对方进行身份验证, 但需要注意的是这里的验证不是通过username和secret, 而是通过对方的address和port. 这里分两种情况:
u 对方的address和port没有匹配到你在sip.conf中对任何一个peer的设置, 如果你的Asterisk允许匿名呼入(allowguest=yes), 那么, 该呼入将被传到在sip.conf的general配置中的context上. 如果不允许匿名呼入, 直接拒绝该呼入.
u 对方的address和port匹配到了任何一个sip.conf种的peer设置, 那么改呼入将被传到该peer指定的context上
Asterisk还提供了一个insecure参数来配置对peer呼入的身份验证方式.
insecure=port|invite
n port: Asterisk忽略对方的port, 只根据对方的address来验证某个peer, Asterisk收到对方的Invite后, 会发送SIP/2.0 401 Unauthorized到对方, 要求对方发送认证信息, 但事实上对方返回回来的认证信息不会被真正使用.
n invite: Asterisk对初始Invite不进行验证. 这意味着Asterisk直接使用客户端传入的Invite包中的信息尝试进行验证而不会发送SIP/2.0 401 Unauthorized包到对方
type=user
根据来源Invite包中的用户和密码信息来认证,所以对方不能也不需要Register到你的Asterisk服务器上.
需要额外说明一点的是Register, 如果某个peer的host设置为dynamic, 那么Asterisk允许客户端通过Register的方式来告诉Asterisk对方的地址和端口.
特别注意:经网友证实,以上细节仅限于SIP协议,对于IAX协议,在IAX里那个from验证IP是没有用的,形同虚设,必需使用上面的两行代码验证对方的IP才行,要没有这两行,任何的asterisk只要知道你的服务器的IP都可以通过你的asterisk进行呼出,如果需要杜绝这个隐患,需要修改/etc/asterisk/manager.conf文件,增加类似下面的例句:
deny=0.0.0.0/0.0.0.0
permit=122.227.22.22/255.255.255.0
17. SIP代理例子
;[sip_proxy]
仅用于呼入。使用代理的IP地址来匹配呼入,因为我们不能使用username (caller id)匹配。
type=peer
context=from-fwd
host=fwd.pulver.com
;[sip_proxy-out]
type=peer ; 仅想做外呼
secret=guessit
username=yourusername ; 外呼代理的认证用户
fromuser=yourusername ; 一些SIP 提供端(代理)需要该配置
fromdomain=provider.sip.domain
host=box.provider.com
usereqphone=yes ; 这个代理的URI中需要;user=phone
call-limit=5 ; 允许同时5个外呼到这个peer,由于realtime的peer不存
; 储在内存中,所以realtime时不能强制使用Call-limits
outboundproxy=proxy.provider.domain ; 发送外呼信号到这个代理,而不是直接到peer
port=80 ; 需要连接到的远程的端口号,也可以使用defaultip 配
; 置中的defaultport
18. SIP设备本地连接的定义
type = user ; a device that authenticates to us by "from" field to place calls
; 一个设备,使用from字段认证到服务器,发起呼叫。
type = peer ; a device we place calls to or that calls us and we match by host
; 服务器呼该该设备,或者设备呼叫服务器并且服务器使用host字段来匹配
type = friend ; two configurations (peer+user) in one
; 上面两个配置的和(peer+user)
设备名我们推荐使用字母(a-z), 数字 (0-9) 和下划线
本地呼叫,最常使用的是type=friend
如果你的电话只能单向听到声音,应该是NAT 配置的问题。如果asterisk在公网上,客户端在一个NAT设备内部,你必须配置nat,同时打开qualify=yes属性,保持nat连接处于开放状态。
19. 配置实例
;[grandstream1]
type=friend
context=from-sip ; 呼叫进入拨号计划的位置
callerid=John Doe <1234> ; 全caller ID,来修改呼入电话的callerid信息
host=192.168.0.23 ; 有一个静态私有IP地址。允许非注册时使用。
nat=no ; 表示服务器和客户端之间没有NAT设备
canreinvite=yes ; 允许RTP数据流不经过服务器
dtmfmode=info ; either RFC2833 or INFO for the BudgeTone
call-limit=1 ; 同一时刻在服务器和客户端之间只允许一个呼入和一个呼出
; 相当于是一个peer和一个user,加起来是一个friend。这也会影
; 响到订阅。由于没有friend的联合的呼叫计数器,所以当前没有
; 办法在sip.conf中限制每个客户端的内呼或外呼的数量。可以在
; 拨号计划中用组计数器来达到这个目的。
mailbox=1234@default ; 语音信箱1234,context "default"
disallow=all ; 先要屏蔽掉所有的
allow=ulaw ; 再按使用顺序打开允许的
allow=alaw
allow=g723.1 ; Asterisk仅支持g723.1直通寄存器( pass-thru)
allow=g729 ; 如果没有获得g729 许可,仅支持直通寄存器( pass-thru)
callingpres=allowed_passed_screen ; 设置显示caller ID,更多信息参考doc/callingpres.txt
;[xlite1]
关闭X-Lite的安静压缩 ("Transmit Silence"=YES)!
注意,Xlite 发送NAT保活数据包,因此qualify=yes不是必须的。
type=friend
regexten=1234 ; 当他们注册时,创建extension 1234
callerid="Jane Smith" <5678>
host=dynamic ; 这个设备必须注册才能使用
nat=yes ; X-Lite在一个NAT路由器后边
canreinvite=no ; 如果使用了NAT,该项须设为NO,使媒体流经过服务器
disallow=all
allow=gsm ; GSM比ulaw消耗带宽小
allow=ulaw
allow=alaw
mailbox=1234@default,1233@default ; 订阅多个邮箱
;[snom]
type=friend ; 接收和发起呼叫
context=from-sip
secret=blah
subscribecontext=localextensions ; 仅允许订阅本地localextensions
language=de ; 该用户使用德语提示
host=dynamic ; 必须注册到服务器
dtmfmode=inband ; 可选inband, rfc2833, 或 info
defaultip=192.168.0.59 ; 在peer注册之前使用的IP
mailbox=1234@context,2345 ; 语音邮箱
subscribemwi=yes ; 电话点阅了邮件通知时,发送通知
vmexten=voicemail ; 语音邮箱在拨号计划中的extension,设置MWI通知消息中的
; Message-Account,默认是vmexten,vmexten默认为"asterisk"
disallow=all
allow=ulaw ; dtmfmode=inband 仅支持ulaw 或 alaw
;[polycom]
type=friend ; 可以呼出和接听电话
context=from-sip ; 呼入电话进入的Context
secret=blahpoly
host=dynamic ; 该用户需要注册
dtmfmode=rfc2833 ; 可以选择 inband, rfc2833, or info
username=polly ; 用户注册前使用的,该参数不是必须的
disallow=all
allow=ulaw ; dtmfmode=inband仅支持ulaw 或 alaw
progressinband=no ; 宝利通(Polycom)电话在"never"时不能很好的工作
;[pingtel]
type=friend
secret=blah
host=dynamic
insecure=port ; 允许peer值匹配IP,不用匹配端口
insecure=invite ; INVITEs 呼入请求不需要认证
insecure=port,invite ;
qualify=1000 ; 如果一秒钟后答复,认为已经关闭
; 用于NAT连接的保活,qualify=yes使用默认值.
呼叫组和接听组范围应该在0 到 63
callgroup=1,3-4 ; 呼叫组1,3,4
pickupgroup=1,3-5 ; 接听组1,3,4,5
defaultip=192.168.0.60 ; 如果peer没有注册,默认使用的IP
deny=0.0.0.0/0.0.0.0 ; 拒绝所有的ip的访问
permit=192.168.0.60/255.255.255.0 ;
;[cisco1]
type=friend
secret=blah
qualify=200 ; 保活间隔200ms
nat=yes ; 电话可能在一个NAT设备后边,发送SIP和RTP包到收到包
; 的原IP地址,而不是信任的SIP头中的地址。
host=dynamic ; 该设备必须注册
canreinvite=no ; Asterisk默认是重定向媒体流,使之直接在电话两端传递。但如果
; 设备在NAT设备后边时,会不支持直接传递。所以此时需要设
; 置该项为no。
defaultip=192.168.0.4 ; 注册前使用的IP地址
username=goran ; 该设备注册前呼叫服务器使用的Username,正常情况下,不必设
; 置这个参数.
setvar=CUSTID=5678 ; 为经过这个设备的所有呼叫设置通道变量。
;[pre14-asterisk]
type=friend
secret=digium
host=dynamic
rfc2833compensate=yes ; 是补偿两个asterisk服务器之间DTMF 传输。必须打开这个选
; 项,否则DTMF接收将不会正常工作。
t38pt_usertpsource=yes ; 如果nat开启时,使用RTP 包的原IP地址作为UDPTL 包的目
; 的地址。如果接收到一个简单的RTP包,Asterisk 将会知道远端
; 设备的公网IP地址。如果客户端设置了端口映射,UDPTL 会发
; 送到远端设备。
[serverA]
type=friend
secret=1111
context=serverA_incoming
host=dynamic
disallow=all
allow=ulaw
[sip](!)
nat = yes
allow = g729
type = friend
host = dynamic
canreinvite = no
context = from-pstn
[6001](sip)
username = 6001
secret = 6001
context=phones