`

Asterisk如何定义通道

 
阅读更多

 通过Asterisk接通的电话包含一个呼入连接和呼出连接,每个通道都是来自于通过某种类型的通道驱动生成,而该通道的类型在技术上
 可以支持SIP,DAHDI,IAX等。每种技术上支持的通道驱动都有一个专有通道,并且拥有私有的数据存储结构,技术上独立的,不同类型的
 通道驱动之间不存在相互依赖的关系,按照Asterisk通道编写接口标准,你可以自己编写某种类型的通道,例如GSM通道。在Asterisk中,所有
 的专用通道结构又属于Asterisk的上层通用通道或称之为泛型通道结构,此泛型通道结构被定义和处理在channel.c代码中。
 Asterisk呼叫的场景:
 当有呼入到达Asterisk时,Asterisk要完成以下动作:
 1)根据呼叫到达对应的通道驱动接口,Asterisk为新的呼入通道分配存储空间。
 2)呼入到达通道驱动创建上层pbx通道(所有通道驱动的上层通道,前面称的泛型通道),并且在pbx通道上调用ast_pbx_start()启动PBX线程。
 3)利用PBX线程执行拨号方案中的命令。
 4)执行拨号方案后会分以下两种情况:
    1-1 呼入通道被Asterisk应答,Asterisk播放指定文件的语音或接收呼入语音通道中
    的语音,包括DTMF.
    1-2 通过拨号方案促使Asterisk调用app_dial.c创建外呼通道驱动发起外呼。
 Asterisk如何桥接通道:
 当Asterisk发起外呼时:
 1)通过拨号方案中的Dial应用创建外呼PBX通道,通过PBX通道根据拨号方案中对应的注册外呼通道类型,调用ast_call()发起对应的通道驱动发起外呼。
 2)当被叫应答时,Asterisk开始桥接媒体流,这样使得呼入通道和呼出通道分别对应的电话之间可以互通媒体流,使得双方都可以听到通话语音。
 3)某些情况下,被桥接的两个通道来自相同的类型的通道,例如被桥接的通道都是SIP通道,或都是DAHDI通道,且两个语音通道支持相同的编解码格式,那么此种情况下
    被桥接的语音通道被称之为原生通道。原生通道中的通道驱动直接处理转发进出的媒体流,而不需要将媒体流音频帧发送到PBX,因此种情况下,不需要进行编解码转换。
    其他情况下被桥接的媒体流都得经过pbx,因为通过pbx才能够进行编解码转换。
 4)若呼入和呼入通道驱动皆为SIP通道时,该原生语音通道由称之为“外部原生语音通达”,意思是媒体流直接在呼入者终端对应的设备和呼出终端对应的设备之间传输
    而不经过Asterisk,但是媒体的控制信号任然保留在Asterisk上。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/austingao/archive/2010/07/29/5772911.aspx

分享到:
评论

相关推荐

    asterisk 通道变量

    ### Asterisk 通道变量详解 #### 一、概述 在Asterisk开发中,通道变量是编程中的核心概念之一,用于存储与特定电话呼叫相关的数据。这些变量可以在各种Asterisk应用程序之间传递,并且可以被读取或修改,从而实现...

    asterisk info 录音实现方案

    标签“asterisk record”指的是与Asterisk录音相关的配置和功能,它表明文章将围绕如何在Asterisk中设置和实现录音功能。 在提供的部分内容中,提到了几个关键的配置文件和步骤,这些是实现Asterisk录音功能的核心...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    1. **通道驱动**:负责处理与不同类型的通信设备或网络协议的连接,例如SIP、PSTN(公共交换电话网络)或者模拟电话线。 2. **拨号计划**:定义了如何路由和处理呼叫,可以基于来电号码、时间、目的地等因素进行...

    通过asterisk-java操作asterisk

    5. **使用通道(Channels)和拨号计划(Dialplan)**:Asterisk-java提供了对通道和拨号计划的操作,你可以查询现有的通道状态,修改拨号计划,甚至在运行时动态改变Asterisk的行为。 6. **实时监控**:通过...

    asterisk AGI应用说明

    当AGI脚本执行时,Asterisk会通过标准输入向脚本发送各种信息,如通道状态等。这些信息对于后续处理非常重要。 #### 四、AGI应用函数示例 ##### 4.1 ANSWER 如果当前通道不在应答状态,则通过该命令使通道进入应答...

    asterisk拨号方案的配置

    当 Asterisk 从一个通道上收到一个呼入连接,Asterisk 从 context 定义中查询通道命令。context 根据用户拨打的 extension 定义了不同的命令集。 在 Asterisk 中,你可以定义多个 context,每个context都可以嵌套另...

    Asterisk系统的安装与配置

    Asterisk系统的安装与配置 Asterisk是开源的通讯服务器软件,...Asterisk系统的安装与配置需要按照以上步骤进行,包括安装DAHDI、安装Asterisk、配置SIP通道、配置基本SIP账户、配置电话会议室和配置广播寻呼功能。

    最全Asterisk代码学习笔记

    通道处理实际的通信连接,DialPlan定义了如何处理呼叫,应用程序执行特定的通话操作,而Manager API允许远程管理和控制Asterisk。 3. **内核框架**:Asterisk的内核负责处理基本的通话处理和信号处理,包括SIP、IAX...

    Asterisk权威指南 第3版 中文

    5. **拨号计划**:掌握Asterisk的核心组件——拨号计划(Dialplan),它是定义电话系统行为的关键,包括路由呼叫、处理IVR(Interactive Voice Response)和转接电话等。 6. **会议和多路通话**:了解如何创建电话...

    Asterisk CLI 命令列表

    显示指定上下文的拨号计划,拨号计划定义了Asterisk如何处理电话呼叫,包括路由、转移、会议等。 5. **config show** 查看所有的配置文件及其路径,有助于定位配置问题。 6. **chan show** 列出Asterisk支持的...

    asterisk 教程

    Zapata配置文件中,`[trunkgroups]`和`[channels]`部分定义了线路组和通道的属性,如语言、上下文、信号类型等。 通过这些步骤,你可以成功安装和配置Asterisk,从而建立起一个基本的VoIP服务器。不过,Asterisk的...

    Asterisk 1.4 配置手册

    - **通道配置**:定义不同类型的通道,如本地通道、SIP 通道等。 - **路由配置**:设置不同的路由规则,以决定来电如何被处理。 - **IVR 流程设计**:创建复杂的语音菜单流程,提高用户体验。 - **安全设置**:...

    Asterisk 简单的AGI Demo

    - `AgiChannel channel`:表示当前通道对象,可以用来控制通话状态。 `AgiException` 是一个可能抛出的异常类型,当 AGI 脚本执行过程中出现错误时,可能会抛出此类异常。 ##### 3.3 方法体详解 接下来是对方法体...

    20120412_Asterisk录音记录(SQLServer)1

    在源代码中,定义了一个名为`testSqlServerDatabase`的静态函数,该函数负责连接到SQL Server数据库并插入新的录音记录。函数接收通话的相关信息,如源号码、目的号码、通道、开始时间、结束时间和录音文件名。通过`...

    asterisk权威指南

    此外,书中详细介绍了如何创建和管理电话号码计划,这是Asterisk PBX的关键部分,它定义了如何路由和处理来电。读者将学习到如何编写拨号计划脚本,实现诸如转移、等待、播放音乐等高级功能。同时,还会涉及如何使用...

    Asterisk权威指南(第3版)中文

    4. **拨号计划**:拨号计划是Asterisk的灵魂,它定义了如何处理呼入和呼出呼叫。通过编写Dialplan脚本,你可以创建复杂的路由策略,实现诸如自动话务员、呼叫转移、呼叫队列等功能。 5. **IVR系统**:Asterisk的IVR...

    Asterisk_manager_API(AMI)文档

    然后,客户端需要进行身份验证,这通常涉及在 `/etc/asterisk/manager.conf` 配置文件中定义的用户名和密码。一旦连接建立,数据可以在两个方向上传输,且数据包的第一行决定了其类型:Action 表示客户端发送的命令...

    asterisk手册大全

    5. **extensions.conf.pdf**:这是Asterisk的核心配置文件之一,定义了电话呼叫路由规则。手册会涵盖如何编写拨号计划,实现IVR(Interactive Voice Response),转移呼叫,以及设置分机和目的地。 6. **dial.pdf**...

    Asterisk安装和测试[归类].pdf

    这包括但不限于创建配置文件(如/etc/asterisk/asterisk.conf)、设置拨号计划(例如在extensions.conf中定义电话号码的路由)以及设置认证和用户权限(如在sip.conf中配置SIP用户)。 对于SIP软电话,如eyebeam...

    asterisk-基本语法.docx

    - **全局变量**:在`extensions.conf`文件的开头使用`[globals]`上下文定义,或使用`SetGlobalVar()`应用。 - **通道变量**:与特定呼叫相关的变量,只在当前呼叫期间有效。使用`Set()`应用设置。 - **环境变量**:...

Global site tag (gtag.js) - Google Analytics