Jafucong's Blog - FreeSWITCH
type: channel
link: http://clx.fun/index.php/tag/FreeSWITCH/
items: FreeSWITCH从镜像库安装，开启mod_av、mod_managed等模块，支持g729、AMR、AMR-WB、h264、MP3等编码、支持C#[.Net]开发
items: 编译安装FreeSWITCH 1.10.8
items: Linux搭建本地yum仓库
items: 0408.WebRTC通信
items: 0407.网关配置
items: 0406.外部配置文件(external.xml)
items: 0405.配置SIP相关
items: 0404.请求头和通道变量
items: 0403.其他设置
items: 0402.Sofia 命令

FreeSWITCH从镜像库安装，开启mod_av、mod_managed等模块，支持g729、AMR、AMR-WB、h264、MP3等编码、支持C#[.Net]开发
type: item
date: 2022-10-29T11:41:00+08:00
description: 话不多说，直接开整【使用本站FreeSWITCH镜像库】yum install -y epel-release wget wget -O /etc/yum.repos.d/freeswitch-release.repo http://freeswitch.clx.fun:12130/freeswitch-history-centos7.repo yum clean all && yum makecache yum install -y ffmpeg-3.2.4-1.el7.centos.x86_64 yum install freeswitch-*-1.10.1-4.el7 -x freeswitch-v8 -y --skip-broken systemctl enable freeswitch systemctl start freeswitch systemctl status freeswitch fs_cli --------------------------------------------------- freeswitch@fs-dev> freeswitch -nonat freeswitch@fs-dev> show codec type,name,ikey codec,ADPCM (IMA),mod_spandsp codec,AMR / Bandwidth Efficient,mod_amr codec,AMR / Octet Aligned,mod_amr codec,AMR-WB / Bandwidth Efficient,mod_amrwb codec,AMR-WB / Octet Aligned,mod_amrwb codec,B64 (STANDARD),mod_b64 codec,BroadVoice16 (BV16),mod_bv codec,BroadVoice32 (BV32),mod_bv codec,CODEC2 3200/2400/1400/1200bps,mod_codec2 codec,G.711 alaw,CORE_PCM_MODULE codec,G.711 ulaw,CORE_PCM_MODULE codec,G.722,mod_spandsp codec,G.723.1 6.3k,mod_g723_1 codec,G.726 16k,mod_spandsp codec,G.726 16k (AAL2),mod_spandsp codec,G.726 24k,mod_spandsp codec,G.726 24k (AAL2),mod_spandsp codec,G.726 32k,mod_spandsp codec,G.726 32k (AAL2),mod_spandsp codec,G.726 40k,mod_spandsp codec,G.726 40k (AAL2),mod_spandsp codec,G.729,mod_g729 codec,GSM,mod_spandsp codec,H263 Video,mod_av codec,H263+ Video,mod_av codec,H264 Video,mod_av codec,LPC-10,mod_spandsp codec,MP3,mod_shout codec,OPUS (STANDARD),mod_opus codec,PROXY PASS-THROUGH,CORE_PCM_MODULE codec,PROXY VIDEO PASS-THROUGH,CORE_PCM_MODULE codec,Polycom(R) G722.1/G722.1C,mod_siren codec,RAW Signed Linear (16 bit),CORE_PCM_MODULE codec,Speex,CORE_SPEEX_MODULE codec,VP8 Video,CORE_VPX_MODULE codec,VP9 Video,CORE_VPX_MODULE codec,isac,mod_isac 37 total.

编译安装FreeSWITCH 1.10.8
type: item
date: 2022-10-20T23:43:00+08:00
description: 编译安装FreeSWITCH 1.10.8本站FreeSWITCH镜像站：http://freeswitch.clx.fun:12130/每日同步一次。2022年10月14日，freeswitch的1.10.8版本发布了，许久没有编译FreeSWITCH源码了，为防止手生，特来回顾一下。1. 安装源修改系统仓库源为阿里云（解决官方源速度问题）rm -rf /etc/yum.repos.d/* wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo yum clean all && yum makecache官方源（需要开发者帐号，速度尚可）：yum install -y https://files.freeswitch.org/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm epel-release本站镜像源：yum install -y epel-release wget wget -O /etc/yum.repos.d/freeswitch-release.repo http://freeswitch.clx.fun:12130/freeswitch-release.repo yum clean all && yum makecache2. 安装依赖一般依赖yum install -y yum-plugin-ovl centos-release-scl rpmdevtools yum-utils git yum install -y spandsp3-devel yum-builddep -y freeswitch --skip-broken yum install -y alsa-lib-devel autoconf automake bison broadvoice-devel bzip2 centos-release-scl cmake3 curl-devel devtoolset-7 devtoolset-7-gcc* e2fsprogs-devel erlang flite-devel g722_1-devel gcc-c++ gdbm-devel git gnutls-devel ilbc2-devel lame-devel ldns-devel libatomic libcodec2-devel libcurl-devel libdb4* libdb4-devel libedit-devel libidn-devel libjpeg-devel libmemcached-devel libmpg123-devel libogg-devel libpqxx-devel libshout-devel libsilk-devel libsndfile-devel yum install -y libtheora-devel libtiff-devel libtool libuuid-devel libvorbis-devel libvpx2* libvpx-devel libxml2-devel libyuv-devel lua-devel lzo-devel mongo-c-driver-devel ncurses-devel net-snmp-devel openssl-devel opus-devel pcre-devel perl perl-ExtUtils-Embed pkgconfig portaudio-devel postgresql-devel postgresql-libs python-devel rpmdevtools soundtouch-devel speex-devel sqlite-devel unbound-devel unixODBC unixODBC-devel unixODBC-devel.x86_64 vim wget which yasm yasm-devel yum-plugin-ovl yum-utils zlib-devel yum install -y sofia-sip-devel libks nasmmod_av依赖(以下为官方路径，本站路径请替换为：http://freeswitch.clx.fun:12130/src-releases/libs/)wget -c http://files.freeswitch.org/downloads/libs/libx264.tar.bz2 tar -jxvf libx264.tar.bz2 cd libx264 ./con…

Linux搭建本地yum仓库
type: item
date: 2022-09-18T16:16:00+08:00
description: 安装必要软件及官方库官方库： yum install -y https://$(< /etc/yum/vars/signalwireusername):$(< /etc/yum/vars/signalwiretoken)@freeswitch.signalwire.com/repo/yum/centos-release/freeswitch-release-repo-0-1.noarch.rpm epel-release yum install createrepo wget -y创建仓库文件夹cd /www/wwwroot/ mkdir freeswitch-repo使用reposync同步仓库reposync -r freeswitch -np freeswitch-repo/ reposync -r freeswitch-source -np freeswitch-repo/ reposync -r freeswitch-debuginfo -np freeswitch-repo/创建yum仓库数据库文件cd freeswitch-repo/ createrepo -p freeswitch createrepo -p freeswitch-debuginfo createrepo -p freeswitch-source下载仓库Key文件wget https://$(< /etc/yum/vars/signalwireusername):$(< /etc/yum/vars/signalwiretoken)@files.freeswitch.org/repo/yum/centos-release/RPM-GPG-KEY-FREESWITCH搭建yum源文件服务器yum install nginx -y配置网站server { listen 80; server_name freeswitch.clx.fun; index index.php index.html index.htm default.php default.htm default.html; root /www/wwwroot/freeswitch-repo; #SSL-START SSL相关配置，请勿删除或修改下一行带注释的404规则 #error_page 404/404.html; #SSL-END #ERROR-PAGE-START 错误页配置，可以注释、删除或修改 #error_page 404 /404.html; #error_page 502 /502.html; #ERROR-PAGE-END #PHP-INFO-START PHP引用配置，可以注释或修改 include enable-php-00.conf; #PHP-INFO-END #REWRITE-START URL重写规则引用,修改后将导致面板设置的伪静态规则失效 include /www/server/panel/vhost/rewrite/freeswitch.clx.fun.conf; #REWRITE-END #禁止访问的文件或目录 location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md) { return 404; } location / { root /www/wwwroot/freeswitch-repo; autoindex on; autoindex_exact_size off; autoindex_localtime on; charset utf-8,gbk; } #一键申请SSL证书验证目录相关设置 location ~ \.well-known{ allow all; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log off; access_log /dev/null; } location ~ .*\.(js|css)?$ { expires 12h; error_log off; access_log /dev/null; } access_log /www/wwwlogs/freeswitch.clx.fun.log; error_log /www/wwwlogs/freeswitch.clx.fun.error.log; }设置自同步创建shell文件：auto-sync-freeswitch.sh#!/bin/bash #中文-UTF8 mkdir /www/wwwroot/freeswitch-repo/ chmod 755 /www/wwwroot/f…

0408.WebRTC通信
type: item
date: 2022-04-28T14:08:00+08:00
description: WebRTC 直接从更好的 Web 浏览器和设备提供实时通信，无需 Adob​​e Flash 或 Silverlight 等插件。WebRTC始终在安全模式下运行。FreeSWITCH 为其公共会议桥提供了一个WebRTC 门户，以展示通过网页处理电话的可能性；加入我们的每周电话会议。无论是用于经典 WebRTC 还是 FreeSWITCH Verto 端点，使用 WSS 证书配置 FreeSWITCH 的过程都是相同的。Debian 7最小化安装 Debian 7。mkdir -p /usr/local/freeswitch/certs edit /usr/local/freeswitch/conf/sip_profiles/internal.xml # Set these params and save the file: 如果在 NAT 之后，请确保将 vars.xml 中的ext-sip-ip和ext-rtp-ip设置为 FreeSWITCH 的公共 IP 地址。 如果与 NAT 内外的客户端通信，您必须设置local-network-acl为rfc1918.auto，并将ext-sip-ip和ext-rtp-ip前缀为autonat:XXXX安装证书/usr/local/freeswitch/certs/wss.pem的布局:Cert, Key and Chain(s) are all contained in a single file in this order: -----BEGIN CERTIFICATE----- <cert> -----END CERTIFICATE----- -----BEGIN RSA PRIVATE KEY----- <key> -----END RSA PRIVATE KEY----- -----BEGIN CERTIFICATE----- <chain> -----END CERTIFICATE-----启动 FreeSWITCH其他方法# Create certificates: wget http://files.freeswitch.org/downloads/ssl.ca-0.1.tar.gz tar zxfv ssl.ca-0.1.tar.gz cd ssl.ca-0.1/ perl -i -pe 's/md5/sha256/g' *.sh perl -i -pe 's/1024/4096/g' *.sh ./new-root-ca.sh ./new-server-cert.sh self.bkw.org ./sign-server-cert.sh self.bkw.org cat self.bkw.org.crt self.bkw.org.key > /usr/local/freeswitch/certs/wss.pem # Setup Apache: # default-ssl: SSLCertificateFile /usr/local/freeswitch/certs/wss.pem SSLCertificateKeyFile /usr/local/freeswitch/certs/wss.pem SSLCertificateChainFile /usr/local/freeswitch/certs/wss.pem # Setup Sofia TLS: cat self.bkw.org.crt self.bkw.org.key > /usr/local/freeswitch/certs/agent.pem cat ca.crt > /usr/local/freeswitch/certs/cafile.pem # vars.xml: <X-PRE-PROCESS cmd="set" data="internal_ssl_enable=true"/> <X-PRE-PROCESS cmd="set" data="external_ssl_enable=true"/> # Restart FreeSWITCH. ## Now make sure your system has ca.crt imported so it will trust your new found hotness. # TEST: openssl s_client -connect self.bkw.org:443 openssl s_client -connect self.bkw.org:5061 openssl s_client -connect self.bkw.org:5081 openssl s_client -connect self.bkw.org:8082 # Dependi…

0407.网关配置
type: item
date: 2022-04-27T14:11:00+08:00
description: 每个配置文件可以有多个网关：<gateways> <gateway> elements... </gateway> <gateway> elements... </gateway> </gateways>网关具有可以引用它的属性“名称”。网关描述了如何使用不同的 UA 到达目的地。例如，网关可以提供对 PSTN 或专用 SIP 网络的访问。定义网关的原因大概是因为网关需要某些信息才能接受来自 FreeSWITCH 用户代理的调用。变量可以在网关上定义。入站变量设置在从网关接收到的呼叫的通道上，出站变量设置在发送到网关的呼叫的通道上。示例:<gateway name="gateway012"> <variables> <variable name="verbose_sdp" value="true"/> <variable name="absolute_codec_string" value="PCMU,PCMA" direction="outbound"/> <variable name="customer_id" value="3532" direction="inbound"/> </variables> </gateway>要从拨号计划访问特定网关,请使用sofia/gateway/<gateway_name>/<dialstring>网关参数以下是作为 gateway 元素的子元素的 param 元素列表：register true或false （例如当您不想注册但想对网关进行身份验证时）schema （目前应留空，默认为摘要）realm （在某些情况下您可能需要设置授权领域）username （这是注册中的授权和来自用户名，除非设置了 from-user。）auth-username （这将是出站注册的身份验证用户名）password （以及密码）caller-id-in-from （当遥控器不执行 rpid 或 p-asserted 时，callerid 位于 from 中）extension （这是遥控器要联系的联系人分机号）extension-in-contact （这将在 SIP Contact 标头中发送扩展名）proxy （默认为网关名称，除非您设置此参数）context （此网关所在的上下文）expire-seconds （如果留空，默认注册多少秒为 3600）retry-seconds （设置重试注册的秒数）from-user （在 from 字段中使用的用户名默认为用户名，如果留空）from-domain （在 from 字段中使用的域）register-proxy （在那些时候你有一个你注册的代理和一个不同的代理来发送调用到默认网关名称或代理，如果留空）contact-params （额外的联系人参数，即 tport=tcp）register-transport （udp、tcp 或 tls，如果您启用了它） 注意：网关的用户名参数不要与配置文件设置配置中的用户名参数混淆！ 注意：扩展参数影响通道变量Caller-Destination-Number和destination_number的内容。如果为空，Caller-Destination-Number将始终设置为网关的用户名。如果它有一个值，Caller-Destination-Number将始终设置为此值。如果它的值为auto_to_user，则Caller-Destination-Number将填充值为${sip_to_user}，这意味着在呼入电话的情况下真实拨打的号码。 ping-min 的意思是“在宣布网关启动之前我们必须有多少成功的 ping”。ping-min和ping-max之间的间隔是网关标记为 UP 的“安全区域”。因此，例如，如果我们有 min 3 和 max 6，如果网关启动并且我们在 3、4、5、6 之间移动计数器，则网关将启动。如果从 6 开始，我们连续释放 4 个（所以计数器 == 2）ping，则网关将被宣布关闭。请注意，在 sofia 启动时，网关始终以 UP 启动，因此即使 ping-min > 1 也会启动。当网关关闭时，“正确”的方式就开始了。 当此配置文件充当另一个 UA 的客户端时，使用参数“注册”。通过注册，FreeSWITCH 通知其他 UA 其下落。这通常在 FreeSWITCH 希望其他 UA 发送 FreeSWITCH 调用，而其他 UA 期望这种注册时使用。如果 FreeSWITCH 仅将其他 UA 用作网关（例如，到 PSTN），则通常不需要注册。当您希望 FS 为标头 To 使用 distict AOR 注册时，使用参数“distinct-to”。需要正确设置相关参数。例如，如果您希望…

0406.外部配置文件(external.xml)
type: item
date: 2022-04-27T09:12:00+08:00
description: 外部配置文件(external.xml)概述默认情况下，FreeSWITCH 提供在端口 5080 上运行的外部配置文件。外部配置文件处理到 SIP 提供商的外部或出站注册。SIP 提供商向您发送呼叫，您通过外部配置文件向您的提供商发送呼叫。外部配置文件允许匿名呼叫，这是必需的，因为您的提供商永远不会向您进行身份验证以向您发送呼叫。随 FreeSWITCH 提供的 external 配置文件 (conf/sip_profiles/external.xml) 是了解有助于 NAT 穿越的两个非常重要的变量的一个很好的起点。这些都是： 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 别名 使 SIP 配置文件绑定到此 IP 和端口以及您的 SIP/RTP IP 和端口。shutdown-on-fail 故障关机 如果设置为 true 并且配置文件无法加载，FreeSWITCH 将关闭。如果您正在运行诸如 Pacemaker 和 OpenAIS 之类的管理一对 FreeSWITCH 节点并自动监控、启动、停止、重新启动和待机失败的节点，这将非常有用。它将确保特定节点不能在“部分启动”的情况下使用。user-agent-string 用户代理这会在您的服务器发送的所有 SIP 消息中设置 User-Agent 标头。默认情况下，这可能类似于“FreeSWITCH-mod_sofia/1.0.trunk-12805”。如果您不想宣传详细的版本信息，您可以简单地将其设置为“FreeSWITCH”甚至“Asterisk PBX”作为一个笑话。设置此值时要小心，因为某些字符（例如“@”）可能会导致其他 SIP 代理将您的消息视为无效而拒绝。 log-level 日志级别 debug 调试 sip-trace SIP跟踪 context 拨号方案上下文从 ip:port 来的呼叫将被发送到 此 配置文件 sip-port SIP端口为 SIP 流量绑定的端口： sip-ip SIP IP地址为 SIP 流量绑定的 IP 地址。不要使用主机名，只使用 IP 地址。 或者，从 1.6 版开始，可以指定接口和可选地址族而不是 IP，对于 rtp-ip 也是如此。 rtp-ip rtp流IP地址为 RTP 流量绑定的 IP 地址。不要使用主机名，只使用 IP 地址 多个 rtp-ip 支持：如果添加了更多 rtp-ip 参数，它们将随着新呼叫的进行而循环使用。在撰写本文时，Windows不支持IPv6 地址ext-rtp-ip rtp流公网IP这是从 Internet 上看到 FreeSWITCH 背后的 IP，所以如果 FreeSWITCH 在 NAT 之后，这基本上是应该用于 RTP 的公共 IP。允许的值为：ext-rtp-ip描述例子$${variable}vars.xml 中的任何变量 w.x.y.z特定数字 IP 地址 autonat:w.x.y.z用于 LAN 和 WAN，以避免发送到 LAN 设备的 SIP CONTACT 错误 auto猜测IP（通过查看IP路由表猜测哪个接口是默认路由） auto-natFS 使用 uPNP 或 NAT-PMP 来发现它应该…

0405.配置SIP相关
type: item
date: 2022-04-26T09:21:00+08:00
description: SIP 配置在三个不同的配置文件中进行。vars.xml在此文件中，您只需指定一个参数。该参数是 $${domain}。此参数应包含电话/用户代理在注册时使用的域名（或类似 IP 地址的文本字符串）。此外，您可以将“hold_music”频道变量设置为波形文件路径或“indicate_hold”（在保持时发送重新邀请）。sip_profiles/internal.xml此文件包含 SIP 特定信息，例如您拥有哪些提供商（用于拨打外部电话）以及注册过程应如何工作。默认情况下，所有电话都可以注册。由于我们只想允许注册的手机使用我们的通信能力，我们需要更改名为“accept-blind-reg”的参数。(?) directory/default.xml最后要做的是指定哪些用户可以注册自己。这是在“目录”目录中完成的。密码可以以明文或 A1 哈希（“用户名：域：密码”的 MD5 字符串）形式发送。密码也是可选的，但请注意始终必须指定 params 标签，否则将找不到用户。<domain name="$${domain}"> <user id="arne"> <params></params> </user> <user id="arnepw"> <params> </params> </user> </domain>另请注意，我已将域名更改为 $${domain} 以匹配 FreeSwitch.xml 中的字符串。这样，只需要在更改域时更改FreeSwitch.xml即可。高级用法您可以为 FreeSWITCH 提供您自己的目录（由网络服务器动态生成）。这是通过使用 mod_xml_curl 模块完成的。有关其他信息，请查看此处： mod_xml_curl

0404.请求头和通道变量
type: item
date: 2022-04-25T14:05:00+08:00
description: 添加请求标头您可以通过将字符串sip_h_添加到任何通道变量的前缀来向出站 SIP 呼叫添加任意标头，例如：<action application="set" data="sip_h_X-Answer=42"/> <action application="bridge" data="sofia/mydomain.com/1000@example.com"/>请注意，对于 BYE 请求，您需要在通道变量上使用前缀sip_bye_h_。虽然不是必需的，但您应该在标头前加上“X-”以避免与其他 SIP 堆栈的互操作性问题。所有入站 SIP 呼叫都会将任何 X- 标头安装到本地变量中。这意味着您可以轻松地将任何 X-header 从一个 FreeSWITCH 实例桥接到另一个实例。要访问上面第二个框的标题，请使用通道变量 ${sip_h_X-Answer}重要的是要注意语法 ${sip_h_custom-header}不能用于检索任何不以 X- 开头的自定义标头。这是因为 Sofia 只读取并放入以 X- 开头的自定义标头变量。添加响应标头可以设置三种类型的响应头前缀：响应头sip_rh_临时响应标头sip_ph_Bye响应头sip_bye_h_每个前缀将专门为其给定类型的请求添加标头没有“全局”响应标头前缀将来所有响应消息添加标头。例如：<action application="set" data="sip_rh_X-Reason=Destination Number Not in Footprint"/> <action application="set" data="sip_bye_h_X-Accounting=Some Accounting Data"/>SIP 消息如下：INVITE sip:19099099099@1.2.3.4 SIP/2.0 Via: SIP/2.0/UDP 5.6.7.8:5080;rport;branch=z9hG4bKyg61X9v3gUD4g Max-Forwards: 69 From: "DJB" <sip:2132132132@5.6.7.8>;tag=XQKQ322vQF5gK To: <sip:19099099099@1.2.3.4> Call-ID: b6c776f6-47ed-1230-0085-000f1f659e58 CSeq: 30776798 INVITE Contact: <sip:mod_sofia@5.6.7.8:5080> User-Agent: FreeSWITCH-mod_sofia/1.2.0-rc2+git~20120713T162602Z~0afd7318bd+unclean~20120713T184029Z Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, MESSAGE, UPDATE, INFO, REGISTER, REFER, NOTIFY Supported: timer, precondition, path, replaces Allow-Events: talk, hold, conference, refer Content-Type: application/sdp Content-Disposition: session Content-Length: 229 P-Charge-Info: <sip:2132132132@5.6.7.8>;npi=0;noa=3 X-FS-Support: update_display,send_info. Remote-Party-ID: "DJB" <sip:2132132132@5.6.7.8>;party=calling;screen=yes;privacy=off剥离单个 SIP 标头有时 SIP 提供商会添加额外的标头信息。大多数时候，他们这样做是为了自己使用（跟踪呼叫）。但是这些额外的信息会导致很多问题。在某些情况下，我们将此呼叫直接桥接到第三方系统时呼叫被丢弃，因为第三方系统不接受此标头，因此我们必须剥离那些 SIP 标头。<action application="unset" data="sip_h_X-voipnow-did"/> <action application="unset" data="sip_h_X-voipnow-extension"/>剥离所有自定义 SIP 标头如果您希望剥离所有自定义标头，同时仅保留拨号方案中定义的标头：<action application="set" data="sip_copy_custom_headers=false"/> <action application="set" data="sip_h_X-…

0403.其他设置
type: item
date: 2022-04-25T09:32:00+08:00
description: 同一分机多次注册呼叫一个分机并振铃多个电话您必须在conf/sip_profiles/internal-ipv6.xml和conf/sip_profiles/internal.xml中启用多个注册（在 conf/autoload_configs/switch.conf.xml 中的设置无效）。此参数的有效值为 "contact"、"true"、"false"、" call-id"。 将此值设置为“contact”将删除基于 sip_user、sip_host 和联系人字段的旧注册，而不是 call_id。振铃所有注册的分机在您的拨号方案 ( conf/dialplan/default.xml ) 中，您现在可以使用sofia_contact查找函数返回所有已注册的 sip 配置文件；例如，在<extension name="Local_Extension">和<extension name="extension-intercom">部分中的default.xml替换：<extension name="extension-intercom"> <condition field="destination_number" expression="^8(10[01][0-9])$"> <action application="set" data="dialed_extension=$1"/> <action application="export" data="sip_auto_answer=true"/> <!-- <action application="bridge" data="user/${dialed_extension}@${domain_name}"/> --> <action application="bridge" data="${sofia_contact(${dialed_extension})}"/> </condition> </extension>FreeSWITCH 1.0.1 及更高版本可以通过在目录中将变量sip-allow-multiple-registrations设置为“false”来禁用每个用户的多个注册。在这种情况下，将不允许该单个用户使用多个注册。max-registrations-per-extension 可以设置分机最大注册数< param name="max-registrations-per-extension" value="1"/>更多信息请参见Sofia配置文件终止注册。您可以从 CLI 或任何接受 API 命令的地方终止注册，使用类似于以下的命令：sofia profile <profile_name_here> flush_inbound_reg [optional_callid]

0402.Sofia 命令
type: item
date: 2022-04-22T09:44:00+08:00
description: 命令呼叫远程 SIP 服务器上的分机基本形式：sofia/<profile>/<extension>@<remoteserver>示例 1：sofia/$${profile}/$1@example.org示例 2：sofia/foo/0@sipphone.com其中<profile>是 sofia.conf.xml 中定义的配置文件之一的名称。默认情况下，有一个配置文件定义为 name="$${domain}"，其中 $${domain} 变量在 freeswitch.xml 中定义，默认为 mydomain.com。因此，如果您没有更改这些配置文件并且正在拨打远程服务器上的分机，那么配置将是sofia/ mydomain.com / <extension> @ <remoteserver> 要列出所有定义的配置文件，请在 CLI 上键入sofia status 。呼叫本地注册的端点基本形式：sofia/<profile>/<extension>%<localserver>示例 1：sofia/$${profile}/$1%$${domain}示例 2：sofia/foo/101%192.168.1.1其中 foo 是 SIP 配置文件，101 是注册端点的用户 ID，192.168.1.1 是 FreeSWITCH 的 IP 地址。如果您的 SIP 配置文件名称设置为您的域，或者在配置文件中设置了域属性（例如，<profile name="internal" domain="$${domain}">），您可以使用以下内容：sofia/<profile>/<extension>并在拨打本地分机时放弃域。刷新和重新启动注册的端点您可以通过从控制台发出 flush_inbound_reg 命令来刷新注册或重新启动特定的注册端点。sofia profile <profile_name> flush_inbound_reg [<call_id>|<user@host>] [reboot]如果您省略 <call_id> 和/或 <user@host>，您将刷新/重新启动配置文件上的每个注册端点。 您还可以使用 check_sync 命令：sofia profile <profile_name> check_sync <call_id> | <user@domain>创建新配置如果您创建了一个新配置文件，您需要从控制台启动它：sofia profile <new_profile_name> start重新加载配置文件和网关您可以通过从控制台发出 killgw 命令来删除特定网关。如果使用 _all_ 作为网关名称，所有网关都将被杀死sofia profile <profile_name> killgw <gateway_name>重启网关您可以通过从控制台发出 killgw 命令，然后重新扫描配置文件来强制重启网关（适用于强制重新注册或类似操作）。在具有活动呼叫的配置文件上执行此操作是安全的。sofia profile <profile_name> killgw <gateway_name> sofia profile <profile_name> rescan添加/更改现有网关假设您在 /usr/local/freeswitch/conf/sip_profiles/external 目录中拥有所有网关，并且您刚刚创建了一个新条目。您可以通过从控制台发出 rescan reloadxml 命令来将新网关添加到 FreeSWITCH，如下例所示。这将加载新创建的网关，并且不会影响当前启动的任何呼叫。sofia profile external rescan reloadxml您现在意识到您搞砸了新网关中的 IP 地址，需要更改它。因此，您编辑网关文件并进行所需的任何更改。然后，您需要发出以下命令来销毁网关，然后让 FreeSWITCH 重新加载更改，同时影响当前启动的任何现有调用。sofia profile external killgw <gateway_name> sofia profile external rescan reloadxml查看 SIP 注册您可以通过从控制台运行以下命令来查看所有已注册的设备。sofia status profile <profile name> reg sofia status profile default reg sofia status profile outbound reg您还可以使用 xmlstatus 来以 XML 格式检索状态。如果您使用 mod_xml_rpc，这将特别有用。sofia xmlstatus profile <profile name> reg sofia xmlst…