描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111669449丛书名: O’Reilly精品图书系列
本书覆盖Asterisk 16的*新发展,不仅全面讲述了Asterisk的*新技术和应用,还耐心细致地告诉你如何高效、安全地使用Asterisk。本书会帮助专家深入了解Asterisk的更多新技术、新方法。对初学者而言,本书通俗易懂,且有大量基于多种场景的、实用的完整代码实例,是一本非常好的实用技术指南,可帮助广大读者方便地学习和掌握Asterisk,进而从容应对时代的挑战,快速建立更加高效、畅通、安全的通信世界。
本书第5版覆盖Asterisk 16的*新发展。本书不仅全面讲述了Asterisk*新技术和应用,还耐心细致地告诉您如何高效、安全地使用Asterisk。此书会帮助专家深入了解Asterisk更多新技术、新方法,对初学者而言,本书通俗易懂,实战性强,也是一本非常好的使用指南书籍。
序言1
前言5
第1章 电话革命9
1.1 Asterisk与VoIP,架起传统电话与网络电话之间的桥梁10
1.2 大规模变革需要灵活的技术11
1.3 Asterisk:黑客的PBX12
1.4 Asterisk:专业PBX12
1.5 Asterisk社区12
1.6 小结14
第2章 Asterisk架构15
2.1 模块16
2.2 文件结构25
2.3 dialplan26
2.4 硬件27
2.5 Asterisk版本27
2.6 小结27
第3章 安装Asterisk28
3.1 安装Linux31
3.2 依赖项34
3.3 Asterisk的安装40
3.4 验证新的Asterisk系统49
3.5 常见的安装错误49
3.6 最终配置注意事项50
3.7 小结52
第4章 终端安全数字证书53
4.1 安全带来的不便53
4.2 SIP安全53
4.3 媒体安全57
4.4 小结58
第5章 用户设备配置59
5.1 电话命名概念61
5.2 硬件电话、软件电话与ATA63
5.3 配置Asterisk65
5.4 进行测试以确保设备已经注册成功72
5.5 用于设备测试的基本dialplan72
5.6 透过现象看本质:第一次通话74
5.7 小结75
第6章 dialplan基础76
6.1 dialplan语法76
6.2 一个简单的dialplan85
6.3 构建交互式dialplan87
6.4 小结103
第7章 外线连接104
7.1 中继基础104
7.2 用于外线连接的基本dialplan105
7.3 PSTN106
7.4 VoIP110
7.5 紧急呼叫119
7.6 小结121
第8章 语音信箱122
8.1 voicemail.conf文件123
8.2 语音信箱dialplan集成131
8.3 语音邮件转电子邮件135
8.4 语音信箱的存储后端137
8.5 小结138
第9章 国际化139
9.1 Asterisk服务器的外部设备140
9.2 PSTN连通性、DAHDI、Digium卡和模拟电话142
9.3 Asterisk内部国际化146
9.4 小结—简易参考速查表150
第10章 深入学习dialplan151
10.1 表达式和变量运算151
10.2 dialplan函数154
10.3 条件分支跳转155
10.4 GoSub161
10.5 本地信道164
10.6 使用Asterisk数据库167
10.7 便捷的Asterisk功能169
10.8 便捷的dialplan函数170
10.9 小结174
第11章 PBX特性,包括驻留、寻呼与会议175
11.1 features.conf175
11.2 驻留和寻呼180
11.3 高级会议188
11.4 小结191
第12章 自动呼叫分配队列192
12.1 创建一个简单的ACD队列193
12.2 队列成员197
12.3 高级队列204
12.4 队列统计:queue_log文件215
12.5 小结218
第13章 设备状态219
13.1 设备状态信息219
13.2 使用hint指令的分机状态221
13.3 SIP在线状态223
13.4 使用自定义设备状态224
13.5 小结224
第14章 自动话务员225
14.1 AA不是IVR225
14.2 设计自动话务员226
14.3 创建自动话务员230
14.4 小结234
第15章 关系型数据库集成235
15.1 选择数据库 235
15.2 管理数据库236
15.3 使用func_odbc强化dialplan237
15.4 func_odbc简介238
15.5 func_odbc妙用:办公桌轮用239
15.6 使用实时252
15.7 存储呼叫详情记录255
15.8 ACD队列的数据库集成259
15.9 小结261
第16章 交互式语音响应简介262
16.1 IVR的组成262
16.2 IVR设计的考虑因素264
16.3 Asterisk的IVR模块265
16.4 使用CURL()创建简单的IVR 266
16.5 录制提示音的IVR函数266
16.6 语音识别和文本语音转换268
16.7 小结269
第17章 Asterisk管理接口和呼叫文件270
17.1 呼叫文件270
17.2 AMI快速入门272
17.3 配置274
17.4 协议概述275
17.5 使用示例280
17.6 开发框架283
17.7 小结284
第18章 Asterisk网关接口285
18.1 快速入门285
18.2 AGI版本286
18.3 AGI通信概述289
18.4 示例:账户数据库访问296
18.5 开发框架297
18.6 小结298
第19章 Asterisk REST接口299
19.1 ARI快速入门299
19.2 ARI的组成304
19.3 框架306
19.4 小结308
第20章 WebRTC309
20.1 浏览器即电话309
20.2 预备知识310
20.3 与WebRTC有关的Asterisk配置310
20.4 Cyber Mega Phone313
20.5 关于WebRTC的更多信息315
20.6 小结315
第21章 系统监控与日志记录317
21.1 logger.conf317
21.2 呼叫详情记录321
21.3 信道事件日志记录330
21.4 小结330
第22章 安全331
22.1 扫描有效账户331
22.2 认证的弱点332
22.3 Fail2ban332
22.4 加密的媒体334
22.5 dialplan漏洞335
22.6 保护Asterisk网络API336
22.7 缓解风险的其他方法336
22.8 资源338
22.9 小结—更傻的傻瓜339
第23章 Asterisk:电话未来之路340
23.1 电话已消亡(当它没消亡时除外)340
23.2 过度通信341
23.3 开源软件开发的问题341
23.4 Asterisk的未来342
23.5 电话的未来342
序言
在考虑本书每一版的序言时,我们总是希望能够邀请更多的人撰写,而非翻来覆去总是我们那几页。在第5版中,我们再次邀请Asterisk社区的一些人从他们的角度写了一些关于Asterisk的文字。
Joshua Colp(Sangoma/Digium公司高级软件开发者)
15年前,我将Asterisk下载到笔记本电脑上,并使用IAX2向Digium PBX发起了我的第一个VoIP呼叫。我屏住呼吸,期待着声音的到来,直到我的笔记本电脑终于传出了Allison的声音。那时我就知道Asterisk有一些特别之处。这点燃了我的兴趣和想象力的火花:我的笔记本电脑真的可以打电话!我意识到,只要多付出一些努力,我就能够接电话,做我想做的事情,这是多么令人着迷和兴奋—很多人至今仍有这种感觉。
如今的Asterisk与那个时候有很大的不同。过去,Asterisk专注于提供PBX所需的功能。Asterisk具有PBX所需的所有功能,并且不断加入新的功能,以推动在这一领域继续前行。但是,随着时间的推移,Asterisk已经演变成一个工具包,可以单独使用,也可以与其他项目结合使用。这会在你的脑海中引发一个思考:“我可以做这个吗?”并推动你把它坚持做下去。
很多关于Asterisk本身及其方向的决定都由这个简单的问题引起。“对用户来说这是正确的吗?”“这是人们真正需要的吗?”“这有什么坏处吗?”“他们能够以此来构建自己想要的东西吗?”这些问题结合起来有助于确保人们能够实现自己的想法。这正是如今Asterisk让我兴奋的地方—看到人们使用这些工具随心所欲地创造新的事物。
我认为,对于Asterisk而言,这种状况还将持续下去。Asterisk在继承原有功能和兼容现有用户使用方式的同时,将继续添加新的工具和功能,通过提供更大的灵活性和更多选项来帮助人们构建自己想要的东西。Asterisk将继续成为更全、更好的解决方案的一部分,其中有些甚至可能现在都没有想到。我们只是向前迈出了几步,要做的事情还有很多。
我强烈建议Asterisk的新老用户们以谦逊的态度重新审视Asterisk,以学习新添加的功能,并使用你不知道的技能构建新的且令人兴奋的东西。如果你发现Asterisk无法满足你的需求,请参与到项目中并做出贡献,以帮助其他可能尝试做同样事情的人。不仅要成为使用Asterisk的人,还应成为帮助他人实现梦想的人。
Dan Jenkins(Nimble Ape公司创始人)
我第一次涉足的开源电话领域就是Asterisk。作为一名Web开发人员,我发现Asterisk与我过去使用的(Web行业的)东西完全不同。Asterisk项目从那时以来一直在持续发展,现在,该项目融合了很多Web开发人员期望的API和技术。WebRTC和Asterisk的REST接口对于集成开发人员已构建的基于Web平台的系统至关重要。Asterisk是我最终建立起自己的事业的核心,它确实是一款了不起的软件,并且拥有一个优秀的社区,社区里的人大量使用并改进它。我很高兴成为这个社区的一员,并为未来的社区校对这本书。
Joyce Wilmot(高级Web开发者)
我于2012年开始接触Asterisk,当时我在Voicenation公司工作,这家公司为成千上万的客户提供24×7×365的实时应答服务。当时,呼叫中心的发展速度迅速超出了他们所使用的第三方软件的服务能力。由于无法为迅速扩张的呼叫中心找到灵活而经济的解决方案,Voicenation决定创建自己的呼叫中心软件。我的任务是创建这个软件,也由此开始了我的Asterisk之旅。一开始这是一项艰巨的任务(因为我之前没有IP电话经验),但很快我就被Asterisk吸引住了,因为我发现它简化了我们的设置,同时又不牺牲功能和灵活性。
九年很快过去了,历经数以千万次的来电,Asterisk仍然忠实可靠地服务着我们的呼叫中心。这是我第一次接触开源软件。Asterisk显然是一个成功的开源案例,它向我们展示了开源软件是如何激发创业精神,而创业精神又是如何反过来推动开源软件的发展和增强的。Asterisk一直在不断地发展以适应这个不断变化的电信世界,我很高兴成为这个循环的一部分,并期待能够成为社区的一分子。
Matt Florell(VICIdial的创始人)
早在2001年,我第一次接触的开源电话技术其实并不是Asterisk。我当时使用另一种软件包,我花了几个月的时间,使用一个简单的IVR为我当时的雇主记录呼叫请求。该系统并不容易使用和修改,因此除了第一个IVR项目之外,我没有做太多其他事情。两年后,我接到客户请求,要求构建一个更为复杂的电话系统,该系统需要用户通过计算机进行交互。我知道我一直使用的平台无法满足这样的项目需求,因此我考虑了商业和开源两种选择。我在那时了解到Asterisk,看起来它可能是该项目的理想平台。我买了一张T1板卡进行测试,并在拿到板卡的两个小时内对它进行了配置,它完全能够实现我花几个月时间才能完成的旧项目。此后我迷上了Asterisk。VICIdial开源呼叫中心项目也是源自该项目。迄今为止,据我们所知VICIdial集群(Asterisk系统是其一部分)已经安装超过100 000套。
Asterisk与我过去使用的大部分基于Web的开源软件包有很大的不同,在早期有很多问题和bug需要解决(有时得用非常有创造性的方式)。但是,与早期的版本相比,从我们现在使用的Asterisk 13来看,性能和稳定性都得到了明显改善。新添加的很多特性使我们能够向VICIdial程序包中添加新的功能,其中两个功能是暂停呼叫记录以及多层SIP日志。
早在2003年,当我开始使用Asterisk时,还没有真正意义上的“发行版”。你必须从最新的CVS修订版中找到一个稳定的版本,然后对其进行测试。随着时间的推移,各个分支的开发和维护变得更加稳定,世界各地的生产系统对Asterisk的使用量激增。如今,Asterisk已成为数千种不同服务的电话核心,每天用户要通过Asterisk拨打数十亿个电话。Asterisk被安装在各种各样的硬件上,从微型嵌入式系统到拥有数百台高性能计算机的服务器集群。现在,每天都有数百万的人在使用Asterisk,但他们并不知道自己正在与一款开源软件打交道。
仅在我们的客户群中,就有多家财富500强公司,以及校园、社交俱乐部、政治组织、市政应急服务机构,还有数千个不同类型的商业化运营案例。虽然购置成本低是基于Asterisk提供解决方案的一个常见原因,但是我们经常听到这样的说法:开源是一个很大的优点,而且不存在厂商锁定的可能性。我们的一个大客户甚至声称他们使用的开源电话软件相对于竞争对手而言是一个“独特的战略性优势”,因为Asterisk系统更具灵活性,他们能够不依赖外部厂商自己进行维护和管理。从我目前了解的情况来看,未来的Asterisk用户会越来越多,功能会越来越强。在未来我期待与Asterisk继续合作。
Matt Fredrickson(Sangoma/Digium公司Asterisk工程主管)
在过去的18年里,我有机会与Asterisk一起工作,见证了它从一两个人的小项目成长为拥有数百名贡献者的独立项目。令人惊讶的是,Asterisk打破了传统电信技术对使用地点的限制(只能在家、办公室和企业)。随着传统通信方式的转变,Asterisk项目仍在发挥着自己的独特优势—将旧的通信方式与新的通信方式连接起来,并拓展新通信方式的边界。本书将帮助你了解Asterisk的最新特性,以及如何在电信基础设施中更好地发挥它的作用。非常感谢Jim Van Meggelen,他为整合这一最新版本付出了很多。
这是一本为Asterisk用户所写的书。
Asterisk是一个开源的电话平台,主要基于Linux运行。Asterisk将一百多年的电话技术整合到一起,构成了一套可靠而又高度集成的电信应用。Asterisk的强大之处在于其可定制性,再加上无与伦比的标准遵从性。没有任何其他程控交换机(PBX)能够以如此多的创造性方式进行部署。
语音邮件、托管会议、呼叫队列和代理、等待音乐和呼叫暂停等应用都是软件内置的标准功能。更重要的是,Asterisk可以让封闭的、专有的PBX以难以想象的方式与其他商业技术进行集成。
对于新用户来说,Asterisk可能看起来非常可怕和复杂,这也是文档如此重要的原因。文档降低了入门难度,并帮助人们思考各种可能性。
本书由Asterisk社区成员编写。感谢O’Reilly Media的大力支持,使得本书可以顺利出版。
读者对象
本书主要面向Asterisk的初学者,但是我们假设你已经对基本的Linux管理、网络和其他相关IT知识有了一定的了解。如果你还不够熟悉的话,O’Reilly出版了很多有关此类知识的书籍,你可以尽情地探索和学习。此外,我们还假设你对电信相关知识(包括传统的交换电话和最新的IP电话)了解不多。
本书同样适合于经验丰富的Asterisk管理员。有些功能一段时间不使用就会忘记,此时我们可以将这本书当作参考手册使用。
本书所用软件
本书重点介绍Asterisk 16。但是,本书中的很多内容和信息都是与版本无关的。我们在Linux操作系统上运行和测试过Asterisk,并且提供了基于CentOS(Red Hat Enterprise Linux或RHEL)的安装说明。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示URL、电子邮件地址、文件名、文件扩展名、路径名称、目录、包名称,以及Unix实用工具、命令、模块和参数。
等宽字体(Constant width)
用于程序清单、文件内容、命令行交互、数据库命令、库名称和选项。
等宽粗体(Constant width bold)
表示应由用户直接输入的命令或其他文本。也用于代码中的强调。
等宽斜体(Constant width italic)
表示应由用户提供的值替换的文本。
[关键字和其他参数]
指示可选的关键字和参数。
{选项-1/选项-2}
表示二选一:选项-1或选项-2。
该图示表示提示或建议。
该图示表示一般性说明。
该图示表示警告或注意。
O’Reilly在线学习平台(O’Reilly Online Learning)
近40年来,O’Reilly Media致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们拥有独一无二的专家和革新者组成的庞大网络,他们通过图书、文章、会议和我们的在线学习平台分享他们的知识和经验。O’Reilly的在线学习平台允许你按需访问现场培训课程、深入的学习路径、交互式编程环境,以及O’Reilly和200多家其他出版商提供的大量文本和视频资源。有关的更多信息,请访问http://oreilly.com。
如何联系我们
对于本书,如果有任何意见或疑问,请按照以下地址联系本书出版商。
美国:
O’Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至[email protected]。
本书配套网站https://oreil.ly/asterisk_tdg_5E上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://www.oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
Jim Van Meggelen的致谢
感谢David Duffett撰写第9章,从更加全球化的视角看待这一技术。
感谢Leif Madsen、Jared Smith和Russell Bryant为本书之前的版本所做的贡献。单飞虽然很有趣,但我的确非常想念他们!
特别感谢Digium公司的Matt Fredrickson和Matt Jordan,他们慷慨地与我分享了自己的时间和知识,如果没有他们,我会迷失方向。
感谢我的编辑Jeff Bleiel,他让我按计划完成了这本书,并对本书的内容和进度做出了重要的贡献。
也要感谢O’Reilly制作部门的无名英雄们。O’Reilly的书就是在他们的手中制作完成的。
特别感谢我的技术评审团队Joyce Wilmot和Dan Jenkins,他们抽出宝贵的时间来读完本书并提供了重要的反馈。
RedHat的Thomas Cameron慷慨地与我分享了他关于Selinux的知识,并帮助我揭开了一个经常被禁用的Linux组件的神秘面纱。
Asterisk社区的每个人都应该感谢已故的Jim Dixon,是他创造了第一个开源电话硬件接口,掀起了这场革命,并将他的成果献给了社区。
最后,也是最重要的,感谢Asterisk的原作者、Digium的创始人Mark Spencer,感谢他对Asterisk、Pidgin(http://www.pidgin.im)以及开源社区所做的贡献。Asterisk是他留给世人最宝贵的一笔财富!
Asterisk作为使用*为广泛的一项开源电话软件,曾经给电信行业带来翻天覆地的变化。在广大乐于奉献的开发者的推动下,Asterisk变得日益灵活和强大,也变得更加复杂。本书通过大量的示例引导读者一步步完成Asterisk的部署和使用,可以大大降低学习难度。同时本书也包含了多名业内资深专家在长期从业经历中积累的宝贵经验和*实践,无论对于Asterisk初学者还是专业人士来说,本书都具有很好的学习价值。
王攀
南京邮电大学现代邮政学院教授
Asterisk是运行在Linux上的开源免费通讯平台,它的开放性、兼容性、安全性和对多种业务场景的强大支持能力,赢得了业界广泛的好评。本书介绍了Asterisk*新的功能,系统地指导你用Asterisk来构建一套完整的、可以商业化应用的电话交换机系统,是Asterisk领域的权威专著。
龙姝明
陕西理工大学物理与电信工程学院教授
Asterisk是主要运行在Linux上的开源电话平台,部署在170个国家,运行在100多万台服务器上,每年大约被下载200万次,无疑是全球开源电话平台中的翘楚。以前没有介绍Asterisk的中文版专著,本书的出版是推动Asterisk在中国发展的重要事件。本书系统介绍了Asterisk编程的设计框架、关键技术、应用过程、使用指南和注意事项,理论结合实践演练,帮助广大读者方便地学习和掌握Asterisk,从容应对时代的挑战!
Keith Chan 陈泽辉
Strategic Director APAC
The Linux Foundation APAC
在我们的沟通需求呈几何级增长的背景下,基于传统硬件、紧耦合、低灵活度的PBX电话系统必然会向基于开源软件、软硬解耦、高度灵活的PBX转型。虽然这是一个十分艰辛、充满风险的历程,但也是沿途风景绚丽、得到无数用户认可的过程。本书由*专家联合编写,用浅显的语言帮助大家掌握Asterisk的基本原理、框架、方法和技巧,帮助我们主动防范各种风险,让你少走弯路,降低风险,精准识别业务需求,给客户带来价值。本书能够通过各种编程练习和真实案例,帮助大家成为真正的Asterisk专家。
何宝宏
中国信息通信研究院云计算与大数据研究所所长
本书用深入浅出的语言,帮助读者深刻准确地理解Asterisk的语言特点、编程规范、专业术语、dialplan基础、语音信箱、拨号规则、自动话务员、网关接口、WebRTC、系统监控和安全保障等内容,全面系统地掌握Asterisk知识,从而成长为Asterisk专家。本书值得推荐!
孙振鹏
*国际实践联盟主席
EXIN国际信息考试学会亚太区总经理
Asterisk是全球范围内使用*广泛、*成功的开源电话软件。本书是介绍Asterisk的经典书籍,系统地阐述了Asterisk的基本原理、重要概念、关键技术、实践应用。书中有基于多种场景的、完整的代码示例,还有许多案例练习,而且既有基础知识又有前瞻研究,不论你是Asterisk的专业人士,还是Asterisk的初学者,它的全面性和实践性都非常适合你!
李蓟宁
深圳市计算机用户协会执行会长
本书是一本极具价值和权威性的Asterisk教材。全书以通俗易懂的语言,将复杂的技术实践和丰富经验娓娓道来,内容深入浅出,逻辑严密清晰,且有大量基于多种场景的、实用的完整代码示例,每章都提供了大量的相关学习资料,便于开发者学习和掌握Asterisk技术,扩展眼界和知识范围,从而快速建立更加高效、畅通、安全的通信世界。
李银松
深圳市通信学会常务副理事长
评论
还没有评论。