FreeSWITCH 源码及使用
文章平均质量分 93
开源软交换中间件 FreeSWITCH 源码解析
谈谈1974
火萎了,我也准备走了
展开
-
FreeSWITCH 1.10 源码阅读(7)-uuid_bridge 命令原理解析
命令用于将两条腿桥接在一起,以实现双方的通话。命令被下发送到 FreeSWITCH 时,会被。,在核心状态机的调度下,安装在这条腿上的回调函数。函数处理,这个函数将解析命令参数,接着调用。命令的使用实际上有一个时机问题需要格外注意,函数,此处核心是在 b-leg 上执行。函数进行与 a-leg 的媒体交互。将被执行,推动当前腿的状态向。函数会判断当前腿是否为主叫腿,将其写入对端,完成媒体的交换,当 a-leg 状态切换为。当状态发生改变,同理。函数的核心是从当前腿调用。b-leg 状态流转到。原创 2023-12-21 21:51:09 · 1162 阅读 · 1 评论 -
FreeSWITCH 使用指北(2)-多段音频顺序播放的设置
前缀不能省略,这个代表的是 FreeSWITCH 中的一个文件管理模块,多个音频文件用!在 FreeSWITCH 中涉及到放音的 APP 有不少,比较典型的是播放录音文件的。这两个 APP 播放录音的功能都依赖于。函数,而该函数可以借助。原创 2023-10-24 22:00:00 · 1951 阅读 · 5 评论 -
FreeSWITCH 中的 DTMF 按键采集
封装在 RTP 包中与普通的 RTP 语音包一起传输,检测的唯一方法是实时提取所有 RTP 包音频数据进行频谱分析,得到高频音和低频音的频率然后查表确认对应的按键值。是通话过程中按键信息传输的一种方式,本质上是由高频音和低频音的两个正弦波合成的音频信号。两种方式传输了 DTMF 信号,则在 FreeSWITCH 中会出现按键数据重复的问题,因为 FreeSWITCH 默认开启的。更有效率,但由于 SIP 信令和 RTP 收发采用的是不同的端口,所以可能会造成收到 DTMF 和实际的声音不同步的问题。原创 2023-03-24 21:30:00 · 2676 阅读 · 0 评论 -
FreeSWITCH 1.10 源码阅读(6)-unimrcp 模块原理
FreeSWITCH 的 unimrcp 模块源码解析原创 2023-03-17 21:00:00 · 1520 阅读 · 0 评论 -
FreeSWITCH 智能呼叫流程设计
用户与机器人对话通常都是以文本的形式进行,但是借助 ASR 和 TTS 技术,以语音电话为载体的智能呼叫系统成为可能。APP 会先打开 ASR 识别用户语音然后才放音,放音时会被用户的语音流打断。原创 2023-03-08 21:30:00 · 2143 阅读 · 0 评论 -
FreeSWITCH 呼入系统的简要设计
APP 回一个 180 给到用户终端,然后直接执行 esl 外连将 a-leg 交给目标服务器控制,由业务系统决定在 a-leg 上的响应行为。APP 桥接坐席,是因为坐席可能暂时忙其他事情直接挂断电话,这样用户会感知到对方挂断但自己这一端的电话还没有挂,影响体验。用户呼入的拨号计划示例如下,当用户呼入到 FreeSWITCH 时可以先执行。这里之所以不在 a-leg 的 outbound 连接上直接执行。原创 2023-03-03 18:15:00 · 1606 阅读 · 2 评论 -
FreeSWITCH 使用指北(1)-回铃音设置
在呼叫场景中,常见的需求是坐席作为 a 腿常驻,用户作为 b 腿接入,桥接两条腿即可进行通话。坐席接待完一个用户之后需要继续等待下一个用户,如果不做任何设置,b 腿挂断之后默认 a 腿也会挂断,下次需要重新拉起坐席的 a 腿,非常不便。命令统计结果异常,因为即便通话 UA 挂断,底层 SIP 会话已经结束,但在 FreeSWITCH 层面上这个 channel 依然存在。网络通畅的情况下使用。二者的功能类似,都是将两个会话桥接在一起进行媒体交换实现通话,但实际上有相当的区别。FreeSWITCH 的。原创 2023-02-24 19:30:00 · 3033 阅读 · 0 评论 -
FreeSWITCH 1.10 源码阅读(5)-外呼命令 originate 单腿呼出的处理
在 FreeSWITCH 1.10 源码阅读(4)-从呼入处理分析核心状态机 中笔者大致分析了上层状态机流转推进呼叫进程的处理过程,FreeSWITCH 中外呼和呼入的处理相当类似,但也有许多细节的区别,其单腿呼出时 channel 状态的流转如下图所示: 外呼命令的源码时序如下,图中状态机流转的部分步骤有所省略,读者可结合 FreeSWITCH 1.10 源码阅读(4)-从呼入处理分析核心状态机 中的内容补充理解。从源码来看, 呼叫一个内部注册用户的流程大致分为以下几个部分,笔者将据此进行分析:以外呼命令原创 2022-10-24 15:58:24 · 2740 阅读 · 0 评论 -
FreeSWITCH 1.10 源码阅读(4)-从呼入处理分析核心状态机
在 FreeSWITCH 1.10 源码阅读(3)-sofia 模块原理及其呼入处理流程 中笔者分析了 sofia 模块对底层 Sofia-SIP 协议栈的封装使用,而实际上呼叫进程的推进是由上层的状态机流转完成处理的。通常一通会话的完整生命周期如下,大致可以将其划分为 3 个阶段:FreeSWITCH 具有非常典型的分层结构,这一点也体现在 SIP 会话交互流程中,如下是一个简单示意图如下是 FreeSWITCH 对一通会话完整生命周期处理的源码时序,部分触发步骤有所省略,读者可结合 FreeSWITCH原创 2022-10-17 22:14:55 · 3916 阅读 · 0 评论 -
FreeSWITCH 1.10 源码阅读(3)-sofia 模块原理及其呼入处理流程
是应用层的信令控制协议,有许多开源的协议栈实现,其中就包括 。FreeSWITCH 中的 sofia模块 就是对底层 Sofia-SIP 协议栈的使用封装,提供了至关重要的呼入呼出能力。下图是 FreeSWITCH 中 sofia 模块的源码时序图,下文将对源码进行分析在 FreeSWITCH 1.10 源码阅读(1)-服务启动及 Event Socket 模块工作原理 中笔者分析了 FreeSWITCH 加载模块的流程,sofia 模块被加载时将触发 执行。这个函数比较长,不过逻辑很清晰,大致有以下几个原创 2022-10-13 11:16:23 · 2316 阅读 · 0 评论 -
FreeSWITCH 1.10 源码阅读(1)-服务启动及 event_socket 模块工作原理
FreeSWITCH 是一个开源的电话软交换平台,使用广泛,功能强大。本文基于 FreeSWITCH 1.10 版本,读者如有兴趣可以自行点击链接进入 github 下载源码。下图为 FreeSWITCH 服务启动及 Event Socket 模块运行工作的源代码时序,下文将对源码流程进行代码分析FreeSWITCH 是用 C 语言写的,服务启动的入口为 函数。这个函数非常长,不过主要的处理大致分为以下几步: 函数是初始化重要组件和模块的入口,不过本文关注的主要是以下几个函数调用,FreeSWITC原创 2022-09-16 15:30:33 · 3429 阅读 · 5 评论 -
FreeSWITCH 1.10 源码阅读(2)-xml_curl 模块原理
xml_curl模块提供集中管理 xml 配置文件的特性,FreeSWITCH 通过这个模块可以从外部服务器动态获取到关键的 xml 配置,实现分布式环境下配置的统一维护,感兴趣的读者可点击前往官方传送门了解使用方式。下图是 FreeSWITCH 中处理 xml 配置文件的源码时序图,下文将对源码进行分析。原创 2022-09-27 19:00:00 · 1314 阅读 · 3 评论