文章目录
-
-
-
- 前言
- 为什么写这本书
- 本书面向的读者
- 本书的内容及特色
- 排版及约定
- 如何阅读本书
- 实验环境及软、硬件设备选择
- 资源和勘误
- 致谢
- 特别鸣谢
-
-
前言
我们已经步入了一个新的时代。
当前,
VoIP
已开始成为包括语音和视频在内的
多媒体通信
的主导
并将在全世界范围内引领一场新的革命,
而
SIP( Session Initiation Protocol,会话初始协议)
正是这场革命的核心。
试想一下我们常用的电子邮件,它仅能用于文字通信。
从电子邮件证生开始,
经过三十几年的发展,
到现在几乎人人都有了一个Email地址(有的人还有多个)。
随着
实时多媒体通信需求
的增加及技术的发展,
笔者相信在不久的将来,
每个人都将会拥有
一个用于多媒体通信的SIP地址
。
当前,
因为互联网技术高速发展,
使得数据流量的成本越来越低,
而且随着3G、4G无线网络的不析发展与优化,
以及各种智能移动终端的出现,
网络更将无处不在,
这就为
SIP的进一步普及
营造了必要的环境。
在这种环境下,
各种新型的
SIP电话
及可以运行在各种移动设备上的
SIP客户端
可以让用户以极低的成本
与世界上任何一个角落的人通信。
为什么写这本书
大多数关于操作系统的图书均
重理论而轻实践
,
而本书则在这两者之间进行了较好的折中。
——
Andrew S. Tanenbaum
从第一次读
Tanenbaum
的
《操作系统设计与实现》
到现在已经十多年了,
可这句写在那本书前言里的话到现在还让我记忆犹新。
上大学时,
我也曾学习过
“程控交换网”
、
“移动通信”
之类的专业知识,
但那时只有肤浅的认识,理解不深。
毕业后,
我到
烟台电信
工作,
负责
程控交换机
的维护。
烟台电信这个名字也许太老了。
中国电信业在短短的几年内经过了数次重组改制,
我离开时叫`烟台网通`,
烟台电信是我刚参加工作时的名字,
与现在的烟台电信不是同一家公司。
在工作中,
我学到了
电信网络传输与交换
的各种技术,
掌握了
七号信令系统(SS7)
,
算是做到了理论与实践相结合吧。
那时侯,VoIP还是很新的东西,
由于网络条件的限制,国内也少有人用。
2007年年底,我开始接触
Asterisk
。
阅读了
《 Asterisk,电话未来之路》
,
并买了一个单口的语音卡,
实现了
Voicemail
、
PSTN网关
、
SIP中继
等各种功能。
能在自己电脑上实现这些有趣的东西,
令我非常兴奋。
后来,
我加入
Adapted Inc.
,
开发一种一对一的
网络教学平台
。
最初的
后台语音交换系统
也使用
Asterisk
,
但不久后便转到了
FREESWITCH
。
那时我就深切意识到,
FREESWITCH
必将成为
Asterisk
之后的通信领域的又一宠儿。
于是便怀着无比的热情开始学习FREESWITCH。
在学习和探索FREESWITCH的过程中,
我逐渐融入了FREESWITCH社区,
与全世界的开发者讨论各种VoIP技术、交流使用经验,
这让我学到了许多知识。
同时,在开发和使用 Freeswitch的过程中
我也积累了大量的使用和开发经验,
并将这些知识和经验不时地更新到
FREESWITCH官方的Wiki
上。
Wiki是 Freeswith文档的大本营,
内容来自众多FREESWITCH爱好者和实践者的奉献。
不过,对于初学者来说,
Wiki上的内容读起来还不是很系统,
因此我就萌生了写一本书的想法。
本书面向的读者
-
本书作为国内第一本介绍FREESWITCH的书,内容全面又不失深度,
因此适合从事FREESWITCH相关工作的各层次的读者阅读。
- 对于初学者来说,本书是很好的入门教材;
- 对于有一定经验的读者来说,本书可以提供更深人的指导和案例分析,帮助他们深人理清各功能点的来龙去脉;
- 对于高级用户和开发者来说,本书也有详细的开发指导和最佳实战经验。
- Freeswitch爱好者:对于 FREESWITCH爱好者来说,本书是最直接的需求。
- 本书内容全面、介绍细腻和深度适当,是其他资料或同类书籍所没有的。
- 以 FREESWITCH为基础进行二次开发的人员:以 FREESWITCH为基础,可以进行
- 以下:
- 呼叫中心
- 指挥调度
- IP-PBX
- 互联网音频或视频
- 等系统的开发。
- 本书可以提供详尽、丰富的参考资料和实践经验,使这类读者少走弯路,甚至达到事半功倍的效果。
- 以下:
- VolP系统、软交换系统、电信设备开发人员: FREESWITCH是开源领域的典范,又是同类系统中的佼佼者。
- 本书对 FREESWITCH的原理、实现都做了深入探讨,
- 还对源代码进行了导读和深入分析,
- 可以带领读者很快了解现代软件的架构、逻辑及算法实现,
- 因而很有借鉴意义。
- FREESWITCH使用MPL许可证发布,完全不限制商业应用。
- 因而广大开发者也可以完全站在巨人肩膀上,不重复发明轮子,迅速做出新的产品。
- Asterisk开发者:跟大多数 Asterisk开发者一样,我也是读着
《 Asterisk,电话未来之路》
一路走过来的。《Trixbox不相信眼泪》
-
Trixbox基于 Asterisk的一款PBX软件。
- FREESWITCH作为后起之秀,在许可证、系统架构和性能方面都有很好的优势。
- 了解 FREESWITCH可以开拓读者的眼界和思路,
- 不管是否转到FREESWITCH,
- 相信本书都会对你的职业生涯有所帮助。
-
- Freeswitch系统实施、维护人员:对于 FREESWITCH相关呼叫中心、IP-PBX等系统的实施和维护人员来说,本书也是不可或缺的教材。
- 事实上,本书第3章介绍了一个完整的
,FREESWITCH IP-PBX搭建方案
- 通过对这一章的学习,
可以很容易地用FREESWITCH打造一个企业的系统管理员
。企业电话系统
- 事实上,本书第3章介绍了一个完整的
- 电信企业的维护人员、技术决策人员:
- 广大电信企业的人员在以往的工作中积累了大量的工作经验,
- 但往往依赖于华为、中兴等设备厂家提供的解决方案和技术架构。
- 技术瞬息万变,在市场竟争日益激烈,国内电信政策调整并逐渐宽松之际(如虚拟运营商牌照的发放),
- 只有了解另种解题思路,并掌握了新技术,
- 才能更好地把握市场方向,为客户提供更好的服务。
- 呼叫中心从业人员:可以预见,在不远的将来,将有很多呼叫中心是基于 FREESWITCH开发的。
-
而本书中丰富的基础知识和详尽的功能介绍将对呼叫中心系统的使用、管理和决策起到很
好的指导作用。
-
- 相关专业在校师生:笔者看过一些学校的教材,大部分只是讲VolP原理及SIP协议等,很枯燥;
- 而且,老师总是教育学生“要理论与实践相结合”,
- 而本书正是理论与实战的最佳结合点。
- 同时我也注意到,有一些学校的导师和研究生已经在围绕这个主题进行研究了。
- 与 FREESWITCH相关的开发经理、技术决策人员:
- FREESWITCH是VolP软交换软件的典范,
- 但本书所讲的不仅仅是 FREESWITCH。
- 书中以 FREESWITCH为例将枯燥的(包括通信、互联网以及软件开发)专业知识
- 以浅显、直观、生动的语言呈现在读者面前;
- 同时,对软件开发的模型、模式、架构、流程、状态机、接口设计等进行了普及和深入剖析。
- 了解本书所讲的知识有助于技术选型和决策。
- 总之, FREESWITCH是一个电话系统。
- 我们人人都离不开电话,可以说,它将来可能出现在任何企业、部门及要使用电话的所有角落。
- 进一步讲, FREESWITCH完全超越了一个简单的电话系统,其应是一个更通用的
,它可以完美地与互联网及移动互联网结合,创建前所未有的通信应用。通信系统平台
- 古人云
,或云“开卷有益”
。“他山之石,可以攻玉”
- 所以,即使你不使用 FREESWITCH,但只要从事与通信相关的工作,本书都会在扩充基础知识、开阔思路等方面对你有所帮助。
本书的内容及特色
- 作为专门介绍 FREESWITCH的第一本中文书,笔者对内容做了精心安排。
- 为了照顾各种背景、各种水平的读者,也为了让读者更多地了解 FREESWITCH的方方面面,本书尽量选择了不同语言、不同场景、不同技术、不同实現方法的例子,力求使大家通过本书,对 FREESWITCH有一个全面而又深入的认识。
- 本书内容基于最新的
(FREESWITCH1.4版
)功能和特性截止到2014年1月份的最新开发版本
- 从总体上分为三个部分
- 第一部分基础篇:
- 作为本书的开篇,这部分首先介绍一些基本概念及背景知识,
- 这部分内容主要针对没有电信背景的人。
- 对从
转到电路交换
来的读者来说也会很有帮助。VoIP
- 此外,这部分也详尽讲解了学习 FREESWITCH应该具备的基础知识,
- 如
- 基本的概念和术语、
- FREESWITCH的基本架构、
- 模块的组织、
- 配置文件的组织、
- 拨号计划和电话路由、
- SIP协议、
- 媒体处理与媒体协商、
- NAT穿越,
- 以及 FREESWITCH中的SIP模块( mod sofia)等,
- 并在第3章带领大家进行了完整的IP-PBX配置和体验。
- 读完本部分,读者就能具备独立使用和维护基本的 FREESWITCH系统的能力了
- 第二部分实战篇:
- 要想学好 FREESWITCH,就必須做到理论与实践相结合,所以反复练习是必须的。
- 这部分结合我在实际工作中的一些实际例子,介绍了在解决问题的过程中积累的经验。
- 如第10章介绍了调试与排错的一般技巧、检査及分析系统日志的方法,并详细解释了呼叫是如何工作的。
- 在后面的章节中还讲了一些基本功能的配置实例,如
- 创建用户、
- IVR、
- 录放音、
- TTS、
- 呼叫排队、
- 视频通话、
- 多人电话会议、
- 话单、
- 计费、
- FREESWITCH对接
- 以及生产环境中的应用、
- 系统的部署方式、
- 拓扑结构、
- 参数配置、
- 安全性考虑
- 及系统优化指南等。
- 通过这些内容,读者可以深入理解基础篇介绍的概念和理论,
- 并且可以仿照这里的例子做出各种各样的应用。
- 另外,这部分中有些例子甚至可以直接套用。
- 第三部分高级篇:这部分主是面对开发者的。
- 不过,即使不从事开发工作,学习ー下本部分的内容也是很有帮助的。
- 这部分除了讲开发之外,还对整个系统架构及内部实现进行了深入剖析。
- 读完后你会觉得:噢,原来是这样的!
- 具体来讲,这部分讲了
- 嵌入式脚本、
- Event Socket开发的基础知识
- 以及通过这些开发技术实现的IVR、呼叫中心应用之类的各种例子。
- 此外,还讲解了
- 源代码阅读、编译的方法,
- 并对源代码进行了深人分析。
- 最后给出了一个在 FREESWITCH代码上进行源代码级二次开发的实例。
- 读者可以通过自己动手实现各种呼叫功能和流程,进一步理解和巩固所学的知识,
- 以便从根本上了解 FREESWITCH中的一切秘密。
排版及约定
- 本书部分插图由
、Xmind
、Keynote
、Graphviz
等工具生成。mscgen
- 程序代码、系统的输入输出等大部分有行号。强调部分使用粗体字。
- 有些程序代码行较长,为适应版面,进行了人工排版。
- 提示符。
- 对于命令行的输人输出来说,
- 在 Linux及Mac等UNIX类平台上,前面的
(或“#”,如果为root用户的话)符为“$”
;操作系统命令提示符
- 在 Windows系统上使用
作为操作系统命令提示符;"C:\”
-
作为 FREESWITCH(控制台以及“ freeswitch>”
)系统提示符。fs_cli
- 在不至于引起混淆的情况下,可能会省略系统提示符。
- 除非有特别说明,本书中的
一般指Wiki
,wiki. freeswitch.org
一般指Jira
。jira. freeswitch.org
如何阅读本书
-
本书对内容和学习路线做了精心安排,对于大部分读者而言,适合顺序阅读(唯一例外的就是你
可以先读后记部分)。
- 当然,由于各种概念和理论都是相互联系的,因此,在读后面一些章节时回过头来复习和印证一下某些基本概念也是很有必要的。
- 对于刚进入通信领域的开发者来说,前面的通信历史和基础知识是非常有用的。
- 只有了解了这些基础知识,才能更好地理解通信网中各个不同组成部分所发挥的作用以及它们之间的交互流程。
- 对于有了通信基础却不熟悉 FREESWITCH的读者来说,可以简单浏览前面的通信基础知识,并通过第3章的 FREESWITCH体验对 FREESWITCH有一个直观的认识。
- 对于比较熟悉 FREESWITCH的读者来说本书的第4章到第9章也会帮助他们使以前零散的知识更加系统化。
- 对于基于 FREESWITCH进行开发的普通开发者来说,在熟练掌握基础知识之后,再阅读本书第二部分,并同步做一些练习,会取得较好的效果。
- 如果想直接在 FREESWITCH内部开发模块或修改 FREESWITCH的源代码,可接着顺序阅读第三部分的内容。
- 当然,笔者鼓励所有人都通读全书的内容,即使不做开发,后面有关开发的相关内容也有助于理解前面的基础知识。在通读本书一遍以后,根据自己的情况挑选相关的章节进行反复阅读和实验,以便将所有知识都融会贯通,从而使自己的水平更上一层楼。
- 此外, FREESWITCH一直处于很活跃的开发中,所以某些章节中描述的内容可能与最新的版本有所出入,我将在本书相关的网站上进行跟踪说明。
实验环境及软、硬件设备选择
本书涉及的软件绝大部分都是开源软件(非开源的软件,笔者都进行了特殊说明),
因此读者可以根据书中的指导自行安装和实验。
为了使书中的案例更真实,同时也为了方便大家在真实的硬件环境中进行实践,
书中的实验我们均使用真实的硬件设备或软件产品进行。
作为一本技术书籍,我们在书中只讨论各种设备互连的技术性问题,
而对于各厂商的设备好坏则不做评论。
有条件的读者可以自行研究和比较。
不过,如果读者在学习过程中想拿硬件设备做实验,但是不知道该选择哪款产品,
我建议可以从本书中提到的设备中选择。
推荐的理由有二:
- 其一,这些设备我都亲自测试过;
- 其二,书中的硬件都是现在市场上比较流行、口碑和质量都比较好的,这类硬件不容易出错,即使出错也容易找到技术支持。
初学者往往对 FREESWITCH和硬件都不是很熟悉,因而在遇到问题时很难定位是硬件原因还是软件原因,以至于浪费宝贵的学习时间。
至于在生产环境中大规模的应用,相信各公司都有专门的人研究,我在此就不敢妄言了。
资源和勘误
-
是本书的在线站点,提供本书的代码下载及勘误等。book.dujinfang.com
-
[email protected]
是专门为本书设立的电子邮箱,如果您对本书有任何意见、建议或
批评请发到该邮箱。
-
是我的微博,我很乐意与您进行交流。http:/weibo.com/dujinfang
-
FREESWITCH-CN
是 FREESWITCH中文社区的微信公共账号,您也可以关注该账号获取本书最
新的情况,以及与本书作者进行交流。
-
www. freeswitch.org.cn
是 FREESWITCH-CN中文社区的官方网站,经常关注该网站的更新,这
样可以获取中文社区的最新信息。
-
是华章公司的官网,您也可以到这里下载相关代码。www.hzbook.com
由于笔者水平所限,书中存在错误和疏漏在所难免,欢迎广大读者批评指正。
致谢
FREESWITCH
是
OSTAG
的注册商标。
Open Source Telephony Advancement Group,即开源电话学进步组,参见http://ostag.org/。
感谢
Anthony Minessale
及他的团队给我们提供了如此优秀的软件,也感谢他在本书写作时提供的耐心指导和答疑;
同时感谢 FREESWITCH社区所有成员的热心帮助,
使我在学习 FREESWITCH的道路上一帆风顺。
本书的一些资料和例子来自 FREESWITCH Wiki及邮件列表,因不能一一査证原作者,故在此一并致谢。
- 感谢机械工业出版社华章公司。
-
对中文原创计算机图书的信任让我倍感温馨。华章公司
- 感谢
策划,他对图书出版的理念带给我许多启发和写作的动力。杨福川
- 感谢
和孙海亮
编辑,他们的耐心和细致保证了本书的质量和写作进度。姜影
- 感谢
先生,他给了我许多写书的建议,并介绍我认识方舟
先生。杨福川
- 感谢
老师,是他帮我策划并将我带上了出版之路。刘光大
- 感谢我的妻子
,她是本书的第一读者,常常帮我修订文字错误;偶尔,在我埋头写作时,悄悄地在我案头放一个削好的苹果;多少次,在我挑灯夜战的翌日清晨,做好早餐,冲好茶,自己悄悄去上班。吕佳娉
- 感谢我的儿子
,他很聪明,还不到4岁就会经常帮我测试电话了。在我写作时,他清脆的声音“喂,爸爸吗?…”经常素绕在我的耳畔,鼓励我继续写下去。我也很内疚写书占用了好多本应该陪他玩耍的时间。杜昱凝
- 感谢
先生,是他指导我走上了 FREESWITCH之路。Jonathan Palley
- 感谢
先生跟我一起创业,因为有了他管理公司的方方面面,才使我有更多的时间专注于 FREESWITCH,此外,他还写了本书第2章中有关呼叫中心的部分内容。崔钢
- 感谢
-滨州公路工程总公司
先生,他与笔者合作编写了机械工程师``张令考
、第2章
及第12章
的部分内容。第14章
- 感谢
、高超
、李洋
、杨小金
、景朝阳
,他们或者写了一些例子,或者帮我进行了校对、测试、编辑和排版等。李雪梅
- 感谢
,他维护着 FREESWITCH-CN QQ群,从而为大家提供了一个实时交流的平台,同时他也对本书的写作提了很多很好的意见。程祝波
- 感谢
先生,是他提供了本书自写作以来的第一笔捐款。Tim Yang
- 感谢网友
及其他热心读者,他们对本书给予了积极的反馈并帮助我勘误,没有他们,便没有本书。flying
特别鸣谢
在本书写作时,得到了国内外一些硬件和设备厂商的赞助和支持,在此表示由衷的感谢。
这些公司有(排名不分先后):
- Yealink(亿联)
- Grandstream(潮流)
- Dinstar(鼎信通达)
- Sangoma(加拿大,及中国总代
)星吴通
- Vestec(加拿大)等。
杜金房