由于工作上的VOIP项目需要,最近亲密接触了一下asterisk工程代码。关于asterisk在VOIP上的伟大地位和作用,俺就不絮叨了,请看前作:Astersik+Radius简易攻略

    国内对于asterisk的资料介绍,更别说对asterisk的源码分析了,因此我把平时记的一些资料与大家分享一下,希望对同行能有帮助。第一篇就翻译一下Asterisk里的通道的概念,英文原文见于:http://www.asterisk.org/doxygen/1.4/

什么是asterisk通道?

Asterisk通道是指通过asterisk建立起来的一路通话。这类通话都包含一个incoming连接和一个outbound连接。每个电话都是通过一种通道驱动程序建立起来的,比如SIP,ZAP,IAX2等等。每一类的通道驱动,都拥有自己私有的通道数据结构,这些私有的结构从属于一个通用的Asterisk通道数据结构中,具体定义在channel.h和channel.c中。

呼叫情景(call scenario)

下面为当一个呼入电话抵达asterisk时的情景:

  1. 呼叫的抵达被某一类通道驱动的接口感知,比如SIP socket;
  2. 通道驱动为其创建一个PBX通道并且为这个通道开启一个PBX线程;
  3. 执行拨号方案;
  4. 在这个时候至少发生下面其中之一:

a.Asterisk应答这个呼叫并且播放媒体数据或者读取媒体数据,比如IVR业务

b.拨号方案促使asterisk通过dial应用(dial application)创建一个对外呼叫,比如呼叫固定电话或移动电话时将连接落地网关。(具体见app_dial.c)

桥接通道(Bridging channels)

下面为当asterisk往外拨号时的情景:

  1. Dial创建一个outbound PBX通道并且要求对应的通道驱动创建一个呼叫
  2. 当电话被接通,asterisk桥接媒体流,使得第一个通道的呼叫者能够与第二路通道的被呼叫者进行通话
  3. 有些情况下,呼入和呼出的通道使用相同的技术方案和兼容的编解码技术,这时候就会使用本地桥接。这种本地桥接方案中,通道驱动在内部直接传送到来的语音数据到对外的流中,而不通过PBX发送语音帧。
  4. 如果是SIP协议,将会有一个"external native bridge",asterisk重定向端点,使得语音直接在呼叫者和被呼叫者之间传送。信号被保存下来以方便提供正确的CDR记录。

植入通道(Masquerading channels)

有些情形下,一个通道可能植入到另一个通道中。这种情景在呼叫转移中比较常见,新的通道植入并且接管桥接的工作,旧的通道就成了僵通道而被挂起。

转载于:https://www.cnblogs.com/einyboy/archive/2012/10/23/2735252.html

深入浅出asterisk(一):asterisk通道(Channels)相关推荐

  1. html asterisk 电话,Asterisk 常见问题

    Asterisk 常见问题 Asterisk是否支持SIP的PRACK?IMS 等线路需要SIP INVITE 中支持Supported: 100rel"或"Require: 10 ...

  2. 生信自动化流程搭建 05 | 通道 Channels

    Nextflow基于数据流编程模型,其中流程通过通道进行通信. 通道具有两个主要属性: 发送消息是一个异步操作,无需等待接收过程即可立即完成. 接收数据是一项阻止操作,它将停止接收过程,直到消息到达为 ...

  3. Asterisk学习进阶

    Asterisk学习进阶 介绍篇 抛开所有概念,首先从单词学起.估计很多人和我一样没有明白这个词是什么意思,或许猜测他还可能是一个组合词.其实它就是"*",作为搞程序的我们看到这个 ...

  4. Asterisk内核 拾遗

    转载地址:http://linmuyi9999.blog.163.com/blog/static/6681608200928113330936/ Asterisk是一个开源的pbx系统,在公开的资料中 ...

  5. Asterisk AGI 详解

    Introduction The AGI facility allows you to launch scripts, written in just about any language, from ...

  6. Asterisk常用命令

    Asterisk 常用命令 在控制台外执行 1.查看进程 ps() 如:ps a 显示所有进程 ps -a 显示同一终端下的所有程序 ps -A 显示所有进程 ps -A | grep +通道名    ...

  7. Asterisk REST Interface(ARI)

    The Evolution of Asterisk APIs(asterisk API的演变) 当Asterisk于1999首次创建时,其设计主要在于成为一个独立的Private Branch eXc ...

  8. linux编译linphone,Linux VOIP测试环境,Asterisk/linphone 的搭建

    虽然在VOIP的行业做了很多年,以前以嵌入式方向为主,而服务器的测试主要用WINDOWS下一些商用的SIP Proxy,如OnDo SIP Server.SIP终端的对端通常用 eyeBeam,网络抓 ...

  9. 基于Asterisk的VoIP开发指南(2)——Asterisk AGI程序编写指南

    5. Asterisk AGI程序编写指南    5.1概述 很多时候,我们需要在拨号方案中做某些业务逻辑的判断或者外部数据库的查询,根据具体地需要,有几种做法: 1.使用Asterisk的通道变量. ...

最新文章

  1. cmd指令大全指令_Linux 超全实用指令大全 | CSDN 博文精选
  2. 并发--基本的线程机制
  3. 移动端HTML5长按图片会选中页面中某个位置的文字
  4. Leetcode 分类 题解 收集
  5. 51nod 1623 完美消除(数位DP)
  6. 历史上最有影响力的10款开源项目
  7. 我的LINUX学习之路之二十一之web服务器简单搭建
  8. 性能测试诊断分析与优化培训资料打包下载
  9. Linux中buff-cache占用过高解决方案
  10. MySQL终端(Terminal)命令基本操作(转)
  11. Android 加壳App Demo
  12. python输入一个整数_Python中实现输入一个整数的案例
  13. java毕业设计飞机订票管理系统Mybatis+系统+数据库+调试部署
  14. SQLite数据库中的.db-shm文件和.db-wal文件
  15. Android 11 正式发布:更方便的操作和更安全的隐私
  16. 东北大学秦皇岛分校计算机类排名,东北大学秦皇岛分校全国排名,2021东北大学秦皇岛分校排名榜...
  17. echarts的常用案例
  18. 评级更新 | Rchain面临财务危机 铂链开除前CEO宋欣
  19. scratch案例——深水炸弹
  20. 判断键盘输入的数是几位数且是否是回文数

热门文章

  1. 小爱同学app安卓版_小爱课程表3.0全新升级 课表倒入更简单所有手机能用
  2. 斜挎包长度到哪里合适_斜挎包带子多长合适 看个人身高
  3. Python笔记-UiSelector文本定位方式(3种定位并点击)
  4. Qt文档阅读笔记-QLibrary基本概念及实例
  5. 计算机软考培训网校,计算机软考培训中心
  6. java 分享巧克力_[leetcode 双周赛 11] 1231 分享巧克力
  7. ipad怎么连接电脑_苹果连接电脑没反应怎么办
  8. mac 启动mysql 报错,mac 解决 mysql 启动报错
  9. 操作系统之进程管理:2、进程的状态以及状态转化
  10. (数据库系统概论|王珊)第六章关系数据理论-第一节:为什么要研究关系数据理论