广告 《大道至简,给所有人看的编程课》 🔥

《FreeSWITCH参考手册》

1.20 mod_sofia

mod_sofia是FreeSWITCH中最重量级的模块,不管是代码量还是功能上都很丰富。关于该模块我们已经在《FreeSWITCH权威指南》上详细介绍过了,在此,我们仅来看一下Sofia Profile中的配置参数。

Sofia的Profile有很多参数,下面是一些简要说明,供参考。其中,有的选项是取布尔值的,则一般来说true/yes通用,false/no通用。

    <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"/>
    <param name="context" value="public"/>
    <param name="rfc2833-pt" value="101"/>
    <param name="sip-port" value="5060"/>
    <param name="ws-binding"  value=":5066"/>
    <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}"/>
    <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"/>
    <param name="send-message-query-on-register" value="true"/>
    <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"/>

是否支持多点注册,取值可以是contacttrue。开启多点注册后多个UA可以用同一个分机注册上来,有人呼叫该分机时所有UA都会振铃。

    <param name="multiple-registrations" value="contact"/>
    <param name="inbound-codec-negotiation" value="generous"/>
    <param name="bind-params" value="transport=udp"/>
    <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}"/>
    <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 -->
    <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"/>
    <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"/>
    <param name="enable-3pcc" value="true"/>
    <param name="NDLB-force-rport" value="true"/>
    <param name="challenge-realm" value="freeswitch.org.cn"/>
    <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"/>
    <param name="pass-callee-id" value="false"/>

最后要讲的这几个参数允许根据需要调整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" />


本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。 本书还在写作中,持续更新。 如果你也想写上几句,欢迎加入我们。 | 返回首页 |