您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

asterisk课堂-Asterisk技术架构

2016-12-05 09:26:33   作者:james.zhu   来源:CTI论坛   评论:0  点击:


\
  本章节介绍asterisk的技术架构。官方介绍Asterisk是基于模块化的设计理念,用户可以灵活添加或者卸载不需要的相关模块,这样可以进行系统优化。事实上,任何系统都需要核心模块和周边模块,因为核心模块是调用的系统资源,这些模块是不能轻易卸载掉。通常大家说的加载模块或者卸载模块,很多时候是指的一些周边的应用模块。我们主要从以下几个方面来介绍asterisk架构:
\

\

  CORE, Codecs, Functions, Applications, Resources, Formats, Channel drivers
  CORE 模块从字面意思就可以理解,它是Asterisk的核心模块,负责控制管理配置文件,系统时钟,通道管理等等任务。文件格式为so 命名。系统默认配置文件路径可参考官方文档,当然用户也可以修改配置文件来保存系统的so 文件路径。
  Channel drivers 负责和Asterisk通信接口的通信,例如Asterisk语音卡的chan_dahdi.so 文件,此文件控制语音板卡的应用层配置。chan_sip.so 文件,此模块控制旧版本的SIP协议,用户呼入呼出通过SIP配置来和SIP通信设备进行呼叫。目前官方已经使用了PJSIP,所以未来的SIP 通道驱动器就是chan_pjsip.so 文件。还有官方自定义的IAX2 通道,就是chan_iax.so 文件,此文件负责IAX 终端和IAX2 trunk的控制,实现和其他Asterisk系统对接。
  Formats 负责系统对媒体文件写入到系统存储介质中,可以实现对不同语言编码的支持。
  Codecs负责语音编码规则的处理,来控制通话过程中不同语音编码转换和算法的处理。如果呼叫是否存在语音编码不一致的情况,需要Codecs 模块进行转换协商。
  Applications 模块包括了很多拨号规则中的应用模块,主要用在对呼叫通道的处理,例如dial,playback,voicemail的处理。
  Functions 模块负责获得或设置呼叫通道数据等功能,例如读取CDR数据,读取来电显示号码,利用数学函数进行号码变换或者其他计算。
  Resources 模块是一个静态模块,实现对其通道的资源共享,例如对通道播放音乐等待,或者对呼叫通话通道进行录音,这时就需要res 前缀的模块,例如res_musiconhold.so, res_monitor.so。
  CLI,AMI,AGI 接口控制Asterisk呼叫流程。Asterisk CLI 命令是一个管理员命令,用户可以通过SSH,登录到Asterisk系统,执行CLI命令来检查排查系统问题,发起呼叫,设置其他变量。AMI 是一个管理员接口,可以实现对Asterisk 发起呼叫,在呼叫中心开发中可以实现定期发起呼叫,队列检测,坐席检测等等功能。用户可以非常灵活地通过开发语言例如PHP,Java 等等开发第三方程序。AGI是在拨号规则中执行的一种接口控制方式,可以对呼叫进行各种处理。支持各种Linux 脚本语言实现强大灵活的呼叫控制。网上有很多关于AMI/AGI 的开发实例,用户可以下载测试。
  以上仅介绍了Asterisk核心架构中的一些关键技术点,可以帮助用户快速了解Asterisk基本流程和基本概念。更多技术细节我们在未来的章节中会逐一介绍。

相关阅读:

专题