外部配置文件(external.xml)概述
默认情况下,FreeSWITCH 提供在端口 5080 上运行的外部配置文件。外部配置文件处理到 SIP 提供商的外部或出站注册。
SIP 提供商向您发送呼叫,您通过外部配置文件向您的提供商发送呼叫。外部配置文件允许匿名呼叫,这是必需的,因为您的提供商永远不会向您进行身份验证以向您发送呼叫。
随 FreeSWITCH 提供的 external
配置文件 (conf/sip_profiles/external.xml
) 是了解有助于 NAT 穿越的两个非常重要的变量的一个很好的起点。这些都是:
<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
external_
变量在 conf/vars.xml
中配置。外部配置文件很重要,因为如果要设置端口转发则必须借助此文件。这使您可以方便的突破 NAT。
如果您希望进行这种性质的通信,那么您应该考虑复制外部配置文件并创建特定于您的目的的专用配置文件并设置端口转发,以便该配置文件可以与外部实体发送和接收。除了更改使用的端口外,复制的外部配置文件版本几乎不需要修改。请参阅 一般 NAT 示例方案。请记住,当您更改此引用时,所有希望使用此上下文的设备都必须相应地引用它。
例如,如果您创建一个名为 external5090
的配置文件并希望从中拨打电话,那么您应该将其引用为:
/sofia/external5090/1234@blah.com
参数
配置参数包括关于配置文件的其他更一般的信息,包括 STUN 是否在使用中。
请注意,配置参数在单词之间使用连字符“-”,而通道变量在单词之间使用下划线“_”。
每个配置文件都有自己的设置元素。这不仅方便——可以设置一个配置文件使用 STUN,另一个配置文件使用不同的网关或在防火墙后面工作,而不使用 STUN——但它也很重要。这是因为每个配置文件都定义了一个 SIP 用户代理,并且每个 UA 都必须有自己唯一的“sip-port”。按照惯例,5060 是默认端口,但可以调用例如foo@sip.example.com :5070
,因此您可以为每个单独的配置文件定义您喜欢的任何端口。
Vanilla 配置包含 sofia.conf.xml
的完整示例以及注释:internal,external
基本参数
alias 别名
<param name="alias" value="sip:10.0.1.251:5555"/>
使 SIP 配置文件绑定到此 IP 和端口以及您的 SIP/RTP IP 和端口。
shutdown-on-fail 故障关机
<param name="shutdown-on-fail" value="true"/>
如果设置为 true 并且配置文件无法加载,FreeSWITCH 将关闭。如果您正在运行诸如 Pacemaker 和 OpenAIS 之类的管理一对 FreeSWITCH 节点并自动监控、启动、停止、重新启动和待机失败的节点,这将非常有用。它将确保特定节点不能在“部分启动”的情况下使用。
user-agent-string 用户代理
这会在您的服务器发送的所有 SIP 消息中设置 User-Agent 标头。默认情况下,这可能类似于“FreeSWITCH-mod_sofia/1.0.trunk-12805”。如果您不想宣传详细的版本信息,您可以简单地将其设置为“FreeSWITCH”甚至“Asterisk PBX”作为一个笑话。
设置此值时要小心,因为某些字符(例如“@”)可能会导致其他 SIP 代理将您的消息视为无效而拒绝。
<param name="user-agent-string" value="FreeSWITCH Rocks!"/>
log-level 日志级别
<param name="log-level" value="0"/>
debug 调试
<param name="debug" value="0"/>
sip-trace SIP跟踪
<param name="sip-trace" value="no"/>
context 拨号方案上下文
从 ip:port 来的呼叫将被发送到 此 配置文件
<param name="context" value="public"/>
sip-port SIP端口
为 SIP 流量绑定的端口:
<param name="sip-port" value="$${internal_sip_port}"/>
sip-ip SIP IP地址
为 SIP 流量绑定的 IP 地址。不要使用主机名,只使用 IP 地址。
<param name="sip-ip" value="$${local_ip_v4_or_v6}"/>
或者,从 1.6 版开始,可以指定接口和可选地址族而不是 IP,对于 rtp-ip 也是如此。
<param name="sip-ip" value="interface:[auto|ipv4|ipv6|]/eth0"/>
rtp-ip rtp流IP地址
为 RTP 流量绑定的 IP 地址。不要使用主机名,只使用 IP 地址
<param name="rtp-ip" value="$${local_ip_v4_or_v6}"/>
- 多个 rtp-ip 支持:如果添加了更多 rtp-ip 参数,它们将随着新呼叫的进行而循环使用。
- 在撰写本文时,Windows不支持IPv6 地址
ext-rtp-ip rtp流公网IP
这是从 Internet 上看到 FreeSWITCH 背后的 IP,所以如果 FreeSWITCH 在 NAT 之后,这基本上是应该用于 RTP 的公共 IP。
允许的值为:
ext-rtp-ip | 描述 | 例子 |
---|---|---|
$${variable} | vars.xml 中的任何变量 | <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> |
w.x.y.z | 特定数字 IP 地址 | <param name="ext-rtp-ip" value="1.2.3.4"/> |
autonat:w.x.y.z | 用于 LAN 和 WAN,以避免发送到 LAN 设备的 SIP CONTACT 错误 | <param name="ext-rtp-ip" value="autonat:1.2.3.4"/> |
auto | 猜测IP(通过查看IP路由表猜测哪个接口是默认路由) | <param name="ext-rtp-ip" value="auto"/> |
auto-nat | FS 使用 uPNP 或 NAT-PMP 来发现它应该使用的公共 IP 地址 | <param name="ext-rtp-ip" value="auto-nat"/> |
stun:DNS name or IP address of STUN server | FS 使用您选择的 STUN 服务器来发现公共 IP 地址 | <param name="ext-rtp-ip" value="stun:stun.freeswitch.org"/> |
host:DNS name | FS 将 DNS 名称解析为公共 IP 地址,因此您可以使用动态 DNS 主机 | <param name="ext-rtp-ip" value="host:mypublicIP.dyndns.org"/> |
ext-sip-ip 用于 SIP 消息的公网IP
用于 SIP 消息的公共 IP
可能值与 ext-rtp-ip
相同,通常设置为相同值。
<param name="ext-sip-ip" value="$${external_sip_ip}"/>
tcp-keepalive 保活时间间隔
将此设置为间隔(以毫秒为单位)以向通过 TCP 注册的用户代理 (UA) 发送保持活动数据包;不要设置为禁用。
tcp-pingpong
tcp-ping2pong
dialplan 拨号方案
dialplan 参数非常强大。
在最简单的配置中,它将使用 XML 拨号方案。这意味着它将从mod_xml_curl XML 拨号计划中读取数据(例如,回调到您的网络服务器),或者从 freeswitch.xml 拨号计划部分中指定的 XML 文件中读取数据。(例如 default_context.xml)
<param name="dialplan" value="XML"/>
还可以在图中添加枚举查找(因为 mod_enum 提供了拨号方案功能),因此枚举查找会覆盖 XML 拨号方案
<param name="dialplan" value="enum,XML"/>
或者仅在 XML 查找失败时才解析枚举的顺序
<param name="dialplan" value="XML,enum"/>
也可以指定一个特定的枚举根
<param name="dialplan" value="enum:foo.com,XML"/>
或在自定义文件上使用 XML
<param name="dialplan" value="XML:/tmp/foo.xml,XML,enum"/>
它将首先检查特定的 XML 文件,然后点击普通 XML,假设您已配置并工作,该XML 也会执行mod_xml_curl查找。
媒体相关参数
另请参阅:代理媒体
resume-media-on-hold 恢复媒体暂停
当呼叫没有媒体时,当您按下保持按钮时,这会将它们带回媒体。要在呼叫未保持后将呼叫返回到 bypass-media,请启用 bypass-media-after-hold。
<param name="media-option" value="resume-media-on-hold"/>
bypass-media-after-att-xfer 在转接后返回绕过媒体
在有人参与转接后返回绕过媒体。
<param name="media-option" value="bypass-media-after-att-xfer"/>
bypass-media-after-hold 保持后绕过媒体
这将允许呼叫在保持后返回绕过媒体。只有设置了 resume-media-on-hold 才能启用此选项。可从 git rev 8fa385b 获得。
<param name="media-option" value="bypass-media-after-hold"/>
inbound-bypass-media 入站绕过媒体
取消注释以将所有入站呼叫设置为无媒体模式。这意味着 FreeSWITCH 服务器只保持 SIP 消息状态,但让 RTP 流直接从端点传送到端点
<param name="inbound-bypass-media" value="true"/>
inbound-proxy-media 入站代理媒体
取消注释以将所有入站呼叫设置为代理媒体模式。这意味着 FreeSWITCH 将 SIP 和 RTP 流量都保留在服务器上,但不与 RTP 流交互。
<param name="inbound-proxy-media" value="true"/>
disable-rtp-auto-adjust 禁用rtp自动调整
<param name="disable-rtp-auto-adjust" value="true"/>
ignore-183nosdp 忽略-183nosdp
<param name="ignore-183nosdp" value="true"/>
enable-soa 启用 SOA
<param name="enable-soa" value="true"/>
将值设置为“false”以禁用来自 sofia 的 SIP SOA,以告诉 sofia 不要接触 SDP 的交换
t38-passthru t38-直通
<param name="t38-passthru" value="true"/>
以下选项可用
- 'true' 启用 t38 passthru
- 'false' 禁用 t38 通路
- 'once' 启用 t38 passthru,但仅发送 t.38 重新邀请一次(自 2011 年 11 月 9 日提交 08b25a8 起可用)
编解码器相关选项
inbound-codec-prefs 入站编解码器首选项
此参数允许更改每个配置文件允许的入站编解码器。
<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
outbound-codec-prefs 出站编解码器首选项
此参数允许更改每个配置文件的出站编解码器。
<param name="outbound-codec-prefs" value="$${outbound_codec_prefs}"/>
codec-prefs 编解码器首选项
此参数允许同时更改入站编解码器首选项和出站编解码器首选项。
<param name="codec-prefs" value="$${global_codec_prefs}"/>
inbound-codec-negotiation 入站编解码器协商
如果您希望编解码器列表优先,请设置为“贪婪”
<param name="inbound-codec-negotiation" value="generous"/>
如果“贪婪”对您不起作用,请尝试使用“scrooge”来解决 DID 提供商(例如 CallCentric)误报的 ptime 问题。
一个经验法则是:
- 'generous'允许远程编解码器列表具有优先权并“赢得”编解码器协商和选择过程
- 'greedy' 迫使本地 FreeSWITCH 偏好列表获胜
- 'scrooge' 让 'greedy' 更进了一步,因此即使在谈判过程中对方谎称能力时,FreeSWITCH 也会获胜
sip_codec_negotiation
是此设置的通道变量版本
inbound-late-negotiation 入站延迟协商
取消注释以在您决定编解码器是否正常之前*让呼叫到达拨号计划。
<param name="inbound-late-negotiation" value="true"/>
bitpacking 位打包
此设置适用于 G.726 上的 AAL2 位打包。
<param name="bitpacking" value="aal2"/>
disable-transcoding 禁用转码
如果您想强制网桥的出站支路仅提供发起方正在使用的编解码器,请取消注释
<param name="disable-transcoding" value="true"/>
renegotiate-codec-on-reinvite 重新协商编解码器重新邀请
<param name="renegotiate-codec-on-reinvite" value="true"/>
STUN
如果您需要使用 STUN 服务器,以下是常见的工作示例:
ext-rtp-ip
<param name="ext-rtp-ip" value="stun:stun.fwdnet.net"/>
stun.fwdnet.net是一个可公开访问的 STUN 服务器。
ext-sip-ip
<param name="ext-sip-ip" value="world_reachable.real.numeric.ip"/>
stun-enabled 启用stun
UDP over NAT 的简单遍历 (STUN) 用于帮助解决与 NAT 后面的 SIP 客户端相关的问题,在其消息传递中使用私有 IP 地址空间。指定时使用 stun(默认为 true)。
<param name="stun-enabled" value="true"/>
stun-auto-disable 自动禁用stun
设置为 true 让配置文件确定 stun 没有用并在全局范围内将其关闭
<param name="stun-auto-disable" value="true"/>
NATing
apply-nat-acl
收到 REGISTER 或 INVITE 时,如果 Contact 标头中的 IP 地址与RFC 1918访问列表中定义的条目匹配,则自动启用NAT 模式。在这种情况下,“acl”是用词不当,因为如果用户的联系人 IP 不匹配,访问将不会被拒绝。
<param name="apply-nat-acl" value="rfc1918"/>
aggressive-nat-detection
如果接收请求的网络 IP/端口与 SIP Via: 标头中的 IP/端口组合不同,或者 Via: 标头包含接收到的参数(无论它包含什么),这将启用 NAT 模式。
<param name="aggressive-nat-detection" value="true"/>
VAD 和 CNG
VAD 代表语音活动检测器。FreeSWITCH 能够检测语音,当没有检测到语音时可以停止传输 RTP 数据包。
vad 语音检测
<param name="vad" value="in"/>
<param name="vad" value="out"/>
<param name="vad" value="both"/>
suppress-cng 噪声抑制
使用“suppress_cng”变量在此配置文件或每次呼叫中抑制舒适噪声发生器 (CNG)
<param name="suppress-cng" value="true"/>
NDLB
NDLB-force-rport
这将强制 FreeSWITCH 将 SIP 响应发送到接收它们的网络端口。使用风险自负!有关详细信息,请参阅NAT 遍历。
<param name="NDLB-force-rport" value="true|safe"/>
safe = 仅在我们知道安全的端点上执行 force-rport 行为的参数。
NDLB-broken-auth-hash
用于当手机使用哈希中的方法 INVITE 响应挑战 ACK 时
<param name="NDLB-broken-auth-hash" value="true"/>
NDLB-received-in-nat-reg-contact
回复注册 nat 处理时向联系人添加 received="<ip>:<port>"
<param name="NDLB-received-in-nat-reg-contact" value="true"/>
NDLB-sendrecv-in-session
默认情况下,“a=sendrecv”仅包含在 SDP 的媒体部分中。虽然这符合 RFC,但它可能会破坏某些 SIP 设备的功能。要在 SDP 的会话部分中还包括“a=sendrecv”,请将此参数设置为 true。
<param name="NDLB-sendrecv-in-session" value="true"/>
NDLB-allow-bad-iananame
即使给定的字符串不正确,也将允许编解码器匹配各自的名称。
例如,Linksys 和 Sipura 手机默认通过 G.729a 而不是 G.729 作为编解码器字符串,因此不匹配。
如果您希望允许错误的 IANA 名称与相应的编解码器字符串匹配,请将以下参数添加到您的 SIP 配置文件中。
<param name="NDLB-allow-bad-iananame" value="true"/>
Call ID 来电显示
inbound-use-callid-as-uuid 呼入使用 callid 作为 uuid
在入站呼叫中,使会话的 uuid 等于该呼叫的 SIP 呼叫 ID。
<param name="inbound-use-callid-as-uuid" value="true"/>
outbound-use-uuid-as-callid 呼出使用 uuid 作为 callid
在出站呼叫上,将 callid 设置为与会话的 uuid 匹配
<param name="outbound-use-uuid-as-callid" value="true"/>
这在..sip_profiles/external.xml
文件中。
TLS
请确保在启用以下某些功能之前阅读 SIP TLS ,因为它们可能无法按预期运行。
tls
TLS:默认禁用,设置为“true”启用
<param name="tls" value="$${internal_ssl_enable}"/>
tls-only
默认情况下禁用,启用后会阻止 sofia 侦听此连接的未加密端口。这可以阻止许多暴力破解脚本,如果您的所有客户端都通过 TLS 连接,那么可以帮助减少您的 FreeSWITCH 服务器对世界的暴露。
<param name="tls-only" value="false"/>
tls-bind-params
TLS 的附加绑定参数
<param name="tls-bind-params" value="transport=tls"/>
tls-sip-port
监听 TLS 请求的端口。(如果未指定,将使用 5061)
<param name="tls-sip-port" value="$${internal_tls_port}"/>
tls-cert-dir
agent.pem 和 cafile.pem ssl 证书的位置(TLS 服务器需要)
<param name="tls-cert-dir" value="$${internal_ssl_dir}"/>
tls-version
TLS 版本(“sslv2”、“sslv3”、“sslv23”、“tlsv1”、“tlsv1.1”、“tlsv1.2”)。注意:电话可能无法使用 TLSv1
<param name="tls-version" value="$${sip_tls_version}"/>
未设置时默认为:tlsv1,tlsv1.1,tlsv1.2
tls-passphrase
如果您的 agent.pem 受密码保护,请在此处粘贴密码以启用 FreeSWITCH 解密密钥。
<param name="tls-passphrase" value=""/>
tls-verify-date
如果客户端/服务器证书应验证其日期以确保其未过期且当前处于活动状态。
<param name="tls-verify-date" value="true"/>
tls-verify-policy
设置如何对服务器/客户端证书进行安全检查。验证通常是针对 cafile.pem 检查证书是否有效。
- in 仅验证传入连接,
- out 仅验证传出连接,
- all 验证所有连接,
- subjects_in、subjects_out 和 subjects_all 用于主题验证(传出连接的主题验证是针对连接到的主机名/IP)。
可以使用“|”拆分多个策略 管道,例如subjects_in|subjects_out
。默认为无。
<param name="tls-verify-policy" value="none"/>
tls-verify-depth
当启用证书验证 (tls-verify-policy) 时,我们应该尝试在 cafile.pem 文件中再次验证链上证书的深度。默认情况下只有深度 2。
<param name="tls-verify-depth" value="2"/>
tls-verify-in-subjects
如果为传入连接启用了主题验证(tls-verify-policy 设置为“subjects_in”或“subjects_all”),这是允许的主题列表(用“|”管道分隔),请注意这仅影响传入连接始终根据主机名/ips 检查传出连接主题。
<param name="tls-verify-in-subjects" value=""/>
DTMF 双音多频
rfc2833-pt
RFC 2833已被RFC 4733淘汰。
<param name="rfc2833-pt" value="101"/>
dtmf-duration dtmf持续时间
<param name="dtmf-duration" value="100"/>
dtmf-type dtmf类型
在 SIP 配置文件中设置参数:
<param name="dtmf-type" value="info"/>
或者
<param name="dtmf-type" value="rfc2833"/>
或者
<param name="dtmf-type" value="none"/>
或者在 SIP 网关或用户配置文件中设置变量(不在通道中,它必须在 CS_INIT 之前):
<variables>
<variable direction="inbound|outbound|both" name="dtmf_type" value="info">
</variables>
pass-rfc2833
默认值:假
如果为真,它将RFC 2833 DTMF 从桥的一侧传递到另一侧,不受影响。否则,它会在传递它们之前对它们进行解码和重新编码。
<param name="pass-rfc2833" value="true"/>
liberal-dtmf
<param name="liberal-dtmf" value="true"/>
SIP 相关选项
enable-timer 启用定时器
这将启用或禁用对RFC 4028 SIP 会话计时器的支持。
<param name="enable-timer" value="false"/>
session-timeout 会话超时
所有呼叫的会话计时器在指定秒后到期然后它将发送另一个邀请(重新邀请)。如果未指定,则默认为 30 分钟。一些网关可能会拒绝少于 30 分钟的值。此值是指RFC 4028中的 Session-Expires (如果事先没有成功的会话刷新事务发生,则元素将认为会话超时的时间)所有呼叫的会话计时器在指定秒后到期然后它将发送另一个邀请(重新邀请)。如果未指定,则默认为 30 分钟。一些网关可能会拒绝少于 30 分钟的值。此值是指RFC 4028中的 Session-Expires (如果事先没有成功的会话刷新事务发生,则元素将认为会话超时的时间)
<param name="session-timeout" value="1800"/>
enable-100rel 启用 100rel
这启用了对 100rel 的支持(100% 可靠性 - RFC3262中定义的 PRACK 消息)这解决了 SIP 的问题,即“180 Ringing”之类的临时消息没有被确认,因此可能会在连接不佳的情况下被丢弃而无需重新传输。2009-07-08: 启用此功能可能会导致 FreeSWITCH 崩溃,请参阅FSCORE-392。
<param name="enable-100rel" value="true"/>
minimum-session-expires 最小会话过期
这将设置来自RFC 4028的“Min-SE”值(以秒为单位)。此值不得小于 90 秒。
<param name="minimum-session-expires" value="120"/>
sip-options-respond-503-on-busy
当设置为 true 时,当 FS 暂停或超过最大会话数时,此参数将使 FreeSWITCH 以 503“Maximum Calls In Progress”响应传入的 SIP OPTIONS。
当设置为 false 或根本没有设置(默认行为)时,SIP OPTIONS 总是以 200“OK”响应。
<param name="sip-options-respond-503-on-busy" value="false"/>
如果您使用诸如 OpenSIPS 或 Kamailio 之类的代理和调度程序模块通过发送 SIP OPTIONS 来探测您的 FreeSWITCH 服务器,则将此参数设置为 true 特别有用。
sip-force-expires
设置此参数会覆盖 200 OK 中的过期值,以响应针对此 sip_profile 的所有入站 SIP REGISTER。
这个参数可以通过设置一个sip-force-expires用户目录变量来覆盖每个用户。
sip-expires-max-deviation SIP注册过期时间使用随机偏差
设置此参数将随机偏差添加到 200 OK 中的过期值,以响应针对此 sip_profile 的所有入站 SIP REGISTER。
结果将是客户端不会在同一时间间隔内重新注册,从而分散系统上的负载。
例如,如果您设置:
<param name="sip-force-expires" value="1800"/>
<param name="sip-expires-max-deviation" value="600"/>
那么响应的过期时间将在 1800-600=1200 和 1800+600=2400 秒之间。
通过设置sip-expires-max-deviation
用户目录变量,可以为每个用户覆盖此参数。
outbound-proxy 出站代理
设置此参数会将所有出站事务发送到由 outbound-proxy 设置的值。
<param name="outbound-proxy" value="127.0.0.1"/>
send-display-update 发送显示更新
告诉 FreeSWITCH 不要将显示更新发送到调用的分支。
<param name="send-display-update" value="false"/>
RTP 相关选项
auto-jitterbuffer-msec 自动 抖动缓冲器 毫秒数
所有呼叫中拥有的jitterbuffer的大小。
<param name="auto-jitterbuffer-msec" value="120"/>
rtp-timer-name
<param name="rtp-timer-name" value="soft"/>
rtp-rewrite-timestamps
如果您不想将时间戳从 1 个 RTP 流传递到另一个 RTP 流,则 rtp-rewrite-timestamps 是您可以在 SIP 配置文件中设置的参数(基于拨号计划中的 rtp_rewrite_timestamps chanvar)。
结果是,FreeSWITCH 将使用此 SIP 配置文件重新生成并重写所有 RTP 流中的时间戳,这些流将发送到端点。
在向某些偏执狂且不符合 RFC 的网关发送呼叫时,这可能是解决音频问题所必需的(众所周知,Cirpack 需要这样做)。
<param name="rtp-rewrite-timestamps" value="true"/>
media_timeout 媒体超时
旧称: rtp-timeout-sec
(不推荐使用的配置参数)
此通道变量配置在 FreeSWITCH 认为呼叫已断开并挂断之前 RTP 不活动(未收到媒体数据包)的毫秒数。建议您改用会话计时器。如果省略此设置,则默认值为“0”,即禁用超时。
示例:将媒体超时设置为 30 秒
<param name="media_timeout" value="30000"/>
media_hold_timeout
旧称: rtp-hold-timeout-sec
(不推荐使用的配置参数)
此通道变量配置在 FreeSWITCH 认为呼叫已断开并挂断之前,端点保持呼叫的 RTP 不活动(媒体静默)秒数。建议您改用会话计时器,因为某些电话在保持状态时会停止发送媒体。如果省略此设置,则默认值为“0”,即禁用超时。
<param name="media_hold_timeout" value="1800"/>
rtp-autoflush-during-bridge
控制如果 FreeSWITCH 检测到它没有跟上桥接呼叫上的 RTP 媒体(音频)流,会发生什么。(如果 FreeSWITCH 服务器没有足够的可用 CPU 时间,就会发生这种情况。)
当设置为“true”(默认值)时,FreeSWITCH 会在传入队列中等待读取多个 RTP 数据包时发出通知。如果这种情况持续超过 5 秒,RTP 数据包将被丢弃以“赶上”音频流。例如,如果队列中总是有五个额外的 20 ms 数据包,则可以通过丢弃数据包来消除 100 ms 的音频延迟。这将导致音频故障,因为一些音频被丢弃,但会在通话的其余部分将延迟提高 100 毫秒。
如果 rtp-autoflush-during-bridge 设置为 false,FreeSWITCH 将改为保留桥接呼叫上的所有 RTP 数据包,即使它增加了呼叫者听到的延迟或“滞后”。
<param name="rtp-autoflush-during-bridge" value="true"/>
rtp-autoflush
与“rtp-autoflush-during-bridge”具有相同的效果,但会影响非桥接呼叫(例如传真、IVR 和回声测试)。
与“rtp-autoflush-during-bridge”不同,默认值为 false,这意味着非桥接调用上的高延迟数据包不会被丢弃。这会以增加音频延迟(或“滞后”)为代价来产生更流畅的音频。
将“rtp-autoflush”设置为 true 将丢弃数据包以尽可能减少延迟。这样做可能会导致 DTMF 识别、传真和其他依赖接收所有数据包的进程出错。
<param name="rtp-autoflush" value="true"/>
Auth
这些设置处理身份验证:将 SIP 端点识别到 FreeSWITCH 的要求。
challenge-realm
选择realm challenge键。如果未设置,默认为 auto_to。
auto_from - 使用 from 字段作为 SIP realm的值。auto_to - 使用 to 字段作为 SIP realm的值。
如果您希望 URL 拨号正常工作,您需要将其设置为 auto_from。
如果您使用除 auto_to 或 auto_from 之外的任何其他值,您将失去执行多个域的能力。
<param name="challenge-realm" value="auto_from"/>
accept-blind-auth
接受任何身份验证而不实际检查(对大多数人来说不是一个好功能)
<param name="accept-blind-auth" value="true"/>
auth-calls
目录中的用户可以应用“auth-acl”参数,以限制用户访问预定义的 ACL 或 CIDR。
<param name="auth-calls" value="$${internal_auth_calls}"/>
值可以是“false”以禁用此配置文件上的身份验证,这意味着当调用进入配置文件时,不会*向调用者发送身份验证质询。
log-auth-failures
在身份验证失败(注册和邀请)时写入日志条目(警告)。对于希望使用 fail2ban 的用户很有用。注意:需要 SVN#15654 或更高版本
<param name="log-auth-failures" value="true"/>
auth-all-packets
在经过身份验证的调用中,验证 所有 数据包,而不仅仅是 INVITE 和 REGISTER(注意:即使将此选项设置为 true,OPTIONS、SUBSCRIBE、INFO 和 MESSAGE 也不会进行身份验证,请参阅http://jira.freeswitch.org/browse/ FS-2871 )
<param name="auth-all-packets" value="false"/>
注册
disable-register
在公共软交换中禁用注册
<param name="disable-register" value="true"/>
multiple-registrations 多次注册
此参数的有效值为“contact”、“true”、“false”。value="true" 是最常见的用法。将此值设置为“contact”将删除基于 sip_user、sip_host 和联系人字段的旧注册,而不是 call_id。
<param name="multiple-registrations" value="contact"/>
max-registrations-per-extension 每个分机的最大注册数
定义每个分机的最大注册数。此参数的有效值是大于 0 的整数。请注意,将其设置为 1 会抵消多次注册的使用。在达到最大值后尝试注册分机时,sofia 将响应 403。以下示例将最大注册数设置为 2
<param name="max-registrations-per-extension" value="2"/>
accept-blind-reg
该选项允许任何电话注册,而不检查用户和密码及其它设置。
<param name="accept-blind-reg" value="true"/>
inbound-reg-force-matching-username 入站注册强制匹配用户名
强制用户和 auth-user 匹配。
<param name="inbound-reg-force-matching-username" value="true"/>
force-publish-expires
强制自定义状态更新过期增量(-1 表示无休止)
<param name="force-publish-expires" value="true"/>
force-register-domain
所有入站注册都将在此域中查找用户。注释掉以使用多个域
<param name="force-register-domain" value="$${domain}"/>
force-register-db-domain
所有入站 reg 将使用此域存储在数据库中。注释掉以使用多个域
<param name="force-register-db-domain" value="$${domain}"/>
send-message-query-on-register 注册时发送消息查询
可以设置为“true”、“false”或“first-only”。如果设置为“true”(这是默认行为),mod_sofia 将在注册时发送消息查询事件。mod_voicemail使用它来计算消息。
<param name="send-message-query-on-register" value="true"/>
如果设置为“first-only”,则只有第一个 REGISTER 会触发消息查询(它需要 UA 在后续 REGISTER 上增加 NC。某些手机,例如 snom,不这样做)。
消息查询的最终效果是导致向注册 UA 发送 NOTIFY MWI 消息(它用于满足期望 MWI 而不订阅它的终端)。
unregister-on-options-fail 当option失败时注销
如果使用nat-options-ping设置为 True,如果 OPTIONS 数据包上没有应答,则端点将被注销。
<param name="unregister-on-options-fail" value="true"/>
nat-options-ping 向NAT注册发送ping消息
设置此选项后,FreeSWITCH 将定期向所有 NATed 注册端点发送一个 OPTIONS 数据包以保持连接。
如果使用unregister-on-options-fail
设置为 True
,如果 OPTIONS 数据包上没有答案,则端点将被取消注册。
<param name="nat-options-ping" value="true"/>
all-reg-options-ping 向所有注册发送ping消息
设置此选项后,FreeSWITCH 将定期向所有已注册的端点发送一个 OPTIONS 数据包以保持连接。
如果使用unregister-on-options-fail
设置为 True
,如果 OPTIONS 数据包上没有答案,则端点将被取消注册。
<param name="all-reg-options-ping" value="true"/>
registration-thread-frequency
控制检查 FreeSWITCH 中的注册是否过期的频率。
<param name="registration-thread-frequency" value="30"/>
inbound-reg-in-new-thread
对于每个入站注册,启动一个新线程来处理它,例如在使用较重的后端时
<param name="inbound-reg-in-new-thread" value="true"/>
ping-mean-interval
控制 FreeSWITCH™ 向注册用户发送 OPTIONS 数据包的平均间隔,默认为 30 秒。
<param name="ping-mean-interval" value="30"/>
ping-thread-frequency
控制同时发送 ping 的频率。默认为 1 秒。
<param name="ping-thread-frequency" value="1"/>
示例:间隔设置为 30,频率设置为 1,对于 1000 个注册用户,FS 将每秒 ping 33 个用户,并且每 30 秒重新启动一次。(1000 除以 30 = 33)
订阅
force-subscription-expires
强制订阅到期的值低于请求的值
<param name="force-subscription-expires" value="60"/>
force-subscription-domain
所有入站订阅都将在此域中查找用户。注释掉以使用多个域
<param name="force-subscription-domain" value="$${domain}"/>
在线状态
manage-presence
启用状态信息
如果您想共享您的状态(请参阅 dbname 和状态主机),请在第一个配置文件上将此设置为“true”并启用共享状态数据库。然后在共享存在的后续配置文件中将此变量设置为“passive”并在那里启用共享存在数据库。
<param name="manage-presence" value="true"/>
dbname
用于在 sofia 个人资料中共享状态信息
用于此配置文件的数据库名称
<param name="dbname" value="share_presence"/>
presence-hold-state
默认情况下,当呼叫处于保持状态时,监控分机会将该分机显示为振铃。您可以通过指定此参数和以下值之一来更改此行为。自 2012 年 4 月 13 日提交 1145905 起可用。
- confirmed - 分机出现忙。
- early(默认)- 分机似乎正在响铃。
- terminated - 分机出现空闲。
<param name="presence-hold-state" value="confirmed"/>
presence-hosts
在 dbname 中指定的数据库中具有共享存在的域列表。每个配置文件使用多个域的人无论如何都不能使用此功能,因此在这种情况下,您需要将其设置为“_DISABLED_”之类的内容,以避免将来自相似域的用户全部混合在一起。对于多个域,也称为多租户呼叫 1001 将呼叫所有域中的所有匹配用户。不要将存在主机与多租户一起使用。
<param name="presence-hosts" value="$${domain}"/>
presence-privacy 状态隐私
可选择在分布式 NOTIFY 消息中全局隐藏呼叫者 ID。例如,“Talk 1002”将是分机 1001 在与分机 1002 通话时的出席信息。如果出席隐私标签设置为 true,那么它将把出席信息分发为“电话中”(不带它所连接的分机)。因此,任何订阅 1001 的用户都无法看到他/她正在与谁交谈。
<param name="presence-privacy" value="true"/>
send-presence-on-register 注册时发送状态
指定用户注册时是否发送出席信息。默认是不发送存在信息。有效选项:
- false
- true
- first-only
<param name="send-presence-on-register" value="true"/>
来电显示相关选项
caller-id-type 来电显示类型
选择一个,可以被入站呼叫类型和/或 sip_cid_type 通道变量覆盖Remote-Party-ID
标头:
<param name="caller-id-type" value="rpid"/>
P-*-Identity
family of headers:
<param name="caller-id-type" value="pid"/>
都不是:
<param name="caller-id-type" value="none"/>
pass-callee-id 传递被叫ID
(默认为 true)如果您遇到网关出于某种原因讨厌它应该忽略的 X-headers 的内容,则通过将其设置为 false 来禁用
<param name="pass-callee-id" value="false"/>
其他
hold-music 保持音乐
<param name="hold-music" value="$${hold_music}"/>
disable-hold 禁用保持
这允许禁用音乐暂停(从 2010 年 4 月 30 日星期五 19:14:39 -0500 开始,在 GIT 提交 e5cc0539ffcbf660637198c698e90c2e30b05c2f 中添加)。
当呼叫设备打算发送自己的 MOH,但仍向 FreeSWITCH 发送 REINVITE 以触发其 MOH 时,这可能很有用。
这也可以通过拨号计划通过 rtp_disable_hold 通道变量来完成。
<param name="disable-hold" value="true"/>
apply-inbound-acl 应用入站 acl
设置acl.conf.xml中定义的哪些访问控制列表应用于此配置文件
<param name="apply-inbound-acl" value="domains"/>
apply-register-acl 启用注册acl
<param name="apply-register-acl" value="domains"/>
apply-proxy-acl 启用代理acl
<param name="apply-proxy-acl" value="myproxies"/>
这允许通过一个或多个代理服务器将流量发送到 FreeSWITCH。
代理服务器应添加一个名为 X-AUTH-IP 的标头,其中包含客户端的 IP 地址。FreeSWITCH 信任代理,因为它的 IP 在代理服务器 ACL 中列出,并使用此标头中 IP 的值作为客户端的 IP 进行 ACL 身份验证(acl 在 apply-inbound-acl 中定义)。
record-template 录音文件模版
<param name="record-template" value="$${base_dir}/recordings/${caller_id_number}.${target_domain}.${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
max-proceeding 最大进程
正在进行的最大打开通话数
<param name="max-proceeding" value="1000"/>
bind-params 绑定参数
如果您想发送您自己的任何特殊绑定参数
<param name="bind-params" value="transport=udp"/>
disable-transfer
禁用在公共交换机中可能不受欢迎的传输
<param name="disable-transfer" value="true"/>
manual-redirect 手动重定向
<param name="manual-redirect" value="true"/>
enable-3pcc
enable-3pcc 确定是否允许第三方呼叫控制。在 SIP 邀请不包含 SDP(延迟媒体协商)的情况下,第三方呼叫控制非常有用。
enable-3pcc 可以设置为“true”或“proxy”,true 立即接受呼叫,proxy 等待呼叫被应答然后发送接受
<param name="enable-3pcc" value="true"/>
nonce-ttl
sip auth 中 nonce 的 TTL
<param name="nonce-ttl" value="60"/>
如果此处未设置,此参数设置为 60 秒。用于确定用户注册记录在 sip_authentication 表中存储多长时间。sip_authentication 表中的 expires 字段是这个值加上用户代理设置的 expires。
sql-in-transactions 事务中的 sql
如果设置为 true(默认),它将指示配置文件等待 500 个 SQL 语句累积或 500 毫秒过去并在事务中执行它们(以提高性能)。
<param name="sql-in-transactions" value="true"/>
odbc-dsn
如果你有ODBC支持和工作 dsn,你可以使用它而不是 SQLite
<param name="odbc-dsn" value="dsn:user:pass"/>
mwi-use-reg-callid
<param name="mwi-use-reg-callid" value="false">
username 用户名
如果您希望在 SDP 消息中隐藏您正在使用 FreeSWITCH 的事实(特别是 o= 和 s= 字段),请在配置文件下设置用户名参数。当我们处理网关时,这与用户名参数没有任何关系。如果未设置此值,则系统默认使用 FreeSWITCH 作为用户名参数,并带有 o= 和 s= 字段。
<param name="username" value="AnyValueHere" />
Example:
.
v=0.
o=root 1346068950 1346068951 IN IP4 1.2.3.4.
s=root.
c=IN IP4 1.2.3.4.
t=0 0.
m=audio 26934 RTP/AVP 18 0 101 13.
a=fmtp:18 annexb=no.
a=rtpmap:101 telephone-event/8000.
a=fmtp:101 0-16.
a=ptime:20.
when you set <param name="username" value="root" />
- 分类: FreeSWITCH FreeSWITCH学习 呼叫中心
- 标签: FreeSWITCH