http://item.taobao.com/item.htm?id=21712227020
百问FreeSwitch:VOIP,软交换,FreeSwitch实用案例解答 余洪涌著
作者介绍:
余洪涌:国家系统分析员,从1997年起一直从事语音在电信行业应用方面计算机系统研发工作。
曾经开发过多个大型电信平台,实网使用用户达上百万,单系统并发呼叫用户达数千线。
曾经在中科院声学所,中科信利国家重点语音实验室学习和工作多年,对计算机语
音端点检测,语音编解码,语音识别,声纹识别,VOIP及其在实际项目中的应用等有深入的了解。
曾在国家核心期刊上发表一篇论文,拥有两项发明专利。
百问FreeSwitch简要介绍:
本书是讨论软交换,VOIP 和FreeSwitch方面的书籍。
关于软交换,VOIP的书很多,但是关于FreeSwitch的中文版的书几乎没有
(我所知道的除了杜金房写的尚未出版的之外,其他的没有听说)。
假如你是搞VOIP的,不知道啥是FreeSwitch,Astrisk应该听说过吧。
百度FreeSwitch就啥都清楚了。
本书不是严谨的学术书籍,
是针对实际应用研发和部署使用过程中的一些问题的经验总结,很多的问题答案
只是一种解决办法。我相信许多答案一定不是最佳答案,甚至很多答案只是算凑
合能解决的办法之一。特别要指出的是本文档不是回答WHY的,大多是回答HOWTO的。
因此假如你想要知道WHY,我认为作为程序员,没有其他途径,直接看code 是最快
的办法。因为本文档不是FreeSwitch的源码分析文档,因此回答不了WHY。
百问FreeSwitch的读者他们可能是:
A. 对VOIP有兴趣没有基础的伙计
B. 对FreeSwitch有兴趣站在门口观望的伙计,这个文档可以解决你的许多困惑
C. 计划把FreeSwitch从实验所或者研发中心部署应用到实网系统中的伙计
D. 准备使用FreeSwitch做IPPBX的伙计
E. 准备开发软交换或者VOIP呼叫中心的伙计
F. 对FreeSwitch进行运营维护的伙计
G. 之前搞Astrisk,由于受到各种困扰,现在准备跳槽搞FreeSwitch的同学
大体说来,本文档比较适合与搞软交换或者FreeSwitch初级和中级研发运营工程人员。
百问FreeSwitch目录:
版权声明: 3
序: 3
联系作者: 3
前言: 9
致谢: 10
声明: 10
适合的本文档读者对象: 10
不适合的本文档读者对象: 11
本文档涉及的环境和工具: 11
本文档约定: 11
本文档涉及内容: 12
第一章VOIP 基础部分 14
0. 研究VOIP/FreeSwitch之前需要哪些基础知识? 14
1. VOIP基础设施有哪些? 14
2. SIP 基本问题有哪些? 14
3. RTP 基本问题有哪些? 15
4. SDP 基本问题有哪些? 16
5. 常用的支持语音的软电话有哪些? 17
6. 常用的支持视频的软电话有哪些? 17
7. Windows下哪个开源的软电话比较好二次开发? 17
8. Windows下开源PJSIP软电话如何编译? 17
9. Android下哪个开源的软电话比较好用又好上手? 19
10. Android下ImsDroid开源软电话如何编译? 19
11. 常见语音编码器有哪些? 22
12. 常见视频编码器有哪些? 23
13. PSTN和VOIP区别有哪些? 23
14. PSTN常用信令有哪些 23
15. VOIP的系统开发和测试有哪些常用工具? 23
16. 如何使用Ethereal对指定机器进行抓包分析? 24
17. 如何使用Ethereal对指定端口进行抓包分析? 25
18. Ethereal能对本机内的通信进行抓包吗? 26
19. Ethereal能对其他机器之间的通信进行抓包吗? 26
20. Windows下使用啥命令工具可看哪个port被谁占用? 26
21. 如何根据使用的编码器计算VOIP需要的带宽? 27
22. 如何测试你的系统的WAN的进出口带宽? 28
23. 如何理解VOIP里面的DTMF按键? 28
24. 如何确认PSTN被IP化? 29
第二章VOIP NAT穿透部分 30
25. 什么是NAT? 30
26. NAT分类? 30
27. UDP协议NAT穿透过程是啥? 31
28. VOIP服务器在公网为啥也要实现NAT穿透? 33
29. VOIP如何实现NAT穿透? 34
30. FREESWITCH如何实现VOIP的NAT穿透? 35
第三章FreeSwitch基础和配置部分 37
31. FreeSwitch是什么? 37
32. FreeSwitch是谁发起开发的? 37
33. FreeSwitch历史是什么? 37
34. FreeSwitch能做啥? 37
35. FreeSwitch如何与其他系统集成? 37
36. FreeSwitch最新版稳定本号是什么? 38
37. FreeSwitch支持哪些操作系统? 38
38. 去哪里下载FreeSwitch安装包和源码? 38
39. FreeSwitch在windows下如何安装? 39
40. FreeSwitch在LINUX下如何编译和安装? 39
41. FreeSwitch在windows下如何编译? 40
42. FreeSwitch在windows下如何安装到C盘之外? 41
43. FreeSwitch在windows下如何启动? 41
44. FreeSwitch在实际使用部署的时候如何启动比较安全? 42
45. FS_CLI跟FreeSwitch是啥关系? 42
46. 在FS_CLI上如何拨打测试分机? 42
47. FreeSwitch能跟哪些外部协议对接? 43
48. FreeSwitch如何跟PSTN 对接,实现落地? 43
49. 已经有哪些硬件板卡支持FreeSwitch 跟运营商的E1电路 对接? 43
50. FreeSwitch默认配置启动之后占用哪些端口? 44
51. 如何看FreeSwitch启动之后sip模块是否工作正常? 44
52. FreeSwitch为啥会一直运行在127.0.0.1的IP上? 45
53. 如何指定FreeSwitch运行在没有配置网关的IP上? 45
54. FreeSwitch如何修改默认SIP 端口? 46
55. FreeSwitch如何修改默认RTP 端口范围? 46
56. FreeSwitch在多个IP机器上如何指定运行在某个IP上? 46
57. FreeSwitch常用目录有哪些? 46
58. FreeSwitch基本配置文件有哪些? 47
59. FreeSwitch如何设置日志级别? 47
60. FreeSwitch如何看有多少用户注册上来? 48
61. FreeSwitch如何看有哪些用户注册上来? 49
62. FreeSwitch如何踢掉注册上来的用户? 50
63. FreeSwitch默认配置启动之后有哪些默认注册用户和密码是多少? 51
64. FreeSwitch如何设置不需要密码认证? 51
65. FreeSwitch如何设置随便帐号都能使用系统? 51
66. FreeSwitch默认配置启动之后有哪些分机比较有用? 52
67. FreeSwitch如何手工添加分机? 52
68. FreeSwitch拨号计划的正则表达式有哪些是最常用的模式? 54
69. FreeSwitch默认配置如何修改拨号计划设置没有注册上来不走留言信箱? 54
70. FreeSwitch默认配置加载哪些编码器? 54
71. FreeSwitch默认配置哪些编码器能使用? 55
72. FreeSwitch如何设置修改默认配置添加支持G.729 ,iLBC等编码器? 56
73. 如何看FreeSwitch当前支持哪些语音和视频编码器? 56
74. 软电话上如何指定编码器 57
75. 如何实现然FreeSwitch进行转码? 58
76. FreeSwitch哪些编码器不支持转码? 58
77. 如何解决FreeSwitch的G.729的转码? 59
78. FreeSwitch如何设置修改默认配置才能支持视频通话? 59
79. FreeSwitch如何设置修改默认配置才能支持使用VP8编码进行视频通话? 61
80. FreeSwitch如何实现在两个网卡上不同的网段上的分机互通? 61
第四章FreeSwitch 高级配置部分 63
81. 没有注册的软电话如何实现对FreeSwitch分机的呼叫? 63
82. FreeSwitch 为啥会没有发挂机信号给A leg? 64
83. FreeSwitch如何实现多个软电话或者IP话机共振? 64
84. FreeSwitch 如何修改默认配置才能拨打外部的SIP电话或者SIP网关? 66
85. 外部的SIP网关如何拨打到某个分机? 67
86. FreeSwitch如何和迅时网关MX8进行集成? 67
87. FreeSwitch公网运营如何设计? 71
88. FreeSwitch公网服务在防火墙之后如何部署? 71
89. FreeSwitch公网运营有哪些需要特别考虑的? 72
90. FreeSwitch公网运营如何支持SILK编码? 72
91. FreeSwitch公网运营环境下哪些情况下测试过? 73
92. FreeSwitch如何禁止IP地址发生改变后, 自动重启sofia模块? 74
93. FreeSwitch实网系统或者投产系统有哪些配置需要注意? 74
94. FreeSwitch如何使帐号密码保存在mysql数据库? 75
95. FreeSwitch如何配置帐号密码在oracle数据库里面? 77
96. FreeSwitch 的SDP有啥特别和缺陷? 79
97. 两个FreeSwitch如何做集群? 79
第五章FreeSwitch 性能测试部分 81
98. FreeSwitch对内存cpu需求如何? 81
99. FreeSwitch 32位版windows下单机最大支持多少线并发通话? 81
100. FreeSwitch 64位版windows下单机最大支持多少线并发通话? 82
101. 如何使用sipp对FreeSwitch 进行压力测试? 84
102. 如何把FreeSwitch默认使用的SQLLite迁移到MySql上以提高性能? 96
103. 如何使用PJSIP对FreeSwitch的IVR进行压力测试? 105
104. FreeSwitch在语音转码通话模式下CPU开销如何? 112
第六章FreeSwitch异常测试部分 115
105. FreeSwitch使用过程中cpu负载发生异常结果如何? 115
106. FreeSwitch使用过程中内存负载发生异常结果如何? 117
107. FreeSwitch使用过程中硬盘容量发生异常结果如何? 119
108. FreeSwitch使用过程中服务器的机器网络发生异常结果如何? 120
109. FreeSwitch使用过程中客户端的网络发生异常结果如何? 120
110. FreeSwitch使用过程中客户端的发生异常结果如何? 120
111. FreeSwitch使用过程中异常客户端发生攻击结果如何? 121
第七章FreeSwitch FlashPhone部分 122
112. 什么是flash phone/SIP? 122
113. 为啥需要flash phone/SIP? 123
114. 啥情况下下需要flash phone? 123
115. 使用 flash phone使用什么协议? 123
116. 使用 flash phone需要注意哪些问题? 123
117. FreeSwitch 如何增加 RTMP 接口协议模块以实现对flash phone的支持? 124
118. FreeSwitch 的flash 配置文件是哪个,如何配置RTMP的端口? 124
119. FreeSwitch的rtmp如何配置不需要login就可以呼叫其他分机? 124
120. FreeSwitch 的flash phone 使用啥工具进行修改开发? 125
121. FreeSwitch 的flash phone 代码哪些是最有用的? 125
122. FreeSwitch 的flash phone 如何呼叫分机? 125
123. FreeSwitch 的flash phone 如何查哪些机器连接上来? 126
124. FreeSwitch 的flash phone 如何查注册上来的分机? 126
125. FreeSwitch 的啥情况下iLBC编码不能使用? 127
126. 软电话分机如何实现对FreeSwitch 的flash phone的呼叫? 129
127. 如何实现同时支持呼叫分机和flash client 分机? 130
第八章FreeSwitch IM消息聊天部分 131
128. FreeSwitch是如何实现IM消息聊天功能? 131
129. 哪些软电话支持IM聊天功能? 131
130. 如何让FreeSwitch IM聊天支持离线消息功能? 131
131. 如何利用FreeSwitch支持漏话通知? 139
132. FreeSwitch离线消息通知和漏话消息通知为什么会有多次? 140
133. FreeSwitch如何支持IM聊天中对方状态功能? 141
134. FreeSwitch的IM聊天中对方状态存在啥问题? 143
135. FreeSwitch的IM聊天中对方状态刷新延时如何优化? 144
第九章FreeSwitch 媒体部分 147
136. FreeSwitch默认播音和录音目录在哪里? 147
137. FreeSwitch如何指定录放音文件和目录? 147
138. FreeSwitch如何指定alaw播音文件的格式? 147
139. FreeSwitch如何指定alaw录音文件的格式? 147
140. FreeSwitch 如何实现给拨入的电话播音? 148
141. FreeSwitch 如何实现对拨入的电话录音? 148
142. FreeSwitch 如何实现对通话的双方全程录音? 149
143. FreeSwitch 如何实现对拨入参加会议? 150
144. FreeSwitch 如何实现对会议参数控制? 151
145. FreeSwitch录音文件回放时发现声音很小如何解决? 152
146. FreeSwitch 如何实现支持视频的录制和播放? 153
147. FreeSwitch 如何实现收软电话发过来的传真? 153
148. FreeSwitch 如何实现收传真机发过来的传真? 162
149. FreeSwitch 如何实现发传真给普通传真机? 164
150. FreeSwitch 如何实现发传真给软电话? 167
151. FreeSwitch 如何实现发送非TIF格式的文件传真? 167
152. FreeSwitch 如何支持SRTP(加密RTP)通话? 167
第十章FreeSwitch ESL编程部分 176
153. FreeSwitch ESL是什么? 176
154. FreeSwitch ESL编程能做啥用? 176
155. FreeSwitch ESL LIB例子有哪些? 176
156. FreeSwitch ESL LIB例子windows下如何方便建立VS工程? 177
157. FreeSwitch ESL LIB例子windows下使用有哪些要注意? 177
158. FreeSwitch 什么时候需要用到内联模式编程? 178
159. FreeSwitch ESL外联和内联模式编程有啥区别? 178
160. FreeSwitch 系统拨出如何设置显示的主叫用户名称和主叫号码? 178
161. FreeSwitch 内联模式如何实现IVR全业务外拨用户功能? 179
162. FreeSwitch 如何设置支持其他机器内联模式到FreeSwitch? 182
163. FreeSwitch 如何设置支持SOCKET EVENT API外联模式编程? 183
164. FreeSwitch 如何支持外联到其他机器的ESL客户端? 183
165. FreeSwitch ESL外联模式 同步和异步模式有啥区别? 183
166. FreeSwitch ESL开发如何理解IVR的播音取按键条件? 184
167. FreeSwitch ESL开发如何支持连续播多个语音获取按键? 184
168. FreeSwitch ESL开发如何支持录音取按键? 189
169. FreeSwitch ESL开发如何停止正在进行的播音录音等媒体操作? 192
170. FreeSwitch ESL开发如何支持ivr电话呼叫通之后的连接和断开? 193
171. FreeSwitch ESL如何接收传真? 193
172. FreeSwitch ESL如何发送传真? 194
173. FreeSwitch ESL开发发送传真后如何获得传真的结果是成功还是失败? 194
174. FreeSwitch ESL开发如何支持电话会议? 194
175. FreeSwitch ESL开发如何支持退出电话会议? 195
176. FreeSwitch ESL开发如何实现系统对会场的某个人静音和去除静音? 195
177. FreeSwitch ESL开发如何支持电话会议开始录音和停止录音? 196
178. 如何使用FreeSwitch ESL发送IM消息? 196
179. 如何使用FreeSwitch ESL开发的完整IVR演示流程? 197
180. 实网环境中如何跟踪和解决崩溃? 197
第十一章CTI平台开发部分 199
181. CTI的平台层次结构? 199
182. 基于CTI的平台软件体系结构? 200
183. CTI平台开发接口如何设计? 201
184. CTI平台支持哪些硬件? 207
185. CTI平台DLL开发接口有哪些功能? 207
186. CTI平台开发DLL接口如何使用? 213
187. CTI平台Flash插件接口有哪些功能? 217
附录1 参考资料: 223
附录2 ESL IVR控制代码下载: 223
附录3 FLEX flashphone代码下载: 223
附录4 FreeSwitch 已知bug 224