mod_sofia是FreeSWITCH中最重量级的模块,不管是代码量还是功能上都很丰富。关于该模块我们已经在《FreeSWITCH权威指南》上详细介绍过了,在此,我们仅来看一下Sofia Profile中的配置参数。
Sofia的Profile有很多参数,下面是一些简要说明,供参考。其中,有的选项是取布尔值的,则一般来说true/yes
通用,false/no
通用。
media-option:媒体选项。该选项有两个取值。
resume-media-on-hold
:如果FreeSWITCH是没有媒体(No
Media/Bypass
Media)的,那么如果设置了该参数,当你在话机上按下hold键时,FreeSWITCH
将会回到有媒体的状态。如:
bypass-media-after-att-xfer
:Attended
Transfer译即出席转移,也称协商转,它需要媒体才能完成工作。但如果在执行att-xfer
之前没有媒体,该参数能让att-xfer执行时有通过re-INVITE
请求要回媒体,等到转移结束后再回到Bypass
Media状态。
user-agent-string:该参数设置SIP消息中显示的User-Agent字段。如:
param name="user-agent-string" value="FreeSWITCH Rocks!"/> <
param name="debug" value="1"/> <
param name="shutdown-on-fail" value="true"/> <
<param name="sip-trace" value="no"/>
另外,也可以在控制台上用以下命令开启和关闭SIP跟踪,如:
sofia profile internal siptrace on
sofia profile internal siptrace off
<param name="log-auth-failures" value="true"/>
user_context
比该参数优先级要高。如: <param name="context" value="public"/>
<param name="rfc2833-pt" value="101"/>
<param name="sip-port" value="5060"/>
<param name="ws-binding" value=":5066"/>
wss.pem
存放在/usr/local/freeswitch/certs
目录下)。如: <param name="wss-binding" value=":7443"/>
<param name="dialplan" value="XML"/>
<param name="dtmf-duration" value="2000"/>
<param name="inbound-codec-prefs" value="PCMU,PCMA,H264"/>
<param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>
show timers
』命令得到。 <param name="rtp-timer-name" value="soft"/>
<param name="rtp-ip" value="$${local_ip_v4}"/>
<param name="sip-ip" value="$${local_ip_v4}"/>
<param name="hold-music" value="$${hold_music}"/>
<param name="apply-nat-acl" value="nat.auto"/>
<param name="extended-info-parsing" value="true"/>
<param name="aggressive-nat-detection" value="true"/>
<param name="enable-100rel" value="true"/>
<param name="enable-compact-headers" value="true"/>
<param name="enable-timer" value="true"/>
<param name="minimum-session-expires" value="120"/>
<param name="apply-inbound-acl" value="domains"/>
<param name="local-network-acl" value="localnet.auto"/>
<param name="apply-register-acl" value="domains"/>
dtmf-type:DTMF收号的类型。有三种方式,info、inband、rfc2833。如:
send-message-query-on-register:如何发送message-waiting
消息。true
是每次都发送,而first-only
只是首次注册时发送。如:
<param name="send-message-query-on-register" value="true"/>
rpid
将会在SIP消息中设置Remote-Party-ID
,而pid
则会设置P-*-Identity
,如果不需要这些,可以设置成none
。如: <param name="caller-id-type" value="rpid"/>
<param name="record-path" value="$${recordings_dir}"/>
<param name="record-template"
value="${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
<param name="manage-presence" value="true"/>
<param name="manage-shared-appearance" value="true"/>
与此相关的还有两个参数,分别指定Presence的数据库名称及域,如:
<param name="dbname" value="share_presence"/
<param name="presence-hosts" value="$${domain}"/>
<param name="bitpacking" value="aal2"/>
<param name="max-proceeding" value="1000"/>
<param name="session-timeout" value="120"/>
是否支持多点注册,取值可以是contact
或true
。开启多点注册后多个UA可以用同一个分机注册上来,有人呼叫该分机时所有UA都会振铃。
<param name="multiple-registrations" value="contact"/>
greedy
,则自己提供的语音编码列表会有优先权。如: <param name="inbound-codec-negotiation" value="generous"/>
<param name="bind-params" value="transport=udp"/>
nat-options-ping
)或所有注册到它的分机(all-reg-options-ping
)周期性地发一些
OPTIONS包,相当于ping
功能。如: <param name="unregister-on-options-fail" value="true"/>
<param name="nat-options-ping" value="true"/>
<!-- <param name="all-reg-options-ping" value="true"/> -->
<param name="tls" value="true"/>
<param name="tls-bind-params" value="transport=tls"/>
<param name="tls-sip-port" value="5061"/>
<param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
sslv23
(默认)或tlsv1
两种。如: <param name="tls-version" value="sslv23"/>
<param name="rtp-autoflush-during-bridge" value="false"/>
<param name="rtp-rewrite-timestamps" value="true"/>
<param name="pass-rfc2833" value="true"/>
<param name="odbc-dsn" value="dsn:user:pass"/>
<param name="inbound-bypass-media" value="true"/>
<param name="inbound-proxy-media" value="true"/>
<param name="inbound-late-negotiation" value="true"/>
<param name="accept-blind-reg" value="true"/>
<param name="accept-blind-auth" value="true"/>
<param name="suppress-cng" value="true"/>
<param name="nonce-ttl" value="60"/>
<param name="disable-transcoding" value="true"/>
<param name="manual-redirect" value="true"/>
<param name="disable-transfer" value="true"/>
<param name="disable-register" value="true"/>
<param name="NDLB-broken-auth-hash" value="true"/>
<!-- add a ;received="<ip>:<port>" to the contact when replying to register for nat handling -->
;received="<ip>:<port>"
字符串。如: <param name="NDLB-received-in-nat-reg-contact" value="true"/>
<param name="auth-calls" value="true"/>
<param name="inbound-reg-force-matching-username" value="true"/>
<param name="auth-all-packets" value="false"/>
- 一个IP 地址,如 12.34.56.78
- 一个 stun 服务器,它会使用 stun 协议获得公网 IP, 如 stun:stun.server.com
- 一个 DNS 名称,如 host:host.server.com
- auto , 它会自动检测 IP 地址
- auto-nat,如果路由器支持NAT-PMP或uPnP,则可以使用这些协议获取公网IP。
如:
<param name="ext-rtp-ip" value="auto-nat"/>
<param name="ext-sip-ip" value="auto-nat"/>
<param name="rtp-timeout-sec" value="300"/>
<param name="rtp-hold-timeout-sec" value="1800"/>
in
)、出(out
),或双向(both
),通常来说out
是一个比较好的选择。如: <param name="vad" value="out"/>
<param name="alias" value="sip:10.0.1.251:5555"/>
<param name="force-register-domain" value="$${domain}"/>
<param name="force-subscription-domain" value="$${domain}"/>
<param name="force-register-db-domain" value="$${domain}"/>
<param name="force-subscription-expires" value="60"/>
true
或proxy
。
true
则直接接受3PCC来电;如果选Proxy
,则会一直等待电话应答后才回送接受。 <param name="enable-3pcc" value="true"/>
<param name="NDLB-force-rport" value="true"/>
realm
字段是从哪个域获取,auto_from
和auto_to
分别是从From和To中获取,除了这两者,也可以是任意的字符串值,如: <param name="challenge-realm" value="freeswitch.org.cn"/>
mod_dingaling
中会有多个候选IP的时候),FreeSWITCH
可能会改变本来正确的IP地址。该参数禁用此功能。 <param name="disable-rtp-auto-adjust" value="true"/>
<param name="inbound-use-callid-as-uuid" value="true"/>
<param name="outbound-use-uuid-as-callid" value="true"/>
<param name="rtp-autofix-timing" value="false"/>
X-FS-Display-Name
和X-FS-Display-Number
SIP头域实现)。可以设置是否支持这种功能。如: <param name="pass-callee-id" value="false"/>
auto-rtp-bugs:在跟某些不符合标准设备对接时,为了最大限度的支持这些设备,FreeSWITCH在这方面进行了妥协。可能的取值有CISCO_SKIP_MARK_BIT_2833
和SONUS_SEND_INVALID_TIMESTAMP_2833
等。使用该参数时要小心。如:
disable-srv或disable-naptr:这两个参数可以规避DNS中某些错误的 SRV 或 NAPTR 记录。如:
最后要讲的这几个参数允许根据需要调整Sofia-SIP库中底层的时钟,一般情况下不需要改动。这几个参数是给高级用户用的,一般来说保持使用默认值即可。更详细的说明请参考FreeSWITCH默认的配置文件中的说明及相关的RFC3261。这些参数和默认值如下:
param name="timer-T1" value="500" />
<param name="timer-T1X64" value="32000" />
<param name="timer-T2" value="4000" />
<param name="timer-T4" value="4000" /> <