news 2026/6/13 17:37:31

FreeSWITCH 简单图形化界面51 - 拨号应用 Bridge 介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
FreeSWITCH 简单图形化界面51 - 拨号应用 Bridge 介绍

FreeSWITCH 简单图形化界面51 - 拨号应用 Bridge 介绍

  • 00、 一个fs的web配置界面预览
  • 01、 Web 配置界面预览
  • 02、 Web界面安装参考
  • FreeSWITCH 核心应用详解:mod_dptools: bridge
    • 1. 核心概念
      • 1.1 bridge 与 uuid_bridge 的区别
      • 1.2 基本语法
        • bridge
        • uuid_bridge
    • 2. 目标端点 (Endpoints) 格式
    • 3. 呼叫策略:并发与顺序
      • 3.1 并发呼叫 (Simultaneous / Call Blast)
      • 3.2 顺序呼叫 (Sequential / Failover)
    • 4. 高级参数与变量传递
      • 4.1 变量作用域
    • 5. 常见配置示例
      • 5.1 基础桥接
      • 5.2 带有认证信息的桥接
      • 5.3 自定义 SIP URI 参数
      • 5.4 忽略早期媒体 (Ignore Early Media)
    • 6. 特殊通道 (Special Channels)
      • 6.1 `error` 通道
      • 6.2 `group` 通道
      • 6.3 `loopback` 通道
      • 6.4 `user` 通道
    • 7. 常用选项与优化
      • 7.1 通话超时 (Timeout)
      • 7.2 旁路媒体 (Bypass Media)
      • 7.3 回铃音 (Ringback)
      • 7.4 设置主叫号码 (CallerID)

00、 一个fs的web配置界面预览

对于需要通过图形化界面管理 FreeSWITCH 的场景,可直接访问以下 Web 配置界面。

01、 Web 配置界面预览

界面地址备用地址登录信息
http://www.fspbx.cn/http://myfs.f3322.net:8020/用户名:admin密码:admin

02、 Web界面安装参考

若需自行部署 FreeSWITCH 图形化界面,包含 Docker、脚本、ISO 镜像三种安装方式,适配不同系统环境:

  • 安装指南地址:https://blog.csdn.net/jia198810/article/details/137820796
  • 核心安装方式概览:
  1. Docker 安装:快速部署;
  2. 脚本安装:适配 Almalinux、RockyLinux、Debian、Ubuntu 、欧拉等系统,提供一键安装命令,安装后需重启初始化;
  3. ISO 镜像安装:基于 Almalinux制作的镜像,刻录到 U 盘或光盘后可自动安装,适合全新服务器部署。

FreeSWITCH 核心应用详解:mod_dptools: bridge

在 FreeSWITCH 中,bridge是最核心、最常用的应用之一。它的主要功能是将一个现有的通话通道(A Leg)与一个或多个新的通道(B Leg)进行桥接,从而在两个端点之间建立媒体流(音频/视频)连接。

本文将详细解析bridge的用法、参数格式、高级特性以及常见场景。


1. 核心概念

1.1 bridge 与 uuid_bridge 的区别

虽然两者都能实现通话桥接,但使用场景不同:

  • bridge(本文主角):通常用于拨号计划中。它会主动发起一个新的呼叫(Originate),并在新呼叫接通后将其与当前通道桥接。
  • uuid_bridge:通常用于 API 调用或 ESL 脚本中。它用于将两个已经存在的通话通道(通过 UUID 指定)连接在一起。

1.2 基本语法

bridge

在 Dialplan 中使用的基本语法如下:

<actionapplication="bridge"data="目标端点"/>

例如下面的呼叫user/999999:

<extensionname="测试:999999"><conditionexpression="^(999999)$"field="destination_number"><actionapplication="mkdir"data="$${recordings_dir}/phone/${strftime(%Y%m%d)}"/><!--destination_number和实际呼叫的号码保持一致--><actionapplication="set"data="destination_number=$1"/><actionapplication="set"data="rdnis=$1"/><!--录音文件--><actionapplication="set"data="record_filename=${caller_id_number}-${destination_number}-${strftime(%H_%M_%S)}.wav"/><actionapplication="set"data="record_filepath=$${recordings_dir}/phone/${strftime(%Y%m%d)}/${record_filename}"/><!--接通后再录音--><actionapplication="set"data="media_bug_answer_req=true"/><actionapplication="record_session"data="${record_filepath}"/><!--通话记录--><actionapplication="export"data="call_type=phone"/><actionapplication="export"data="trunk_name=-"/><actionapplication="export"data="record_filename=${record_filename}"/><actionapplication="export"data="process_cdr=b_only"/><!--使用bridge开始呼叫user--><actionapplication="bridge"data="user/999999"/><actionapplication="hangup"/></condition></extension>
uuid_bridge

在fs_cli里执行。

freeswitch@MyFs>uuid_bridge -USAGE:<uuid><other_uuid>

2. 目标端点 (Endpoints) 格式

bridgedata参数非常灵活,支持多种端点类型:

  • 用户目录 (Directory):user/1000(通过配置文件中的 dial-string 路由)
  • Sofia 网关 (Gateway):sofia/gateway/my_provider/18005551234
  • Sofia 外部地址:sofia/external/18005551234@sip.example.com
  • LCR (最小成本路由):lcr/18005551234

3. 呼叫策略:并发与顺序

bridge支持同时呼叫多个目的地,并通过特殊符号控制呼叫策略。

3.1 并发呼叫 (Simultaneous / Call Blast)

使用逗号 (,)分隔多个端点。FreeSWITCH 会同时向所有端点发起呼叫,第一个端点接听后,其他端点的呼叫会被立即挂断。

  • 场景:呼叫组(Ring Group),如同时拨打座机和手机。
  • 示例:
    <actionapplication="bridge"data="user/1000,user/1001,user/1002"/>

3.2 顺序呼叫 (Sequential / Failover)

使用竖线 (|)分隔多个端点。FreeSWITCH 会按顺序呼叫,只有当前一个端点无法接通(忙音、超时、无应答)时,才会呼叫下一个。

  • 场景:故障转移(Failover),如主网关不可用时切换到备用网关。
  • 示例:
    <actionapplication="bridge"data="sofia/gateway/primary/1234|sofia/gateway/backup/1234"/>

4. 高级参数与变量传递

bridge允许在呼叫目标端点时设置通道变量(Channel Variables),以控制 B Leg 的行为(如设置 CallerID、超时时间等)。

4.1 变量作用域

FreeSWITCH 提供了三种括号来定义变量的作用域:

  1. 方括号[ ](Endpoint Local):
    仅作用于紧随其后的那个特定端点。

    <!-- 给 1000 设置一个变量,给 1001 设置另一个 --><actionapplication="bridge"data="[my_var=foo]user/1000,[my_var=bar]user/1001"/>
  2. 大括号{ }(Thread Global):
    作用于当前桥接线程中的所有端点。

    <!-- 1000 和 1001 都会继承这个变量 --><actionapplication="bridge"data="{my_global_var=test}user/1000,user/1001"/>
  3. 冒号下划线冒号:_:(Enterprise Origination):
    用于分隔独立的 Originate 命令。这允许在一个bridge动作中执行完全独立的呼叫逻辑,常用于多线程或复杂的用户目录路由。

    <actionapplication="bridge"data="user/bob@domain:_:user/alice@domain"/>

5. 常见配置示例

5.1 基础桥接

将来电桥接到一个外部 SIP 地址:

<actionapplication="bridge"data="sofia/internal/9998881111@sip.provider.com"/>

5.2 带有认证信息的桥接

如果目标 SIP 服务器需要认证,可以直接在 URL 前通过变量传递(无需预先定义 gateway):

<actionapplication="bridge"data="{sip_auth_username=foo,sip_auth_password=bar}sofia/internal/9998881111@sip.provider.com"/>

5.3 自定义 SIP URI 参数

在 INVITE 请求中添加特殊的参数(如 LRN 路由信息):

<!-- 方法一:直接拼接在 URL 中 --><actionapplication="bridge"data="sip:12135551212;rn=12135550000@1.2.3.4:5060"/><!-- 方法二:使用变量导出 (推荐) --><actionapplication="export"data="nolocal:sip_invite_tel_params=rn=12135550000;npdi=yes"/><actionapplication="bridge"data="sofia/gateway/gw/12135551212"/>

5.4 忽略早期媒体 (Ignore Early Media)

场景:当呼叫包含手机或 PSTN 网关时,对方的彩铃或占线音(Early Media)可能会被误认为是接通信号,导致其他同时呼叫的分机停止振铃。
解决:设置ignore_early_media

<actionapplication="set"data="ignore_early_media=true"/><actionapplication="bridge"data="user/1000,sofia/gateway/pstn/13800138000"/>

6. 特殊通道 (Special Channels)

除了常规的 SIP 地址,bridge还支持一些特殊的虚拟通道:

6.1error通道

用于指定挂断原因,常用于测试或特定的业务逻辑返回。

<actionapplication="bridge"data="error/user_busy"/>

6.2group通道

动态呼叫目录中定义的某个组(Group)内的所有成员。

<actionapplication="bridge"data="group/sales@${domain_name}"/>

6.3loopback通道

警告:慎用!
这会创建一个伪端点,使呼叫重新进入拨号计划进行处理。如果使用不当,极易造成死循环或 CDR 记录混乱。

<actionapplication="bridge"data="loopback/1000"/>

6.4user通道

通过用户目录中的dial-string参数进行路由。这允许在配置文件中统一管理用户的实际联系方式,而无需修改拨号计划。

<actionapplication="bridge"data="user/john@example.com"/>

7. 常用选项与优化

7.1 通话超时 (Timeout)

设置等待 B Leg 接听的最大秒数。

<actionapplication="set"data="call_timeout=20"/><!-- 20秒后无应答则挂断 -->

7.2 旁路媒体 (Bypass Media)

在特定条件下(如两端都在公网或可直连),让媒体流直接在两个端点之间传输,FreeSWITCH 只处理信令。这可以减轻 FreeSWITCH 服务器的负载。

<actionapplication="set"data="bypass_media=true"/>

7.3 回铃音 (Ringback)

强制向 A Leg 播放回铃音。

<actionapplication="set"data="ringback=${us-ring}"/>

7.4 设置主叫号码 (CallerID)

在呼叫出局到网关时,设置显示的主叫号码。

<actionapplication="set"data="effective_caller_id_name=CompanyX"/><actionapplication="set"data="effective_caller_id_number=123456789"/>

💗 2026年
🐂 祝君成功,好运连连,牛气冲天

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 1:46:11

读懂 sap.m.URLHelper 文档里的 library: sap.m 与 Module: sap/m/library

你在 SAP UI5 API Reference 里看到的这两个字段&#xff0c;看起来都在讲 sap.m&#xff0c;但它们回答的是两类完全不同的问题&#xff1a; library: sap.m&#xff1a;这条 API 属于哪个 UI5 库&#xff08;library 维度&#xff1a;交付、依赖、主题、预加载等的组织单位&…

作者头像 李华
网站建设 2026/6/12 13:06:39

基于SpringBoot的考编论坛网站毕业设计源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在构建一个基于SpringBoot框架的考编论坛网站&#xff0c;以实现以下研究目的&#xff1a; 首先&#xff0c;通过设计并实现一个功能完善的考编论坛网站…

作者头像 李华
网站建设 2026/6/13 6:23:55

干货满满!大数据流处理的数据清洗技巧

干货满满&#xff01;大数据流处理的数据清洗技巧&#xff1a;从“流水质检”到“智能提纯” 一、引入与连接&#xff1a;当“流水”变“乱流”&#xff0c;你需要实时“治水” 清晨7点&#xff0c;某电商平台的实时推荐系统突然“抽风”——给用户推送了10条“婴儿奶粉”广告&…

作者头像 李华
网站建设 2026/6/10 18:29:03

基于SpringBoot的仓库管理系统毕设源码

博主介绍&#xff1a;✌ 专注于Java,python,✌关注✌私信我✌具体的问题&#xff0c;我会尽力帮助你。一、研究目的本研究旨在设计并实现一个基于SpringBoot框架的仓库管理系统&#xff0c;以满足现代企业对高效、可靠、易用的仓库管理解决方案的需求。具体研究目的如下&#x…

作者头像 李华
网站建设 2026/6/10 14:51:41

HY-MT1.5如何接入现有系统?API接口调用实战教程

HY-MT1.5如何接入现有系统&#xff1f;API接口调用实战教程 1. 引言&#xff1a;为什么选择HY-MT1.5进行翻译集成&#xff1f; 随着全球化业务的不断扩展&#xff0c;多语言实时翻译能力已成为企业出海、内容本地化和跨语言沟通的核心需求。传统商业翻译API&#xff08;如Goog…

作者头像 李华