卷1:第1讲 Asterisk.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
卷1 :第1章 Asterisk Asterisk Russell Bryant Asterisk 1是基于GPLv2协议发布的⼀款开源电话应⽤平台。简单地说,这是⼀个服务 端程序,⽤于 理电话的拨出、接⼊以及⾃定义流程。 此项⽬由Mark Spencer于1999年创始。当时Mark有⼀个⾃⼰的公司,叫做Linux⽀持服 务公司,他需要⼀个电话系统来帮助⾃⼰操作业务。但他没有那么多钱去买这样⼀个 系统,因此他决定⾃⼰做。随着Asterisk知名度的提升,Linux⽀持服务公司的业务重 点也转向Asterisk ,公司也更名为Digium 。 Asterisk得名于Unix通配符: ,该项⽬的宗旨是能做所有与电话相关的事情。通过对 ⾃⼰宗旨的不懈追求,如今的Asterisk 已经⽀持⼀系列⽤于接拨电话的技术。这些技术 包括诸多VoIP (Voice over IP ,语⾳IP )协议,与传统电话⽹络的模/数连接性,以及 PSTN (Public Swithed Telephone Network ,公共交换电话⽹络)。对多种不同类型电 话的拨出与接⼊能⼒是Asterisk 的拿⼿好戏之⼀。 当Asterisk系统有电话接⼊或拨出时,系统有很多附加特性可⽤于电话的⾃定义 理。 有些特性是较⼤型的预置常⽤应⽤,如语⾳邮件 (voicemail );另外还有⼀些⼩特 性,可配合使⽤,⽤于创建⾃定义应⽤,如回放⾳频⽂件、读数字按键、语⾳识别 等。 1.1 关键架构概念 本节讨论⼀些跟Asterisk每⼀部分息息相关的架构概念。这些思想是Asterisk架构的基 础。 1.1.1 通道 在Asterisk 中,通道表⽰Asterisk系统与某电话端点的⼀条连接 (如图1)。⼀个最常见 的例⼦是,⼀路电话呼叫接⼊了Asterisk系统,就⽤通道表⽰这⼀连接。在Asterisk代 码中,通道是数据结构ast_channel的实例。图中这个呼叫场景可以视为呼叫⽅与某⼀ 系统应⽤ (⽐如语⾳邮件)的交互。 图1.2 两个通道表⽰两条呼叫线路 如上图连接的Asterisk通道称之为通道桥接。为了达到在通道间传输媒体的⽬的⽽把通 道连接起来,这样的⾏为即称为通道桥接。然⽽,在电话呼叫过程中也可能有视频或 ⽂本的数据流。即使有多于⼀种类型的媒体流,也是由Asterisk系统中负责呼叫连接两 端的通道独⽴ 理。在图1.2 中,两个通道分别对应电话A和电话B ,桥接的作⽤是将 媒体从电话A传输到电话B ,同理也可从电话A传输到电话B 。所有的媒体流都是通过 Asterisk系统传输的。Asterisk不允许传输⽆法识别或不能完全控制的媒体流。这意味 着Asterisk可以做如下事情:记录媒体、 理⾳频、在不同技术间进⾏转换等。 有两种⽅法可以完成两个通道的桥接:通⽤桥接和专⽤桥接。通⽤桥接时,⽆论通道 使⽤的什么技术都能够⼯作。它通过Asterisk 的抽象通道接⼜传输所有的⾳频和信号。 尽管这是⼀种最灵活的桥接⽅式,却是最低效的,因为完成桥接必须有多层抽象。图 1.2描述的就是通⽤桥接。 专⽤桥接是⾯向特定技术的通道连接⽅式。如果连接到Asterisk 的两个通道使⽤相同的 媒体传输技术,则势必有⼀种⽐通过抽象层更为⾼效的连接⽅式,因为抽象层是为使 ⽤不同技术的通道之间连接⽽准备的。例如,如果有这样⼀种专业化硬件⽤于连接电 话⽹络,那么在硬件上桥接通道就成为了可能,媒体流根本⽆需通过应⽤程序。对于 某些VoIP协议⽽⾔,可能通过端点向对⽅直接发送媒体流,这时只有呼叫信号的信息 是不断流过服务器的。 在桥接两个通道的时候,系统通过⽐较两通道来决定使⽤通⽤桥接还是专⽤桥接。如 果两通道都标识出⽀持同⼀种专⽤桥接⽅式,那么就是⽤专⽤桥接;反之使⽤通⽤⽅ 式。判决两通道是否⽀持同⼀种专⽤桥接⽅式,通过简单的⽐较C函数指针即可做 到。此法固然绝⾮上策,但我们还没有遇到不适⽤此法的情况。1.2部分还要讨论更多 有关专⽤桥接函数的细节。图1.3描述的是专⽤桥接的⼀个实例。 图1.4 通道技术层和抽象通道层 ast_channel_tech中最重要的⽅法有: requester:回调函数,⽤于请求某个通道驱动实例化⼀个ast_channel对象,并针 对其类型进⾏初始化。 call:回调函数,⽤于从端点 (由ast_channel表⽰)发起⼀个拨出呼叫。 answer:Asterisk决定对接⼊的呼叫进⾏应答 (与该ast

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档