rtptimeout=60 ;如果60秒之内音频通道没有RTP或RTCP活动,将挂断电话。
;主要使用在通话中对方掉电或是老人忘记挂电话的情况。 ; rtpholdtimeout=300 ; 如果300秒之内音频通道没有RTP或RTCP活动,将挂断电话。
; 主要使用在我方等待时间过长的情况
rtpkeepalive=
6. SIP调试信息
sipdebug = yes ;打开SIP调试信息 recordhistory=yes ; 默认记录SIP历史
dumphistory=yes ; 在对话结尾丢且SIP历史,被写到DEBUG日志
7. 状态通知STATUS NOTIFICATIONS (SUBSCRIPTIONS)
可以使用\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:1111@10.0.2.252/serverA
register => 1234:password@mysipprovider.com ;将把呼叫传递给'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)