asterisksip配置说明1.介绍extensions.conf中使用sip设备的语法是SIP/devicename,devicename名在下一节中说明。如果用户在Internet上,可以使用SIP/username@domain形式,同时不要忘记打开DNSSRV功能。如果定义了一个SIP代理,可以使用SIP/proxyhostname/user或者SIP/user@proxyhostname形式,proxyhostname的定义在下面的章节说明。2.在CLI中的查询命令:usipshowpeers显示所有的SIPpeers(包括friends)usipshowusers显示所有的SIPusers(包括friends)usipshowregistry显示注册到的主机状态usipdebug显示所有的Sip信息umodulereloadchan_sip.so重新装载sip的配置文件3.设备命名命名一个设备之前,要先理解Asterisk是怎么处理呼入电话的:1)Asterisk取出SIPFrom:address中的username,使用它来匹配系统中定义的type=user的的设备名。2)Asterisk检查INVITE请求中的IP地址和端口号,使用它来匹配系统中定义的type=peer的设备。不要混淆extensions和设备名的概念。设备需要一个唯一的名字。设备名不能用于电话号码。电话号码是拨号计划中的声明的一个extension。注意:参数username并不是用户名的意思,在大多数情况下,它根本不是必须的。在后边,我们把它重命名做defaultuser,因为他与defaultip合并使用。4.通用属性说明[general];通用属性context=default;呼入电话默认使用的contextallowguest=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;打开外呼的DNSSRV查找。注意,asterisk仅使用SRV记录中的第一;个主机。该功能可以在拨号计划中使用SIP/username@domain形式通过;域名拨打Internet上的SIp电话。pedantic=yes;打开头信息中tags值检测,URIs和多行格式化头信息中国际字符转换等;严格的SIP兼容性问题。(默认是no)下面是关于TOS参数,可以参考doc/ip-tos.txttos_sip=cs3;SetsTOSforSIPpackets.tos_audio=ef;SetsTOSforRTPaudiopackets.tos_video=af41;SetsTOSforRTPvideopackets.maxexpiry=3600;注册和订阅的最大间隔-秒minexpiry=60;注册和订阅的最大间隔-秒(默认60)defaultexpiry=120;默认注册间隔的时长t1min=100;消息到达录音服务器的最小折返时间,默认100msnotifymimetype=text/plain;修改在通知中消息MWINOTIFY的mime类型checkmwi=10;peer检测语音邮箱的时间间隔buggymwi=no;CiscoSIP防火墙不完全支持MWIRFC。打开该选项时,向电话发送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=defaultlanguage=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=AsteriskPBX;修改useragent字符串promiscredir=no;如果设置为yes,允许302或REDIR非本地SIP地址。注意,对本地;系统做重定向操作会导致循环调用,asterisk并不支持这种操作。usereqphone=no;如果设置为yes,会在uri中增加;user=phone,使uri中包含一个合法;的电话号码。dtmfmode=rfc2833;设置发送DTMF模式。默认:rfc2833;其他选项:;info:SIPINFOmessages;inband:按键的设备产生拨号音(需要64kbit编码-alaw,ulaw);auto:默认使用rfc2833,如果远端不支持时会使用inbandcompactheaders=yes;发送压缩的SIP头.videosupport=yes;打开视频支持。maxcallbitrate=384;视频呼叫的最大速率(默认384kb/s)callevents=no;sipua执行事件时产生管理事件alwaysauthreject=yes;一个INVITE或REGISTER请求由于任何原因被拒绝时,总会使用同一;个原因,用户名合法但密码不正确。而不会告诉请求者是否有这个;user或peer。这样会减少攻击者扫描SIP账户的可能性。g726nonstandard=yes;是否使用G726-32协商,使用AAL2包次序来替代RFC3551(需要;Sipura和GrandstreamATAs)的次序。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=配置项目的用户动态创建和销毁一个NoOppriority1extension。可以使用&指定多个context。如果没有指定'regexten',将会使用注册peer的regexten或名字。如果指定了多个context,则必须在regexten中使用@来指定。在regexten中也可以使用'&'来指定多个。Regexten中也可以使用模式匹配。regcontext=sipregistrations5.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.状态通知STATUSNOTIFICATIONS(SUBSCRIPTIONS)可以使用hintpriority来订阅extensions的状态(见extensions.conf.sample)。chan_sip支持两种通知的格式:dialog-info和SIMPLE。如果你为一个设备设置了呼叫限制,就可以得到更多的细节报告(比如busy)。当呼叫限制时,会被告知忙。为了能够转接,你至少需要设置限制级别为2。对于队列,你需要状态报告达到这个细节的界别。不管怎么样,如果你使用Sip订阅,队列和管理会为读状态信息使用相同的内部接口。注意,如果设置了一个realtime的拨号计划,并且使用了realtimeswitch,订阅不会工作。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;默认false9.外呼SIP注册Asterisk可以把自己作为一个SIPua注册到一台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/serverAregister=1234:password@mysipprovider.com;将把呼叫传递给's'extensionregister=2345:password@sip_proxy/1234在代理10.0.2.252上注册serverB。如果你在下面定义了一个section叫做serverA,则呼叫会转到serverA中定义的context中。否则呼叫将会从这个代理上链接到本地extensionserverA(定义在extensions.conf中),使用默认的context。u技巧1:尽量避免在s