首页>参考读物>计算机科学与技术>软件与程序设计

Asterisk权威指南(原书第5版)
作者 : [加]吉姆·范·麦格伦(Jim Van Meggelen),[美]罗素·布莱恩特(Russell Bryant),[加]莱夫·马德森(Leif Madsen) 著
译者 : 闫林 王卫斌 朱明星 译
出版日期 : 2020-11-30
ISBN : 978-7-111-66944-9
定价 : 119.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 357
开本 : 16
原书名 : Asterisk: The Definitive Guide
原出版社: O'Reilly Media, Inc.
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书第5版覆盖Asterisk 16的最新发展。本书不仅全面讲述了Asterisk最新技术和应用,还耐心细致地告诉您如何高效、安全地使用Asterisk。此书会帮助专家深入了解Asterisk更多新技术、新方法,对初学者而言,本书通俗易懂,实战性强,也是一本非常好的使用指南书籍。

图书特色

图书前言

这是一本为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)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至bookquestions@oreilly.com。
本书配套网站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来设计完整的网络电话(VoIP)或传统的PBX系统。本书详细地展示了如何安装和配置Asterisk开源软件。学习本书后,无论是升级现有的电话系统还是从零开始搭建新系统,都会变得非常容易。
作为Linux管理员、开发人员和高级用户的理想选择,本书展示了如何在企业内设置基于VoIP的专用电话交换系统。你将快速掌握Digium公司长期支持的Asterisk 16中的功能。本书还介绍了有关WebRTC和Asterisk实时接口(ARI)的内容。
? 探索WebRTC如何为Asterisk提供新的视角。
? 获得知识以构建一个简单但完整的电话系统。
? 使用Asterisk高级功能的最佳实践来构建一个交互式的dialplan。
? 了解ARI如何成为Web开发语言与Asterisk交互的首选API。

Jim Van Meggelen是加拿大开源电话解决方案提供商ClearlyCore的首席技术官和联合创始人。他有超过30年的企业电信和网络经验。
Russell Bryant是Red Hat的杰出工程师,从事云基础设施项目。在加入Red Hat之前,他从事Asterisk项目达7年之久。
Leif Madsen是Red Hat的CloudOps团队中的云服务保障架构师。

“ 本书将帮助你了解Asterisk的新特性,以及如何在电信基础设施中更好地发挥它的作用。”
——Matt Fredrickson
Sangoma/Digium公司
Asterisk工程主管

图书序言

在考虑本书每一版的序言时,我们总是希望能够邀请更多的人撰写,而非翻来覆去总是我们那几页。在第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权威指南(原书第5版)》译稿得以付梓。Asterisk是世界上应用最广泛、最成功的开源通信技术。防疫隔离期间,即时通信、电话会议的价值更为凸显。出版支持Asterisk最新技术的书,可能更具社会意义。
时光荏苒,Asterisk项目于1999年启动,至今已有20年历史。它有着灵活、开放的框架和众多实用的功能,在各种开源通信技术中脱颖而出。Asterisk之所以与时俱进、广受欢迎,在于它根植于一个开放、开源、不断满足用户需求、生机勃勃的社区。
不论社会怎样变迁,人们之间不断发展的通信需求会永存,通信技术亦会不断随之演进。本书覆盖Asterisk 16的最新发展,不仅全面讲述了Asterisk的最新技术和应用,还耐心细致地告诉你如何高效、安全地使用Asterisk。本书会帮助专家深入了解Asterisk的新技术、新方法;对初学者而言,本书通俗易懂,实战性强,也是一本非常好的入门使用指南。
为了高质量地完成翻译,我们追根溯源,查阅了大量国内外相关资料,并反复多轮校对译稿,付出了极大努力!本书也得到中兴通讯股份有限公司相关领导和同事的关心和支持,向大家深致谢意!我们大多利用个人休息时间完成本书的翻译和审校,我们的家人也给予大力的支持,向所有译审团队的家人表示由衷的感谢!
鉴于水平有限,疏漏难免,敬请广大读者不吝赐教:yan.lin2@zte.com.cn。

闫林
2020年4月11日

推荐序

沟通是人类最基本的需求。从飞鸿传书到现在的5G、6G,通信技术飞速发展。Asterisk是众多基础通信软件中的一款佼佼者。看了本书,作为ICT领域的老兵,我想谈几点看法:
1. Asterisk是一款优秀的通信软件。Asterisk从20世纪90年代末诞生至今,以其开放性、灵活性、易用性、安全性、遵循行业标准等特点,深得通信爱好者认可,成为在全球广泛应用的电话通信软件。
2. 开源赋予Asterisk强大生命力。开源已经是一股不可阻挡的时代潮流。开源的独特文化和运营机制深刻影响了许多领域,包括电话领域。Asterisk就是一款优秀的开源通信软件,已经持续更新了16版,其不断进化的生命力源自其开源的属性、活跃的社区、众多的用户和乐于奉献的开发者。
3. 此书的出版正当其时。本书涵盖最新的第16版Asterisk,介绍了有关WebRTC、Asterisk实时接口(ARI)等新的知识。这些新技术将让Asterisk在新的通信技术浪潮中迸发新的生机。本书中文版的问世,必将推动Asterisk在中国的普及和发展。

陈新宇
中兴通讯股份有限公司副总裁
2020年7月6日

图书目录

序言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

教学资源推荐
作者: 朱鸣华 罗晓芳 董明 孟军 汪德刚 编著
作者: [美]加里·R. 赖特(Gary R. Wright),W. 理查德·史蒂文斯(W. Richard Stevens) 著
作者: (美)Maurice Herlihy 布朗大学 Nir Shavit 麻省理工学院 著
作者: 郑阿奇 主编 顾韵华 等编著
参考读物推荐
作者: [美]丹尼尔?希夫曼(Daniel Shiffman)著
作者: George Shepherd
作者: 王小科 李继业 等编著