http://www.freeswitch.org.cn/document
FreeSWITCH 官方文档请参见:英文 wiki
FreeSWITCH: VoIP 实战
关键词:FreeSWITCH 电子书,FreeSWITCH 中文书,VoIP
-- The First FreeSWITCH Book
作者: 杜金房 (Seven Du)
目录
� 前 言
� 第一章 PSTN 与 VoIP
� 第二章 初识 FreeSWITCH
� 第三章 PSTN 与 PBX 服务
� 第四章 SIP 协议
� 第五章 FreeSWITCH 架构
� 第六章 运 行 FreeSWITCH
� 第七章 SIP 模块 - mod_sofia
� 第八章 拨 号计划 - Dialplan
� 模块介绍
� 嵌入式脚本
� Event Socket
� FreeSWITCH 实战
� 源代码阅读
� 开发指南
� 社区指南
� 附录
FreeSWITCH 背后的故事
FreeSWTICH 与 Asterisk 比较
FreeSWITCH FAQ
Mod_command 参考
Mod_dptools 参考
FreeSWITCH book: 前言
Book
Fri May 07 07:46:27 -0700 2010
我们已经步入了一个新的时代。当前,VoIP 已开始成为语音通信的主导并将在
全世界范围内引领一场革命,而 SIP(Session Initiation Protocal,会话初始
协议)必将是这场革命的核心。
就像电子邮件一样,它用于文字通信,经过二十几年的发展,到现在几乎是人人
都有一个 Email 地址了。而在不久的将来,每个人也将会拥有一个用于语 音通
信的 SIP 地址。随着互联网的高速发展,数据流量的成本会越来越低,而且,随
着 3G、4G 及 WiMax 无线网络的发展,网络更将无处不在,各种新型的 SIP 电话
及可以运行在各种移动设备上的 SIP 客户端可以让你以极低的成本与世界上任
何一个角落的人通信。
为什么写一本书?
“大多数关于操作系统的图书均重理论而轻实践,而本书则在这两者之间进行了
较好的折中。” -- Andrew S.Tanenbaum
从第一次读 Tanenbaum 的《操作系统设计与实现》到现在已经好多年了,可这句
写在前言里的话还记忆犹新。在学校里,也学习过程控交换网、移动 通信的知
识,但只有肤浅的理解。毕业后,我到电信局(这个名字也许太老了。中国电信
业在短短的几年内经过了数次重组改制,我离开时叫网通,电信局是我刚参 加
工作时的名字。)工作,负责程控交换机的维护。在工作中我学到了 PSTN 网络交
换的各种技术,掌握了七号信令系统(SS7),算是做到了理论与实践相结 合。那
时候,VoIP 还是很新的东西,由于网络条件的限制,国内也少有人用。2007 年
底,我开始接触 Asterisk。阅读了《Asterisk, 电话未来之路》,并买了一个单
口的语音卡,实现了 VoiceMail,PSTN 网关,SIP 中继等各种功能。能在自己电
脑上就能实现这些有趣的东西,让我 非常兴奋。后来,我加入 Idapted Inc.,
做一种一对一的网络教学平台。最初的后台语音系统也使用 Asterisk。但不久
后转到 FreeSWITCH。虽然当时 FreeSWITCH 还 是不到 1.0 的 Beta 版,但已经显
出了比 Asterisk 高几倍的性能,并且相当的稳定。
FreeSWITCH 的主要作者 Anthony Minessal 曾有多年的 Asterisk 开发经验,后来
由于他提的一些设想未得到团队其它成员的支持,便独立开发了 FreeSWITCH,
并以开源软 件发布。FreeSWITCH 主要使用 C、C++开发。为了不“重复发明轮
子”,它使用了大量的成熟的第三方软件库,功能丰富,可伸缩性强,并可以使
用 Lua、Javascript、Perl 等多种嵌入式语言控制呼叫流程。另外,它还提供
Socket 接口,可以使用任何语言进行二次开发或与其它系统进行 集成。最重要
的是,它有一个非常友好、活跃的社区支持。如果你想到一项功能,可能过几天
就实现了;如果你发现一个 Bug,提交给开发者,通常第二天就修好 了。
FreeSWITCH 是极少数的 trunk 代码比最新的发行版更稳定的项目之一。而与此
相对的很多商业系统却常常需要很长的修复周期。
当然,我们在使用过程中也遇到不少问题,除了向开发者提交 Bug 外,我们也提
交一些 Patch,这不仅能在一定程度上能让 FreeSWITCH 按我 们期望的方式工作,
而且,也可以为开源事业做一点点贡献,从而也可以获得一些成就感。而这也正
是我们最喜欢开源软件的原因。
FreeSWITH 的文档非常丰富,它采用 wiki 系统, 都是来自众多 FreeSWITCH 爱好
者和实践者的奉献。不过,对于初学者来说,查阅起来还不是很方便。因此
freeswitch-users 邮件列表中 也多次有人提到希望能有一本能系统地介绍
FreeSWITCH 的书。好像也已经有人在写,只是还没有见到。
FreeSWITCH 在美国及其它国家已有很多的应用,但国内的用户还很少。2009 年
下半年,我创办了 FreeSWITCH-CN,希望能跟更多说中文的朋友一起学习和交 流。
我曾经设想能找一些志同道合者把所有 wiki 资料都翻译成中文的。但由于各种
原因一直未能实现。随着中文社区的日益发展壮大,越来越多的人向我提问问
题,而我也没有太多的时间一一作答。与此同时,我在学习和使用的过程中积累
了好多经验,因此,便有了自己写一本书的计划。
当然,上面提到,或者有人在写一本英文的书,但我相信我不是在重复发明轮子。
我发现,好多人问问题时,并不是因为不懂 FreeSWITCH,而是对 一些基本理论
或概念理解不清。当然,我不会像教科书上那样照本宣科的讲理论,事实上,我
也讲不了。我只是希望能结合多年的工作经验,用一些比较通俗的语言 把问题
解释清楚,让与我遇到同样问题的朋友少走弯路。
章节与内容安排
以什么风格来写呢?曾听人说过,“写作的难处不是考虑该写些什么,而是需要
决定什么不应该写进书里。”我深有感触。FreeSWITCH 官方 Wiki 上有几百页的
资料,该从何写起呢?如果只是盲目照抄的话,只不过是相当于做了些翻译工作,
也没什么意思;如果只是将一些功能及参数机械地罗列出来,那也不 过相当于
一个中文版的 Wiki。所以,我最后决定写成一个由浅入深步步摔推进的教程。
当然,在最初几章我还是介绍了一些基本概念及背景知识,这主要是给没有电信
背景的人看的,另外,对从电路交换转到 VoIP 来的读者也会很有帮助。这些内
容是不能舍弃的。
接下来应该是安装和配置。笔者看到有不少的图书,在讲一个软件时,将整个的
安装过程都会用图一步一步的列出来,有的甚至从如何安装 Linux 起,所有的步
骤都抓了图。窃以为那真是太没必要,事实上,这几年在邮件列表中看到大家问
得比较多的问题是“我装上了 FreeSWITCH,该怎么用啊?”,而不是“谁能告
诉我怎么安装 FreeSWITCH 啊?” 所以,如何取舍就显页易见了。本书仅在第二
章中提到了如何安装,或许以后如果觉得不够,可以加一个附录,但绝对不会把
如何安装 FreeSWITCH 单独作为一章。
实战部分,会以实际的例子讲配置,穿插讲解基本概念。如果有需要罗列的命令
参考,在附录中给出。
附录也很重要。除重要的参考资料,背景知识等,还收集了一些我所知道的奇闻
轶事。
另外,FreeSWITCH 一直处理很活跃的开发中,所以,某些章节可能刚写完就过
时了,最新、最权威的参考还是官方的 Wiki。但是,本书所阐述的基本架构、
理念,尤其是历史永远不会进时。
鉴于本书的内容安排,本书适合顺序阅读。
谁适合阅读本书?
� 学生。我看过一些学校的教材,大部分只是讲 VoIP 原理及 SIP 协议等,很枯燥。
� 教师。显而易见,你希望你的学生能理论与实践相结合。
� FreeSWITCH 初学者。本书肯定对你有帮助。
� FreeSWTICH 高级用户,开发人员。如果你喜欢 FreeSWITCH,也一定会喜欢这本
书。
� VoIP 爱好者,开发人员。他山之石,可以攻玉。即使你不使用 FreeSWITCH,本书
也会对你有帮助。
� 电信企业的维护人员、销售人员、决策人员。相信本书能使你更了解客户需求,以
及如何才能为客户提供更好的服务。
� 其它企业管理人员。如果你知道电信业务其实还可以提供许多你所不知道的功能和
业务,你肯定能很好地加以利用,带来的是效率、节省的是成本。
� 其它人员。开卷有益,而且,你会对你天天离不开的电话、手机,以及新兴的网络
电话、即时通讯工具等有一个更好的了解,从而增加工作效率。
排版约定
本书是使用 Markdown 标 记语言来写的,它比较简单,因此不能像 Latex 那样实
现复杂的排版和交叉引用,但作为电子书,也差不多够用了。
命令,程序输出等都使用 HTML 的 PRE 标签。
本书插图由 yed,XMind 生成,呼叫流程图就直接用了纯文本。
本书使用 Discount 转 换成 HTML。
为方便读者,书中术语首次出现时尽量给出英文及中文全称,如 SIP(Session
Initiation Protocal,会话初始协议)。
由于水平所限,存在错误在所难免,欢迎广大 F 友批评指正。
本书现在只是一个草稿,会不定期做改动,即使大的改动也不一定发布通知。
第一章 PSTN 与 VoIP
Book
Fri Apr 30 11:00:43 -0700 2010
说起 VoIP,也许大家对网络电话更熟悉一些。其英文原意是 Voice Over IP,即
承载于 IP 网上的语音通信。大家熟悉家庭用来上网的 ADSL 吧,也许有些人还记
得前些年用过的吱吱叫的老“猫”。技术日新月异,前面的技术都是用 电话线
上网,现在,VoIP 技术使我们可以在网上打电话,生活就是这样。
所谓温故而知新,在了解任何东西以前,我们都最好了解一下其历史,以做到心
中有数。在了解 VoIP 之前,我们需要先看一下 PSTN,那在 PSTN 之 前呢?
PSTN 起源
PSTN(Public Switched Telephone Network)的全称是公共交换电话网,就是我们
现在打电话所使用的电话网络。
第一次语音传输是亚历山大·贝尔(Alexander Granham Bell)在 1876 年用振铃电
路实现的。在那之前,普遍认为烽火台是最早的远程通信方式。其实峰火台不仅
具备通信的完整要素(通信双方,通信线路及中继 器),而且还是无线通信。当
时的没有电话号码,相互通话的用户之间必须有物理线路连接;并且,在同一时
间只有一个用户可以讲话(半双工)。发话方通过话音 的振动激励电炭精麦克风
而转换成电信号,电信号传到远端后通过振动对方的扬声器发声,从而传到对方
的耳朵里。
由于每对通话的个体之间都需要单独的物理线路,如果整个电话网上有 10 个人,
而你想要与另个 9 个人通话,你家就需要铺设 9 对电话线。同时整个电话网 上
就需要
10 x (10-1) / 2 = 45
对电话线。
当电话用户数量增加的时候,为每对通话的家庭之间铺设电话线是不可能的。因
此一种称为交换机(Switch)的设备诞生了。它位于整个电话网的中间 用于连
评论0