文章目录
- 1. 拨号计划
- 1.1 定义
- 1.2 XML Dialplan
- 1.2.1 配置文件的结构
- 1.2.2 默认配置文件简介
- 1.3 正则表达式
- 1.4 通道变量
- 1.5 工作机制
- 1.6 常用的Dialplan App
- 1.7 小结
- 2. SIP协议
- 2.1 SIP协议基础
- 2.2 HTTP协议和SIP协议
- 2.3 3PCC
- 3. 媒体
- 3.1 媒体处理
- 3.1.1 音频编码
- 3.1.2 透传、媒体绕过与媒体代理
1. 拨号计划
1.1 定义
拨号计划是freeswitch中至关重要的一部分,主要作用是对电话进行路由,决定和影响通话的流程。
1.2 XML Dialplan
由一系列的配置文件组成,这些XML可以是静态配置的,也可以使用动态配置方式从其他服务器或脚本中动态获取。
1.2.1 配置文件的结构
拨号计划相当于多个Context组成。每个Context中有多个Extension。
Extension相当于路由表中的表项,每一个Extension都有一个nam属性,name可以是任意合法的字符串,本身对于呼叫流程没有任何影响。
1.2.2 默认配置文件简介
系统默认提供的配置文件包含三个Context,分别是default、features和public。
- default是默认的Diaplan,注册用户用来通电话。
- public用于接收外来呼叫
1.3 正则表达式
Diaplan使用与Perl兼容的正则表达式匹配算法。
1.4 通道变量
在freeswitch中,每一次呼叫都由一条或多条“腿”组成,其中一条腿又称为一个channel
1.5 工作机制
(1)步骤
new -> init -> routing —transfer—> execute -> hangup -> destroy
(2)步骤解释
当新建(new)一个channel时,它首先会进行初始化(init),然后进入(routing)阶段,也就是我们查找解析diaplan的阶段。找到合适的路由入口后,hunting会执行(execute)一系列动作,最后无论哪一方挂机,都会进入挂机(hangup)阶段。后面的报告(reporting)阶段一般用于进行统计、计费,最后将channel销毁(destroy),释放系统资源。
在execute状态,可能会发生转移(transfer),可以转移到同一context下其他extension,或者转移到其他context下 的extension,但无论发生哪种转移,都会重新进行路由,也就是重新进入routing阶段,重新Hunt Dialplan
1.6 常用的Dialplan App
(1)set
用于设置一个通道变量
(2)echo
echo即回声,用于调试
(3)info
info在调试的时候也比较有用,它会在日志中打印全部的通道变量
(4)answer
answer用于应答一路呼叫
1.7 小结
拨号计划三个核心要素:Dialplan、context和extension。
2. SIP协议
2.1 SIP协议基础
会话初始协议是一个控制发起、修改和终结交互式多媒体会话的信令协议。
2.2 HTTP协议和SIP协议
SIP是一个基于文本的协议,这一点与HTTP和SMTP类似。
- SMTP:主要用于电子邮件的传输的协议。
2.3 3PCC
指的是由第三方控制者在另外两者之间建立的一个会话,由控制着负责会话双方的媒体协商
3. 媒体
3.1 媒体处理
常见的媒体:音频、视频、图像、文本等。
3.1.1 音频编码
从模拟信号变成数字信号的过程成为模数转换,AD转换要经过采样、量化、编码三个过程。
音频编码最基本的两个技术参数就是采样频率和打包周期。
3.1.2 透传、媒体绕过与媒体代理
RTP媒体流也是经过freeswitch转发。