




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Asterisk权威指南/第一章 一场电话革命当我们开始着手写一本Asterisk书的时候(大概五年前),我们确信Asterisk将会从根本上改变通讯行业。今天,我们预言的这场革命几乎就要完成了。Asterisk现在是世界上最成功的PBX,并且是通讯行业的公认技术(尽管并不总是受欢迎)。不幸的是,在过去五年中,通讯行业仍然没有找到正确的方向。我们通讯的方式已经变了。尽管20年前打电话是远距离通讯的首选方式,但目前的趋势是文本消息(email,IM,等等)。打电话看起来有点out了,特别对于成长起来的下一代来说。Asterisk仍然是很棒的技术,对于想在任何技术中集成通讯功能的企业来说,Aste
2、risk还是最佳选择。使用Asterisk,没有人可以规定你系统的工作方式,或者限制你使用的技术。你想要什么,就可以拥有什么。Asterisk热情地拥抱标准,同时也享受创新的自由。你想怎么实现完全取决于你Asterisk不会向你强加任何约束。当然,这难以置信的灵活性也不是免费的:Asterisk并不是一个可以轻易配置的系统。这并不是因为它不合逻辑、混乱或晦涩;相反它相当合理,而且实用。人们第一次看到拨号计划时,眼睛往往为之一亮,并很快开始设想各种可能性。但是,当同一结果可以用无数种方式实现时,需要付出的努力也是可想而知的。(TODO)目录 1Asterisk和VoIP:连接传统电话和网络电话的
3、桥梁 2Zapata电话项目 3巨变需要灵活的技术 4Asterisk:黑客的PBX 5Asterisk社区 6Asterisk邮件列表 7IRC频道 8Asterisk用户组 9Asterisk文档计划 10商业分析 11结束语Asterisk和VoIP:连接传统电话和网络电话的桥梁Voice over IP(VoIP)往往被认为只不过是一种打免费长途电话的方法。但它的真正意义(同时也是挑战所在)是,它认为语音只不过是数据通讯网络的另一个应用。有时候人们似乎有点忘记了电话的目的是通讯。这是一个简单的目标,我们应该能够以更灵活、更具创造性的方式达成。Asterisk一类的技术降低了我们进入这个
4、领域的门槛。Zapata电话项目当Asterisk项目开始的时候(1999),也有一些其他的开源电话项目。但是,Asterisk通过与Zapata电话项目结合,能够提供公共交换电话网络(PSTN)接口,这是一个里程碑,使得软件的威力从纯数据通讯的网络迁移到了更实用的电信网络,后者是以PSTN为中心的。Zapata电话项目由Jim Dixon创建。Jim Dixon是一位通讯咨询工程师,他受到CPU速度飞速进步的启发,决定开发Zapata电话项目。Dixon相信,只要有一块能够处理电话电路的简易接口卡,就有可能创造出便宜得多的电话系统。数字信号处理(DSP)将在CPU上通过软件实现,从而不需要在
5、卡上配置昂贵的数字信号处理芯片。尽管这会加重CPU的负荷,但Dixon相信CPU的高性价比相对于昂贵的DSP芯片更有吸引力,并且CPU的性价比还会不断提高。Dixon的远见卓识使他相信,会有很多其他人看到这个机会,他只需要等待,等某某人实现他所期待的关键进步,然后再动手干。但是几年过去了,他发现不仅没有人创造出他所要的接口卡,也没有迹象表明有人打算这么干。再明显不过了,如果他想要一场革命的话,他得亲手发动它。于是Zapata电话项目诞生了:由于这个概念如此具有革命性,并且注定会在行业内掀起波澜,我决定以著名的墨西哥革命家Emiliano Zapata的名字来命名这项技术和组织。我把这块接口卡称
6、为tormenta,在西班牙语中是风暴的意思。也许我们应该称自己为Asterisk人。总之,我们欠Jim Dixon一个人情,一部分是因为他的天才创想,一部分是因为他的坚持和执着,更重要的是他把成果贡献给了开源社区。正是Jim的贡献,才使得Asterisk的PSTN引擎成为可能。多年来,Astersik的Zapata接口卡不断改进。DAHDI(Digium Asterisk Hardware Device Interface)接口卡就是对Zapata的继承和发展。巨变需要灵活的技术现有的PBX都有各自的缺憾。不管它的特性有多丰富,总有些方面是没有覆盖到的,因为它永远赶不上用户的想象力。比如有的
7、用户可能需要一个很古怪的特性,设计者要么没想到,要么觉得成本不划算而不考虑,而且,由于系统是封闭的,用户也不可能自己动手实现。如果Internet受到这些封闭的商业利益方面的限制,很难想象它能获得今天如此广泛的认同。Internet的开放性使得任何人都负担得起。所以,人们参与进来了。几万个头脑在Internet上相互协作所创造出来的东西是任何一家公司都难以想象的。像许多其他开源项目一样,比如Linux和那些承载Internet运转的其他软件,Asterisk的开发也是由网民的梦想驱动的,大家都觉得应该有比那些封闭产品更好的东西。人们知道,如果把各个PBX的优秀部分拿出来做进一步的分解,分解成一
8、组可以互通的模块(就像一盒乐高砖块),那么就有可能创造出封闭企业不可能生产出来的产品。由于没有人能够声称他可以把握整个事情的全貌,也就不会缺乏各种观点和想法。很多新手会觉得Asterisk就像一个未完工的大工地。也许把这些人看成画室的参观者更恰当,他们来到画室,期待看到已经标好价格、签好名的作品。但他们往往失望而去,因为他们发现Asterisk不过是一张张空白画布、一管管颜料和一堆没有用过的画刷。Asterisk是众多艺术家培育出来的,比任何其他PBX的都多。很多厂家最多为某个产品配置几个开发者;Asterisk则有几十个。那些专有PBX厂商拥有几十人的全球支持团队;Asterisk则有几百个
9、。围绕Asterisk的相关知识的广度和深度在通讯行业是罕见的。在Asterisk这个大家庭中,有来自旋转拨号盘时代的老专家,也有来自语音信箱等企业通讯领域的专才,还有来自数据通讯领域的极客。这些人有一个共同的信念,那就是通讯行业需要一场真正的革命。Asterisk就是导火索。Asterisk:黑客的PBX那些选择忽视Asterisk的通讯公司,我只有一句话送给他们:后果自负。它的灵活所带来各种可能性是哪怕最好的专有系统做梦都不敢想的。因为Asterisk是终极黑客的PBX。黑客这个词的意思已经被大众媒体扭曲成了“恶意破坏者”。这很不幸,因为这个词在被媒体丑化之前已经存在很久了。正是黑客建造了
10、这个被称为Internet的网络引擎。黑客建造了苹果计算机和UNIX操作系统。黑客也正在建造你的下一代通讯系统。不用害怕;这些家伙不坏,他们将建造比现今任何东西都要安全的系统。相较于不确定和不安全的封闭系统,黑客将能够快速响应安全领域的变化趋势,并根据公司政策和业界最佳实践调整电话系统。(TODO)Asterisk:专家的PBX在通讯行业的历史上还从来没有过任何一个系统,能够以任何一个价格满足任何一个需求。Asterisk很快就会和Linux一样,你将很难发现一个没有运行Asterisk的公司。这种认可将会发生得比Linux还快,原因如下: Linux已经打开了认可开源软件的风气。 通讯行业举
11、步维艰,缺少行业巨人的领导。Asterisk则有一个令人信服、切合实际而又令人激动的愿景。 最终用户已经受够了糟糕的功能和可怕的服务;Asterisk已经解决了前一个问题,后一个问题将留待企业家和开源社区来解决。Asterisk社区Asterisk令人信服的地方之一就是开发它并且为它提供支持的充满激情的社区。这个由Digium领导的社区敏锐地意识到了Asterisk的文化意义,并且对未来充满乐观。Asterisk社区能量的一个副产品就是它所催生的通讯专家、网络专家和信息技术专家之间的合作。尽管在传统意义上这些能人之间互相并不买账,但在Asterisk社区他们能够欣赏彼此的技能。这种合作绝不可被
12、轻视。如果想要实现Asterisk的理想,社区就必须发展壮大;社区当前面临的关键挑战之一就是新用户的快速涌入。社区的老成员创造了Asterisk,他们当然欢迎新用户,但他们有时候会对那些没有做足功课的提问不耐烦。如果新人愿意花些时间去学习、探索和试验的话,很多问题是可以自己找到答案的。当然,新用户不可能都是一个模子里倒出来。尽管有些人会乐呵呵地花几个小时做各种试验或阅读博客文章,有些人却是没有这种追求的。他们想要一种简单、直白的步骤指南,可以让他们快点把东西跑起来,最好还有一些实现常用功能的示例(例如语音信箱,自动接待等)。对Asterisk专家来说,Asterisk其实是一种Web开发语言(
13、这种观点是正确的),所以“步骤指南”毫无意义。你必须把自己浸泡到Asterisk中去体会它的细节。想想看,谁会指望通过步骤指南去掌握一门编程语言呢?显然,没有一种方法可以适合所有人。(TODO)当你逛社区的时候,你应该知道里面什么人都有,他们有各自的技能和态度。其中有些人对新用户并不是很有耐烦,这只能说明他对那个问题不热心,并不表示他不欢迎你的加入。Asterisk邮件列表像其他社区一样,Asterisk也有地方让大家讨论问题。相关的邮件列表可以在找到,其中最重要的有三个: Asterisk-Biz Asterisk相关的商务方面的问题属于这个列表。如果你想买或者想卖和Asterisk相关的东
14、西可以到这里来。 Asterisk-Dev Asterisk的开发者都在这里面晃荡。这个列表的目的就是讨论Asterisk的开发问题,它的参与者也都很严肃地坚持这一点。如果往里面提交任何跟Asterisk代码开发无关的东西肯定会被暴扁。AGI或者AMI编程接口一类的问题应该提交到Asterisk-Users。(TODO) Asterisk-Users 这是大多数Asterisk用户待的地方。这个列表有超过一万个用户,每天产生几百条消息。你当然可以去那里寻求帮助,但前提是你至少已经读过一些文档了。Asterisk维基站(TODO:这里有点让人困惑。首先,我没有找到Asterisk Wiki,和A
15、sterisk相关的Wiki只有。其次,James Thompson就是的创办人,James Thompson在之前还创办了另外一个Wiki吗,搞不清楚。)是社区维护的一个知识库,其中包含大量的有用信息,有时候这些信息还有自相矛盾点,但不失为一个大宝藏,其中除了Asterisk还有其他voip相关的内容。Asterisk相关文档到目前为止构成了voip-info的很大一部分,可能比其他任何地方的Asterisk信息加起来还多,所以voip-info是一个很受欢迎的
16、Asterisk知识库。一个重要的新维基站是Asterisk的官方Wiki,位于。虽然内容还没有全,但这个Wiki会得到更正式的支持,其中的信息可能会更及时、更准确些。IRC频道Asterisk社区在上有聊天频道。两个最活跃的频道是#asterisk和#asterisk-dev。为了防止垃圾信息的打扰,这两个频道都需要注册才能加入。Asterisk用户组过去十年中,在世界上很多城市里,那些寂寞的Asterisk用户意识到可能有其他同道中人就住在附近。于是Asterisk用户组(AUGs)相继在各地出现。尽管这些用户组没有正
17、式联系,但他们一般会链接彼此的网站,欢迎来自其他用户组的成员。搜索“Asterisk User Group”也许找到一个你所在地区的用户组。Asterisk文档计划Asterisk文档计划由Leif Madsen和Jared Smith创建,也得到了社区其他人的帮助。Asterisk文档计划的目标是提供一个Asterisk相关的结构化的文字作品。相较于Wiki的灵活和即兴,文档计划更热衷于一种集中的方式来介绍Asterisk相关主题。Asterisk文档计划可以在免费获取。商业分析今天的商业环境瞬息万变,大多数业务每过几年就要更新换代。但很少
18、有企业在转变业务方向时,能够负担得起一套全新的通讯设施。现在的商业环境要求各项技术都具备足够的灵活性,包括通讯。(TODO:进一步佐证上述观点)结束语那么从何开始呢?关于Asterisk,一本书是远远不够的。本书只能介绍一些基本的东西,但以此为基础你将能深入理解Asterisk,然后接下来,谁知道你将会用它创造出什么奇迹。Asterisk权威指南/第二章 Asterisk架构Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels)。传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界)
19、。这意味着,你不可能无缝地在一个工作站端口配置一个外部网关。同样,传统PBX也很难实现对离站(off-site,不在座位上或外出办事)资源的访问,比如前台如果外出办事就什么事都做不了,因为她哪怕能打电话回公司,也是不能访问内部资源的。Asterisk在内部不区分工作站信道和电话局信道,而是一律统称信道。有很多种信道类型(驱动不同),但Asterisk拨号计划以不加区别(接口一致)的方式处理这些信道,也就是说,一个内部用户可能位于电话局端口,但拨号计划可以把他当成在工作站端口一样。如果你没有用过传统PBX,可能还体会不到Asterisk这种方式的强大和灵活。下图显示了两种架构的区别。目录 1模块
20、o 1.1应用程序o 1.2桥接模块o 1.3电话详单记录模块o 1.4信道事件日志模块o 1.5信道驱动o 1.6编码解码器o 1.7格式解释器o 1.8拨号计划函数o 1.9PBX模块o 1.10资源模块o 1.11附加模块o 1.12测试模块 2文件结构o 2.1配置文件o 2.2模块o 2.3资源库o 2.4spoolo 2.5日志 3拨号计划 4硬件 5Asterisk版本o 5.1以前的版本方案o 5.2现在的版本方案 6结束语模块Asterisk是基于模块构建的。一个模块提供特定的功能,是一个可装载的组件,比如信道驱动(chan_sip.so),或者一项可以连接到外部技术的资源(
21、func_odbc.so)。Asterisk按照/etc/asterisk/modules.conf配置文件装载模块。后面我们会讨论各个模块的使用。这里我们只会介绍模块的概念,以及模块的各种类型。运行一个不加载任何模块的Asterisk也是有可能的,尽管它什么都做不了。你只有理解了Asterisk模块化的特点,才能充分理解Asterisk的架构。Note:你可以启动一个没有加载任何模块的Asterisk,然后手工在控制台一个个地添加;这种方法一般用于性能调优,可以保证仅加载所需要的模块。Asterisk模块类型包括: 应用程序(即拨号计划中的命令) 桥接模块 呼叫详单记录模块 信道事件日志模块
22、 信道驱动 编码解码器 格式解释器 拨号计划函数 PBX模块 资源模块 附加模块 测试模块接下来我们会列出分属各个类型的所有模块,他们的用途,以及我们所认为的受欢迎程度和重要程度(有一些很常用,但有一些不太有用,仅仅是为了兼容而保留)。这些模块的细节会在本书中陆续介绍,根据各自的情况,有些会被全面的讨论,有些则根本不会涉及。下面这些术语反映了我们对各个模块的看法: 不重要这个模块是个老古董。如果你要使用它,就不要指望能在社区中得到很好的支持。 不可靠新设计的或者试验性的模块,不要用于生产环境。 很有用很时新,有人维护,受欢迎而且被推荐。 可以用能够用,但用得不多,可能不完整。不推荐。 不好说新
23、出现的模块,时间短,完整性和受欢迎程度都不太好说。 已废弃已经被更好的模块取代了。 有局限有局限性,不能满足要求。 很重要必须的。应用程序应用程序用于拨号计划中,能够处理呼叫流程。比如Dial()就是一个很重要的应用程序,负责建立出局连接。名称用途评价app_adsiprog给兼容模拟电话加载模拟显示服务接口(ADSI)脚本。不重要app_alarmreceiver支持接受警报设备的报告。不重要app_amd检测电话答录机。不稳定app_authenticate比较双音多频(DTMF)输入和一个给定的字符串(通常是密码)。很有用app_cdr写CDR记录。很有用app_celgenuserev
24、ent为CEL产生用户自定义事件。不好说app_chanisavail检测信道的状态。不稳定app_channelredirect强制另一个信道进入拨号计划的另一个地方。很有用app_chanspy允许一个信道收听另一个信道。很有用app_confbridge电话会议(新版)。不好说app_controlplayback播放提示,并提供快进和倒带功能。很有用app_dahdibarge允许在DAHDI信道中插话。(已废弃,见app_chanspy)已废弃app_dahdiras在DAHDI信道上建立RAS服务器。不重要app_db访问Asterisk内置的伯克利数据库。(已废弃,见func_d
25、b)已废弃app_dial把信道连接起来。(例如,打电话)很重要app_dictate播放一段录音,并提供开始/停止功能。很有用app_directed_pickup应答另外一部分机上的呼叫。很有用app_directory给出voicemail.conf中的姓名列表。很有用app_disa提供拨号音并接受DTMF输入。很有用app_dumpchan在Asterisk控制台打印信道变量。很有用app_echo回放从信道中收到的语音。很有用app_exec包含Exec(),TryExec()和ExecIf()。根据条件执行应用程序。很有用app_externalivr类似于AGI,但是异步的。很
26、有用app_fax提供SendFax()和ReceiveFax()很有用app_festival“文本-转-语音”引擎。可以用app_flash在信道上执行一次瞬间挂机很有用app_followme根据followme.conf文件执行找到我/跟随我功能。很有用app_forkcdr在当前呼叫上开始一条新的CDR记录。可以用app_getcpeid获得ADSI CPE ID。不重要app_ices把音频发送到一个icecast服务器。可以用app_image向可以支持的设备上传输图像。有局限app_ivrdemo开发者的示例应用程序。不重要app_jack使用JACK音频连接工具包共享音频。很
27、有用app_macro触发拨号计划宏。(已废弃,见GoSub())已废弃app_meetme多方会议。很有用app_milliwatt产生1004赫兹的音频,以测试模拟电路。很有用app_minivm提供基本的函数,使得你可以构造自己的语音信箱。可以用app_mixmonitor两头录音,然后合并。很有用app_morsecode产生莫尔斯电码。可以用app_mp3用mpg123播放mp3。不重要app_nbscat获得NBS音频。不重要app_originate允许发起一次呼叫。很有用app_osplookup执行OSP查找。可以用app_page寻呼。很有用app_parkandannou
28、nce自动播报保持的电话。可以用app_playback播放音频文件,不接受输入。很有用app_playtones播放按键音。很有用app_privacy如果没有收到CallerID,就要求输入用户号码。不重要app_queue提供自动呼叫分配。很有用app_read要求用户输入,并把输入存入变量。很有用app_readexten要求用户输入,并把当前呼叫转移到指定分机和上下文。可以用app_readfile把文件内容存入一个信道变量。(已废弃,见func_env中的FILE())已废弃app_record把收到的音频存入文件。很有用app_rpt使用声卡。(TODO:什么是rpt项目,不懂。
29、)有局限app_sayunixtime已指定的格式播放时间。很有用app_senddtmf向呼叫者传输DTMF音频。很有用app_sendtext向兼容的信道发送文本。不重要app_setcallerid在信道上设置CallerID。(已废弃,见func_callerid)已废弃app_skel开发者的示例应用程序。很有用app_sms在支持的地区发送SMS消息。有局限app_softhangup请求关闭信道。很有用app_speech_utils语音识别。很有用app_stack提供GoSub()等堆栈相关的操作。很重要app_system执行操作系统命令。很有用app_talkdetect
30、类似于app_background,但允许收到音频后中断播放。很有用app_testC/S测试应用程序。可以用app_transfer在当前信道上执行转移。很有用app_url向被呼叫信道传递URI。有局限app_userevent在AMI中产生一个定制事件。很有用app_verbose在CLI中产生一个定制时间。很有用app_voicemail提供语音信箱功能。很重要app_waitforring(TODO:不明白)不重要app_waitforsilence包括WaitForSilent()和WaitForNoise();监听入局信道,有超时限制。很有用app_waituntil等待一个指定
31、的Linux时间(从1970第一秒开始的计数值)到来。很有用app_while包括While(),EndWhile()等,用于循环。很有用app_zapateller播放特殊音调,以阻止电话推销者。可以用桥接模块桥接模块是Asterisk 1.8的新功能;他们以新的方式执行信道之间的桥接。他们每一个都提供不同的特性,用于不同的桥接需求。这些模块只用于app_confbridge。名称用途评价bridge_builtin_features当使用内置用户特性(在features.conf中定义)时,执行桥接。不好说bridge_multiplexed执行复杂的多路转发,用于大型会议室。不好说bri
32、dge_simple执行简单的“信道-到-信道”桥接。不好说bridge_softmix执行简单的多路转发,用于大型会议室。(TODO:不明白和bridge_multiplexed的区别)不好说电话详单记录模块CDR模块是为了让各种形式的话单记录更方便。你可以把CDR存入文件、数据库、RADIUS、或syslog。注:CDR不是为了计费而设计的。计费功能应该使用CEL。名称用途评价cdr_adaptive_odbc通过ODBC写CDR,允许添加自定义字段。很有用cdr_csv把CDR写入CSV文件。可以用cdr_custom和cdr_csv一样,但允许添加自定义字段。很有用cdr_manage
33、r把CDR输出到AMI接口。很有用cdr_odbc通过ODBC写CDR。可以用cdr_pgsql把CDR写到PostgreSQL。很有用cdr_radius把CDR写到RADIUS。可以用cdr_sqlite把CDR写到sqlite2数据库。(已废弃,见cdr_sqlite3_custom)已废弃cdr_sqlite3_custom把CDR写到sqlite3数据库,允许添加自定义字段。很有用cdr_syslog把CDR写到syslog。很有用cdr_tds把CDR写到Microsoft SQL或Sybase数据库,需要老版tds。可以用Web接口中会有一些和CDR相关的报告功能。信道事件日志模
34、块信道事件日志可以完整记录所有的呼叫活动。这也意味着你需要更小心地规划拟拨号计划,毕竟它不可能自动开始工作。Asterisk的CEL模块如下:名称用途评价cel_custom写到磁盘文件。很有用cel_manager写到AMI。很有用cel_odbc写到ODBC。很有用cel_pgsql写到PostgreSQL。很有用cel_radius写到RADIUS。可以用cel_sqlite3_custom写到sqlite3。很有用cel_tds写到Microsoft SQL或Sybase,需要老版tds。可以用信道驱动没有信道驱动,Asterisk就不可能建立呼叫。每种协议或信道类型都有自己特定的信道
35、驱动。信道模块可以看做是通往Asterisk内核的网管。Asterisk的信道驱动如下:名称用途评价chan_agent为Queue()提供坐席信道。很有用chan_alsa提供到高级Linux声音架构(ALSA)的连接。很有用chan_bridge仅供ConfBridge()内部使用。很重要chan_console提供到portaudio的连接。不好说chan_dahdi提供到DAHDI接口卡的连接。很有用chan_gtalk提供到Google Talk的连接。可以用chan_h323提供H.323连接。(已废弃,见chan_ooh323)已废弃chan_iax2提供IAX2连接。很有用ch
36、an_jingle提供jingle连接。可以用chan_local把一部分拨号计划当成信道。很有用chan_mgcp提供媒体网管控制协议(MGCP)连接。可以用chan_misdn连接到支持mISDN的ISDN卡。有局限chan_multicast_rtp连接到RTP多播流。很有用chan_nbs网络广播声音(NBS)连接。不重要chan_oss开放声音系统驱动。很有用chan_phoneLInux电话接口驱动,相当老。不重要chan_sip回话启动协议。很重要chan_skinny思科瘦客户端控制协议(SCCP)。可以用chan_unistim北电Unistim协议。可以用chan_usbr
37、adioCM108 USB无线电接口卡。可以用chan_vpbVoicetronix信道。不重要编码解码器编码解码器允许Asterisk转换不同呼叫之间的音频格式。如果一个呼叫来自PRI电路(使用G.711编码),需要连接到一个SIP压缩信道(使用G.729,SIP支持的编码之一),那么相应的编码解码器就会执行所需的转换。注:如果编码解码需要复杂的算法,大量的转码工作会对CPU造成负担。有些像Sangoma和Digium厂商的卡会提供硬件解码编码。名称用途评价codec_adpcm自适应差分脉码调制解调不重要codec_alaw全世界PSTN(除了美国、加拿大)采用脉冲编码调制的A-law算法
38、。很重要codec_a_muA-law到Mu-law的转换。很有用codec_dahdi使用Digium硬件解码。(需要Digium转码卡)很重要codec_g722宽频带音频编码解码。很有用codec_g726(TODO:不懂,大概类似于codec_adpcm)不重要codec_gsm全球移动通讯系统。很有用codec_ilbc因特网低比特率编码解码。不重要codec_lpc10线性预测编码生硬合成器。不重要codec_resample8-bit和16-bit间带符号线性采样。可以用codec_speexspeex编码。可以用codec_ulaw用于美国、加拿大的 脉冲编码调制的Mu-law
39、算法。很重要格式解释器格式解释器调用编码解码器的功能,但他们操作文件而不是信道。如果你录制了一段GSM音频,要播放到其他非GSM信道,就需要一个格式解释器。如果你录制成了多种格式(GSM,WAV),当某个信道需要该音频时,Asterisk会选择一个转换代价最小的格式。名称用途评价format_g723G.723 .g723不重要format_g726G.726 .g726不重要format_g729G.729 .g729很有用format_gsmRPE-LTP (original GSM codec) .gsm可以用format_h263H.263video .h263可以用format_h2
40、64H.264video .h264可以用format_ilbcInternet Low Bitrate Codec .ilbc不重要format_jpegGraphic file .jpeg .jpg不重要format_ogg_vorbisOgg container .ogg可以用format_pcmVarious Pulse-Coded Modulation formats: .alaw, .al, .alw, .pcm, .ulaw, .ul, .mu, .ulw, .g722, .au很有用format_siren14G.722.1 Annex C (14 kHz) .siren14不
41、好说format_siren7G.722.1 (7 kHz) .siren7不好说format_sln1616-bit signed linear .sln16不好说format_sln8-bit signed linear .sln .raw很有用format_vox.vox不重要format_wav.wav很有用format_wav_gsmGSM audio in a WAV container .WAV, .wav49可以用拨号计划函数拨号计划函数是对拨号计划应用程序的补充,提供了一些有用的增强功能,比如字符串处理、日期时间转换、ODBC连接性等。名称用途评价func_aes加密、解密A
42、ES字符串。很有用func_audiohookinherit允许呼叫转移后仍被录音。很有用func_base64编码、解码base-64字符串。可以用func_blacklist读、写astdb中的黑名单。很有用func_callcompletion存取信道的呼叫完成配置参数。不好说func_callerid存取CallerID。很有用func_cdr存取CDR变量。很有用func_channel存取信道信息很有用func_config包括AST_CONFIG();从配置文件读取变量。可以用func_connectedline改变已连接的信道信息(需要电话的支持)。不好说func_curl使用
43、curl访问URL。很有用func_cut对字符串切片或者切块。很有用func_db提供astdb函数。很有用func_devstate获得设备状态。很有用func_dialgroup创建一个同时拨号组。很有用func_dialplan验证指定的拨号计划目标是否存在。很有用func_enum执行ENUM查找。很有用func_env包括FILE(),STAT(),ENV()。执行操作系统动作。很有用func_extstate返回指定的分机状态。很有用func_global存取全局变量。很有用func_groupcount存取一个组的信道数。很有用func_iconv字符编码转换。可以用func_
44、lock包括LOCK(),UNLOCK(),TRYLOCK();用于拨号计划中的竞争控制。很有用func_logic逻辑判断函数,包括ISNULL(),SET(),EXISTS(),IF(),IFTIME(),IMPORT()很有用func_math数学函数,包括MATH(),INC(),DEC()很有用func_md5生成MD5指纹。很有用func_module检测模块是否已经装载。可以用func_odbc访问ODBC。很有用func_pitchshift修改音频流的音调。很有用func_rand生成一个随机数。很有用func_realtime在Asterisk实时架构中执行查找。很有用fu
45、nc_redirecting获取本次呼叫的转发信息。很有用func_sha1生成SHA1指纹。很有用func_shell执行shell命令,并返回结果。很有用func_speex执行声音调优。很有用func_sprintf字符串格式化。很有用func_srv执行SRV查找。很有用func_strings字符串处理函数。很有用func_sysinfo获取系统信息,例如内存,交换空间和CPU负荷等。很有用func_timeout存取信道的超时时间。很有用func_uri把字符串做URI安全编码。很有用func_version获取Asterisk版本信息。可以用func_vmcount获取语音信箱的
46、消息数。很有用func_volume设置信道音量。很有用PBX模块PBX模块提供增强的控制和配置机制。名称用途评价pbx_ael提供AEL支持。(很少有人用,如果不想用传统的拨号计划配置文件的话,大多数人会选择AMI+AGI)可以用pbx_config用于解释extensions.conf,最传统、用得最多的拨号计划语言。很有用pbx_dundi执行远程Asterisk数据查找。很有用pbx_loopback类似于拨号计划的include,有点过时。不重要pbx_lua支持使用lua编写拨号计划。很有用pbx_realtime提供Asterisk实时架构相关的功能。很有用pbx_spool和A
47、sterisk外呼文件有关,提供外呼连接池。很有用资源模块资源模块用于集成外部资源。例如res_odbc用于访问ODBC数据库连接。名称用途评价res_adsi提供ADSI。(尽管大多数ADSI功能Asterisk是不用的,但语音信箱用到这个资源)很重要res_ael_share为pbx_ael提供共享程序。(如果你使用AEL的话,这个模块就很重要。)很重要res_agi提供Asterisk网管接口。很有用res_ais使用注入OpenAIS一类的AIS实现, 提供分布式消息等待指示和设备状态通知。很有用res_calendar提供日历系统的集成。很有用res_calendar_caldav提
48、供CalDAV特定的能力。很有用res_calendar_exchange提供微软Exchange的特定能力。很有用res_calendar_icalendar提供苹果/谷歌的iCalendar特定能力。很有用res_clialiases创建CLI别名。很有用res_clioriginate从CLI发起一次呼叫。可以用res_config_curl使用curl拉取配置信息。很有用res_config_ldap从LDAP拉取配置信息。可以用res_config_odbc从ODBC拉取配置信息。很有用res_config_pgsql从PostgreSQL拉取配置信息。可以用res_config_s
49、qlite从SQLite拉取配置信息。可以用res_convert使用CLI执行文件编码转换。可以用res_crypto提供加密功能。很有用res_curl为其他curl模块提供公共服务。很有用res_fax为其他fax模块提供公共服务。很有用res_fax_spandsp为使用spandsp的传真功能提供插件。很有用res_http_post为Asterisk的HTTP服务器提供POST上传功能。可以用res_jabber提供Jabber/XMPP资源。很有用res_limit允许调整Asterisk进程的系统限制。可以用res_monitor提供呼叫录音资源。很有用res_musiconh
50、old提供等待音乐(MOH)功能。很重要res_mutestream提供音频流的禁音和放音功能。不好说res_odbc为其他ODBC模块提供公共功能。很有用res_phoneprov(TODO:提供来自Asterisk HTTP 服务器的电话?不懂。)不好说res_pktccops提供PacketCable COPS资源。不好说res_realtime为Asterisk实时架构(ARA)提供CLI命令。很有用res_rtp_asterisk提供RTP。很重要res_rtp_multicast提供多播RTP。不好说res_security_log启用安全日志。不好说res_smdi通过SMDI协
51、议提供语音信箱通知。有局限res_snmp向SNMP管理的网络提供系统状态信息。可以用res_speech通用语音识别API。有局限res_timing_dahdi通过DAHDI内核接口提供时钟。很有用res_timing_kqueue通过某些操作系统的特性提供时钟。不好说res_timing_pthread使用标准pthread API提供时钟;不是很有效率,但移植性好。很有用res_timing_timerfd通过新版Linux内核的timerfd API提供时钟。很有用附加模块附加模块是社区开发的模块,用法和版权条款都和Asterisk的主代码不一样。它们位于不同的目录,缺省是不会编译和
52、安装的。要启用这些模块就要使用menuselect构建配置工具。名称用途评价app_mysql在拨号计划中执行MySQL查询。(已废弃,见func_odbc)已废弃app_saycountpl用波兰语播报计数。(已废弃,已经集成到say.conf中)已废弃cdr_mysql在MySQL中记录CDR。(我们推荐cdr_adaptive_odbc)可以用chan_mobile允许手机通过蓝牙接听或拨打电话。有局限chan_ooh323支持H.323协议。可以用format_mp3支持播放MP3文件。可以用res_config_mysql使用MySQL数据库作为实时配置后端。很有用测试模块测试模块被
53、Asterisk开发团队用来验证新代码。它们会被频繁地添加或修改,对你没什么用,除非你要开发Asterisk。如果你是Asterisk开发者,你也许会对Asterisk测试套件有兴趣,你可以执行自动测试并将结果反馈给Asteisk项目。通过不断地添加测试用例,Asterisk可以防止代码腐烂。通过添加你自己的测试用例,升级的时候会更有把握些。更多信息可以参考: /2010/04/29/installing-the-asterisk-test-suite/ /svn/testsuite/asterisk/trunk/README.txt #asterisk-testingFreenode IRC network文件结构Asterisk是一个复杂的系统,由很多资源组成。这些资源以不同的方式使用文件系统。既然Linux在这一点上很灵活,那就很有必要搞清楚什么数据存在什么地方(比如语音信箱文件、日志文件等)。配置文件Asterisk配置文件包括extensions.conf,sip.conf,modules.conf,以及各种信道、资源、模块和函数用到的参数定义文件。这些文件一般位于/etc/ast
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职务发明人离职后知识产权转移与保密约束协议
- 个性化定制私人商铺租赁与营销策划合同
- 离异父母子女抚养权调整及财产权益保障合同
- 离婚协议书范本及子女抚养权及探望权保证协议
- 离婚财产分割协议:房产、车辆及现金明细协议
- 快乐足球绘画课件
- 修身养心的课件
- 小学唱脸谱课件
- 采购流程培训课件
- 旅游技术技能测试题及答案
- 2024年第九届“学宪法 讲宪法”应知应会知识竞赛题库及答案
- 火车指导司机面试竞聘答辩问题
- 2.4水库泥沙防治-1泥沙淤积的成因危害与类型讲解
- 产科常用药物观察及不良反应
- 仓库发错货的解决方案
- 金属冶炼安全事故案例与分析
- 动物诊疗机构报告登记表
- 南京市2023-2024高一上学期期末英语试卷及答案
- 非法人经营授权书饿了么
- 了解胃肠肿瘤
- 2023年产科手术分级及安全核查培训考试试题
评论
0/150
提交评论