asterisk架构

asterisk概述和代码分析 很久以前整理的,引用了多人的资料,难以一一记起,再次表示感谢! 目录 asterisk概述和结构分析 1 Asterisk项目概述 2 Asterisk二次开发概述 3 Asterisk通道模型与呼叫流程 3.1什么是a 阅读详情

从架构的角度看来,Asterisk是由许多不同的模块组成的。在设计基于Asterisk的系统时,这种模块化的特性,提供了几乎无限的灵活必。作为Asterisk系统管理员,你拥有选择加载模块的权利。你所加载的每一个模块,都提供了不同的系统功能。比如说,有的模块能够让你的Asterisk与模拟电话线路通信,有的模块则提供话务报告的功能。后续,我们还将讨论到各种模块的功能和类别。

 

Asterisk的整体框架

        在我们深入了解各种模块之前,让我们先退一步,看一下Asterisk的整体框架:

 

        当前,我们需要在上图中添加CEL和Bridge模块,而把CLI和Manager模块移除(在新版本中,这些模块重整过)。

CORE模块是Asterisk地核心。PBX内核是必不可少的组件,内核除了话务桥接功能之外,还提供了读取配置文件和加载其它模块的功能。后续我们会详细说明内核的功能,现在只需要牢记,其它模块都和内核模块紧密相连。

        从后勤角度看来,这些模块通常都是以.so为扩展名的文件,这些文件存放在Asterisk的modules子目录中(通常是/usr/lib/asterisk/modules)。在Asterisk启动时,它会加载这些文件,把它们的功能添加到系统中。

 

再哆嗦一点
花点时间,看一下你系统里Asterisk的modules目录。你应该会看到各种各样的模块。一个典型的Asterisk系统所包含的模块数量,通常都超过150个!

        内核还包含了拨号计规则,这是任何Asterisk系统的执行逻辑。拨号规则包含一系列的操作说明,这些操作说明是Asterisk处理系统入呼和外呼的行为准则。

        Asterisk的模块中,内核部分的文件名是pbx_xxxxx.so。

 

Asterisk的模块类型

通道驱动模块

       框架图的顶部,蓝色部分描述的就是通道驱动。通道驱动程序与Asterisk外部的设备通信,并为内核转换某种特定的信令或协议。

所有从外部呼入的呼叫,在抵达内核之前,都要经过某种通道驱动;所有外呼的呼叫,在抵达外围设备之前,也一定要经过某种通道驱动。

        例如:SIP通道驱动,用于与使用SIP协议的终端设备通信。它为内核转换SIP信令。这意味着Asterisk的内核是与信令无关的。因此,Asterisk不仅仅是SIP PBX,它是多协议的PBX。

所有通道驱动都以 chan_xxxxx.so命名,比如说chan_sip.so、chan_dahdi.so

拨号规则应用模块

           Application为系统提供呼叫相关的功能。这些应用可能是应答、播放提示音、挂机等功能。

应用模块为系统提供呼叫功能。这些应用,在拨号方案中按(草种)顺序脚本化。比如说,一个呼叫进入Asterisk拨号方案,可能会有一个应用作出应答;另一个应用从磁盘中读取一个文件,播放一段提示音;第三个应用,则让呼叫方在指定的语音信箱中留言。

有关拨号计划应用的更详细信息,请参考: Dialplan Fundamentals

         所有应用模块,都以app_xxxxx.so命名,比如说 app_voicemail.so

拨号规则功能模块

        从某种程度上来说,拨号规则的功能类似于应用,但是,它们不是作用于某个特定通道或呼叫,而是简单地检索或设置通道上的某个设定,或者执行文本操作。比如说,某个功能模块会检索呼叫的主叫ID信息,过滤某些文本,或为来电者设置一个超时时间。

         拨号规则功能模块,都以 func_xxxxx.so命名,比如说func_callerid.so

资源模块

        顾名思义,资源就是Asterisk需要用到的资源服务。常见资源如呼叫保持音乐、呼叫停泊等。

资源模块为Asterisk提供可以在呼叫过程中任意时刻调用的一些扩展功能,即使另一个应用正在某个通道上执行,也能够调用。资源模块典型应用于事件同步,比如说在呼叫置保持或挂起时播放音乐。

        资源模块以res_xxxxx.so命名,比如说 res_musiconhold.so

编解码模块

           一种CODEC,就是某种音频或视频的编解码模块。通常用于压缩媒体,以减少带宽消耗。

        编解码模块都以codec_xxxxx.so命名,比如说codec_alaw.so、 codec_ulaw.so

        编解码模块提供媒体流的编码和解码算法。Asterisk在接收和发送媒体(音频和视频)时,都用到编解码模块。这个模块还完成不同编码算法间的转换工作。

        Asterisk提供了多种媒体格式的支持,包括:ADPCM, 32kbit/s、G.711 alaw, 64kbit/s、G.711 ulaw, 64kbit/s、G.726, 32kbit/s、G.726, 32kbit/s、GSM, 13kbit/s、LPC-10, 2.4kbit/s。

        其它的如G.729A、G.723.1,是需要专利许可的。

文件格式驱动模块

      这些模块让Asterisk能够支持的一系列文件格式。Asterisk利用文件模块从网络上获取媒体流(音频或视频),转换成文件,存储在磁盘中;或者反过来从磁盘中读取文件并转换为媒体流。这些模块常常关系到编解码模块,对于某种编解码来说,磁盘上可能存在多种可用的文件格式。

       文件格式模块以format_xxxxx.so命名,比如说 format_wav.so、format_xxxxx.so

呼叫详细记录(CDR)驱动

       CDR模块的用途是把呼叫详细记录按不同的格式要求存储。常用的存储机制包括CSV文件、关系型数据库(比如PostgreSQL)。通常每一通呼叫生成一条通话记录,记录内容包括主叫、被叫、通话时长等等。

       CDR模块都以cdr_xxxxx.so命名,比如说cdr_csv.so、 cdr_pgsql.so

呼叫事件日志(Call Event Log)驱动

         CEL和CDR类似,但它更侧重于记录在呼叫过程中,Asterisk内部发生了什么。

         CEL记录呼叫过程中发生的各种事件。正因如此,它通常记录了比CDR更详尽的事情。比如说CEL可能会记录下这样的内容:ALICE呼叫BOB;BOB的电话在振铃20秒后,BOB的移动电话响铃了,再过15秒,呼叫转到BOB的语音信箱去了,然后ALICE留下一条25秒长的语音留言,然后挂机。系统还能够自定义需要记录的事件。

         CEL模块以cel_xxxxx.so命名,比如cel_custom.so、cel_adaptive_odbc.so

桥接模块

        从Asterisk1.6.2开始,Asterisk引入了桥接呼叫的一种新方法。它依赖各种桥接模块,控制为呼叫参与者间的媒体流混频方式。新的桥接方式,是一种更灵活、更高效的设计。

        桥接模块以 bridge_xxxxx.so命名,比如bridge_simple.so、 bridge_multiplexed.so.

Asterisk权威指南中文 Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 Asterisk权威指南(第3版)第07章外线连接 Asterisk权威指南(第3版)第08章语音邮件 Asterisk权威指南(第3版)第10章深入Dialplan Asterisk权威指南(第3版)第11章Parking&Paging Asterisk权威指南(第3版)第13章自动呼叫分配(ACD) Asterisk权威指南(第3版)第14章设备状态 立即下载

相关推荐

asterisk入门学习资料集合(全手写)

总共合集分为两个文件夹和四个word文档(资料全部手写完成) 四个文档介绍: 1、从centos系统安装到asterisk安装,配置账号并通话,有详细的图文讲解 2、asterisk安装之后的简单启动,简单命令 3、对asterisk增加g729和g723编码 4、对语音板卡的安装,配合asterisk进行使用。板卡安装,配置,也有图文详解。 两个文件夹: 1、asterisk有关的几个安装包。相关的全部安装包。下载安装即可用 2、g729和g723解码器

Asterisk的体系架构

1.引言 本文档从一个开发者的角度出发,概要描述Asterisk的体系架构。至于详细的API讨论,请参考公开API头文件所关联的文档。 本文档假定您了解Asterisk的一些知识,并知道如何使用它。 本文的意图是:从一个高的层次开始了解Asterisk,并逐步深入。它从Asterisk的组件差异开始,最终讨论这些组件在不同应用场景里 的协作关系。 文中,提供了很多交叉引用链接,指向相关API的一些引用参考,也可能指向相关的源码链接。 欢迎对本文档的反馈和贡献。请将您的真知灼见发给asterisk开发组的邮件

nb_zsy的博客 1875

c语言串口编程详解

串口: 一种异步通信接口,通常用于低速数据传输。RS-232: 最常见的串口标准,定义了电气特性、连接器和信号线。UART: 通用异步收发传输器,是实现串口通信的硬件模块。通过以上内容,你应能够理解并实现C语言在Windows和Linux平台上的串口编程。希望这本手册能帮助你在实际项目中顺利进行串口通信开发。如果有任何疑问或需要进一步的帮助,请随时提问。

jkzyx123的博客 2224

Asterisk权威指南/第二章 Asterisk架构

Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels)。 传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界)。这意味着,你不可能无缝地在一个工作站端口配置一个外部网关。同样,传统PBX也很难实现对离站(off-site,不在座位上或外出办事)资源的访问,比如前台如果外出办事就什么事

sql2zy的专栏 1200

ADB详细(从下载安装到灵活运用)

ADB(Android Debug Bridge)是一种允许模拟器或已连接的 Android 设备进行通信的命令行工具,它可为各种设备操作提供便利,如安装和调试应用,并提供对 Unix shell(可用来在模拟器或连接的设备上运行各种命令)的访问。可以在Android SDK/platform-tools中找到 adb 工具或下载ADB Kits。

LiuYong_01的博客 10万+

全差分运放+开关电容共模反馈

设计一种CMOS全差分折叠式共源共栅结构的运放,其共模反馈用的是开关电容(SC-CMFB)。 下面分别是主运放、偏置电路和开关电容共模反馈电路图 在设计时碰到的问题: 1、增益怎么测? 2、输出波形不平滑? 3、开关的时序频率设置多高? 解答: 1、先设计好主运放和偏置电路,使得运放的输出接近VDD/2,且主运放的管子都工作在饱和区,然后再参考何乐年的《模拟集成电路设计与仿真》仿增益。 2、增益仿完后,仿真瞬态,看电路的工作情况,于是将偏置电路上接Vb4与主运放断开,接到共模反馈上的Vbia上,然后就

qq_36686804的博客 1万+

Asterisk 代码架构概述

<!-- @font-face {font-family:Wingdings} @font-face {font-family:宋体} @font-face {font-family:宋体} @font-face {font-family:Calibri} @font-face {font-family:"Segoe UI"} @font-face {font-

至虛極,守靜篤 6376

【个人记录】CentOS7升级glibc至2.28

由于CentOS7系统已经停止支持, 虽然大部分业务已经迁移至OpenEuler,但仍然有部分业务系统跑在CentOS7上。在尝试部署新业务环境时经常会提示如下错误(以code-server运行需要的node 20为例)node -v为了保障业务可正常运行,通常采用Docker继承好的node环境进行部署,但部分场景还是需要宿主机使用新版glibc版本。本文记录本人一次成功升级glibc(2.17=>2.28)的步骤。

喵呜 3885

开源软件架构 - Asterisk

Asterisk 是基于 GPLv2协议发布的一款开源电信应用平台。简单地说,这是一个服务端程 序,用于处理电话的拨出、接入以及自定义流程。 原文地址:http://aosabook.org/en/asterisk.html,作者:Russell Bryant 此项目由 Mark Spencer 于1999年创始。当时 Mark 有一个自己的公司,叫Linux Support

fishmai的专栏 2428

从HAL库SPI状态机机制剖析:为什么你的DMA发送会卡在BUSY状态?

本文深入剖析了STM32 HAL库中SPI状态机机制导致DMA发送卡在BUSY状态的常见问题。通过分析状态机设计原理,揭示了混合使用阻塞方式和DMA方式时状态切换冲突的根源,并提供了三种实战解决方案:正确配置SPI中断、使用HAL_SPI_Abort()函数以及手动管理状态机,帮助开发者实现稳定流畅的SPI DMA通信。

bush的博客 268

【异常】claude : 无法将“claude”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径

如果claude方式1(临时):使用完整路径运行,比如:# Windows 批处理脚本示例 C:\你的脚本目录\claude . bat # PowerShell 脚本示例 C:\你的脚本目录\claude . ps1方式2(永久):将脚本所在文件夹添加到系统 PATH 环境变量(参考场景1的环境变量配置步骤),之后即可直接输入claude运行。错误核心原因:系统 PATH 环境变量中找不到claude对应的可执行文件/脚本。

奶爸的编程之路,也就一周冷个三天 3674

深入理解Asterisk体系架构

Asterisk和其他传统的PBX完全不同,因为Asterisk的拨号计划以同样的方式处理所有的入局信道(incoming channels)。 传统的PBX在逻辑上区分工作站信道(连接电话机)和电话局信道(连接到外部世界)。这意味着,你不可能无缝地在一个工作站端口配置一个外部网关。同样,传统PBX也很难实现对离站(off-site,不在座位上或外出办事)资源的访问,比如前台如果外出办事就什么事

宽简厚重—博约 8046

12、多端神经形态晶体管:原理、应用与算法探索

本文综述了多端神经形态晶体管的原理、应用与算法探索。从神经元MOS晶体管的发展到基于电解质栅极晶体管(EGT)的新型器件设计,系统阐述了其在低电压、多功能逻辑运算和突触行为模拟方面的优势。重点介绍了其在化学生物传感器(如多巴胺和pH检测)中的高灵敏度应用,以及在树突整合、时空总和、动态逻辑和神经元算术等树突算法中的实现。文章还总结了该类器件在神经形态计算、智能传感等领域的广阔前景,并分析了当前面临的材料工艺、理论建模与系统集成挑战,展望了未来发展方向。

delta的博客 144

开源应用架构之asterisk

作者:Russell Bryant 翻译:jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说,Asterisk是一个服务器应用,能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spencer于1999年开创的。Mark当时有一个名为Linux技术支持服务公司,公司需要一套电话系统来开展业务。由于

学习是为了探索这个世界的本质 2423

零基础学写《扫雷》游戏(Qt扫雷源码)

扫雷游戏是在windows系统中自带的游戏,他的游戏玩法其实很简单,20世纪初期电脑上没有啥游戏可以玩,所以扫雷游戏也算是当时是最常火爆的一个电脑游戏。以下文章详细介绍扫雷游戏的实现。实现语言为C++。

啊渊的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

开源项目架构分析之 -- Asterisk

http://aosabook.org/en/asterisk.html Asterisk1 is an open source telephony applications platform distributed under the GPLv2. In short, it is a server application for making, receiving, and per

影音视频技术 1345

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

FreeSWITCH与Asterisk架构解析:从线程模型到高并发设计

本文深入解析了FreeSWITCH与Asterisk两大开源通信平台的核心架构差异。重点对比了其线程模型:Asterisk采用集中式全能线程,而FreeSWITCH采用“一个呼叫一个线程”的分布式设计,这从根本上决定了后者在高并发场景下的卓越稳定性和扩展性。文章还探讨了模块化设计、资源配置及集群能力,为构建高性能、高可用的语音通信系统提供了关键选型依据。

2w3e4r5t6y的博客 976

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

开源软件架构总结之——Asterisk(DSL、组件、多线程)

Asterisk 1是基于GPLv2协议发布的一款开源电话应用平台。简单地说,这是一个服务端程序,用于处理电话的拨出、接入以及自定义流程。 一个人使用电话A呼叫另一个使用电话B的人。在此场景下,连接到Asterisk系统的有两个电话终端,因而分配了两个通道(如图1.2)。 图1.2 两个通道表示两条呼叫线路 媒体传输使用的是P2P方式! 图1.3 专用桥接实例 图1...

djph26741的博客 259
上一篇: 从HTTP 到 websocket
下一篇: Asterisk WEBRTC
zljjava
博客等级 码龄15年 155粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值