freeswitch拨打分机号源代码跟踪
概述
freeswitch是一款非常好用的开源VOIP软交换平台。
之前我们有介绍过使用fs拨打分机号的方法,其中代码流程是比较复杂的,所以单独开一章介绍。
fs拨打分机号,是使用send_dtmf接口实现,本节主要介绍接口是如何把DTMF码发送出去的,经过了哪些模块。
环境
centos:CentOS release 7.0 (Final)或以上版本
freeswitch:v1.8.7
GCC:4.8.5
拨号计划
fs配置文件/usr/local/freeswitch/conf/dialplan/test.xml
<include>
<context name="ext_test">
<extension name="test" continue="false">
<condition field="destination_number" expression="^(\d+)$">
<action application="sched_hangup" data="+10"/>
<action application="send_dtmf" data="1234"/>
<action application="sleep" data="5000"/>
<action application="endless_playback" data="/usr/local/freeswitch/sounds/101-baidu-mp3.mp3"/>
</condition>
</extension>
</context>
</include>
源代码流程
图1,“FS CORE”是freeswitch的核心模块,“mod_dptools”和“mod_sofia”是fs的子模块。
因为dialplan中的流程是先“send_dtmf”,然后“sleep”,所以从上面的调用流程图中,可以看到流程起点都是从mod_dptools模块开始的。
总结
freeswitch核心模块的流程和子模块众多,模块之间的调用和注册回调函数比较复杂,流程多变。
梳理子模块功能代码流程有助于理解fs的整体架构。
空空如常
求真得真
最新文章
- 利用Python进行数据分析(10) pandas基础: 处理缺失数据
- web工程关于500错误
- Microsoft 2013 新技术学习笔记 三
- 【总结】IE和Firefox的Javascript兼容性总结(转)
- 疯狂java讲义——继承
- chrome 41 空格 &;nbsp;
- elecworks 报表----按线类型的电线清单
- EasyUI篇のDataGrid
- Hbuilder主页面控制子页面的方法
- [Unity] A* pathfinding project integrated with influence map
- EntityFrameWork连接多Db配置
- FFT\NTT总结
- rpc接口调用以太坊智能合约
- PHP拿到接口数据返回的json以及传参-----ajax 跨域请求 ---
- Windows Update Medic Service 拒绝访问
- 金三银四季来了!Java 面试题大放送,能答对70%就去BATJTMD试试~
- UOJ #76 【UR #6】懒癌
- poj3349 散列表(hash)
- IOS初级:SDWebImage
- 非常可乐(杭电hdu1495)bfs
热门文章
- 还在用em strong吗?快来试试 text-emphasis
- 【报错解决】Uncaught TypeError: Failed to execute &#39;readAsDataURL&#39; on &#39;FileReader&#39;: parameter 1 is not of type &#39;Blob&#39;.
- Apache Flink系列-④有状态函数
- 项目完成 - 基于Django3.x版本 - 开发部署小结
- 攻防世界-MISC:pure_color
- Django/MySql数据库基本操作&;ORM操作
- 开发一款让我们慢慢变好的微信小程序
- SmartDialog迁移至4.0:一份真诚的迁移说明
- Linux磁盘和文件系统知识总结
- 好客租房1-React基础目标