`

Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现

 
阅读更多

 

asterisk在正常通话过程中执行拨号计划中动作是通过feature.conf中的[applicationmap ]下定义的,举例如下:

nway-start => *0,callee,Macro,nway-start 
nway-zhustart => *0,caller,Macro,nway-zhustart

nway-inv => *7,caller,Macro,nway-ok 
nway-noinv => *9,self,Macro,nway-notok

zhugoto-meeting => *5,caller,Macro,zhugoto-meeting 
goto-meeting => *5,callee,Macro,goto-meeting

caller和callee 的区别参考:http://blog.csdn.net/radkitty/archive/2009/12/29/5102097.aspx

有些人定义了applicationmap 按键后不能引发制定动作 这是由于未设置DYNAMIC_FEATURES引起的

可以使用DYNAMIC_FEATURES来决定哪些动作可以被执行。

可以在globals_custom.conf中定义DYNAMIC_FEATURES全局变量来使用:

DYNAMIC_FEATURES=nway-start#goto-meeting

也可在拨号计划中通过

exten => s,n,Set(DYNAMIC_FEATURES=nway-zhustart#zhugoto-meeting)

来设置

电话转会议的实现方法请参考我前面的笔记:http://blog.csdn.net/seven407/archive/2010/05/14/5591078.aspx

并附下我最新的实现代码:

extensions.conf 末尾添加:

[default] 
;exten => _XXXX,1,Set(DYNAMIC_FEATURES=nway-start#nway-zhustart) 
exten => _XXXX,n,Dial(SIP/${EXTEN})

[dynamic-nway] 
exten => _XXXXXXXX,1,Answer 
exten => _XXXXXXXX,n,Set(CONFNO=${EXTEN}) 
exten => _XXXXXXXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) 
exten => _XXXXXXXX,n,Set(DYNAMIC_FEATURES=) 
exten => _XXXXXXXX,n,MeetMe(${CONFNO},1pdMXr) 
exten => _XXXXXXXX,n,Hangup()

[dynamic-nway-invite] 
exten => 0,1,Read(DEST,dial,,i) 
exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) 
;exten => 0,n,Dial(SIP/${DEST},,g) 
exten => 0,n,Dial(Local/${DEST}@from-internal,,g
exten => 0,n,Set(DYNAMIC_FEATURES=) 
exten => 0,n,Gosub(dynamic-nway,${CONFNO},1) 
exten => i,1,Goto(dynamic-nway,${CONFNO},1)


[dynamic-nway-dest] 
exten => _XXXX,1,Dial(SIP/${EXTEN},,g)

[my-meet-dial] 
exten => _XXXXXXXX,1,Read(DEST,dial,,i) 
exten => _XXXXXXXX,n,Set(CONFNO=${EXTEN}) 
exten => _XXXXXXXX,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) 
;exten => _XXXXXXXX,n,Dial(SIP/${DEST},,g) 
exten => _XXXXXXXX,n,Dial(Local/${DEST}@from-internal,,g
exten => _XXXXXXXX,n,Set(DYNAMIC_FEATURES=)

exten => _XXXXXXXX,n,Answer 
exten => _XXXXXXXX,n,Set(CONFNO=${EXTEN}) 
exten => _XXXXXXXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) 
exten => _XXXXXXXX,n,Set(DYNAMIC_FEATURES=) 
exten => _XXXXXXXX,n,MeetMe(${CONFNO},1pdMXr) 
exten => _XXXXXXXX,n,Hangup()

[macro-nway-start] 
;exten => s,n, SetGlobalVar(MEETMENUM=$[${MEETMENUM} + 1]) 
;exten => s,1,Set(CONFNO=$[10000 + ${AMPUSER}]);XX 
;exten => s,1,Set(CONFNO=$[10000 + ${CALLERID(num)}]);XX 
;exten => s,1,Set(CONFNO=10000) 
;exten => s,1,Set(CONFNO=$[10000 + ${EXTEN}]) 
exten => s,1,Set(CONFNO=${STRFTIME(${EPOCH},,%d%H%M%S)}) 
exten => s,n,ChannelRedirect(${BRIDGEPEER},my-meet-dial,${CONFNO},1) 
exten => s,n,Hangup() 
exten => s,n,Gosub(dynamic-nway,${CONFNO},1)

[macro-nway-zhustart] 
exten => s,1,Set(CONFNO=${STRFTIME(${EPOCH},,%d%H%M%S)}) 
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1) 
exten => s,n,Hangup() 
exten => s,n,Read(DEST,dial,,i) 
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) 
;exten => s,n,Dial(SIP/${DEST},,g) 
exten => s,n,Dial(Local/${DEST}@from-internal,,g
exten => s,n,Set(DYNAMIC_FEATURES=) 
exten => s,n,Gosub(dynamic-nway,${CONFNO},1)


[macro-nway-ok] 
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)

[macro-nway-notok] 
exten => s,1,SoftHangup(${BRIDGEPEER})

[macro-zhugoto-meeting] 
exten => s,1,Set(CONFNO=${STRFTIME(${EPOCH},,%d%H%M%S)}) 
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1) 
exten => s,n,Hangup() 
exten => s,n,Gosub(dynamic-nway,${CONFNO},1)

[macro-goto-meeting] 
exten => s,1,Set(CONFNO=${STRFTIME(${EPOCH},,%d%H%M%S)}) 
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1) 
exten => s,n,Hangup() 
exten => s,n,Gosub(dynamic-nway,${CONFNO},1)

并修改

[macro-dial] 
exten => s,1,GotoIf($["${MOHCLASS}" = ""]?dial)

[macro-dial] 
exten => s,1,Set(DYNAMIC_FEATURES=nway-zhustart#zhugoto-meeting) 
exten => s,n,GotoIf($["${MOHCLASS}" = ""]?dial)

globals_custom.conf中添加:

DYNAMIC_FEATURES=nway-start#goto-meeting

features_applicationmap_custom.conf添加:

nway-start => *0,callee,Macro,nway-start 
nway-zhustart => *0,caller,Macro,nway-zhustart

nway-inv => *7,caller,Macro,nway-ok 
nway-noinv => *9,self,Macro,nway-notok

zhugoto-meeting => *5,caller,Macro,zhugoto-meeting 
goto-meeting => *5,callee,Macro,goto-meeting 

分享到:
评论

相关推荐

    asterisk 视频通讯实现方法

    在本文中,我们将深入探讨如何利用Asterisk实现视频通讯功能。实现Asterisk视频通讯的关键在于配置sip.conf文件以及启用相应的视频编码支持。 首先,让我们打开/etc/asterisk/sip.conf文件,这是Asterisk配置SIP...

    asterisk info 录音实现方案

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

    通过asterisk-java操作asterisk

    这个库使得开发者可以利用Java语言来控制和编程Asterisk PBX(Private Branch eXchange),执行诸如创建、管理通话、处理AMI(Asterisk Manager Interface)事件等功能。在本篇文章中,我们将深入探讨如何使用...

    asterisk 学习日志

    AppKonference是Asterisk中的电话会议模块,允许多个参与者进行通话。安装和配置该模块需要理解`app_meetme.c`源码,解决可能出现的问题,如“Unable to open DAHDI pseudo device”。 9. **Asterisk基础**: ...

    Asterisk 中文语音包

    Asterisk是一款开源的IP电话系统,它允许用户创建自己的通信平台,支持VoIP(Voice over IP)服务,包括电话会议、语音邮件和IVR(Interactive Voice Response)等。中文语音包是为Asterisk系统设计的一个关键组件,...

    Asterisk.NET 1.6.3 控制Asterisk

    总结来说,Asterisk.NET 1.6.3 提供了.NET平台下控制Asterisk PBX的强大工具,通过AMI和FastAGI接口实现了丰富的电话系统功能,如通话控制、IVR和事件监听。开发者可以利用这个库轻松地构建自己的VoIP解决方案,提高...

    Asterisk 1.4 官方使用手册

    在通话处理方面,手册将涵盖如何编写Dialplan脚本,实现复杂的通话流程,如自动话务员、电话会议、录音和转接等功能。此外,Asterisk的语音邮件系统和实时数据库的使用也会有详尽的说明。 除此之外,手册还将讨论...

    openwrt 虚拟机下使用asterisk实现局域网两个账户的VoIP语音通话

    非常详细描述如何使用openwrt虚拟机搭建基于asterisk的Voip电话,实现了局域网内两个账户之间的互通,附有配置文件以及需要的软件

    Asterisk 中文文档说明

    Asterisk是一个PBX(Private Branch eXchange),它能够管理电话线路,路由呼叫,并提供各种电话服务,如语音邮件、会议呼叫和自动话务员。通过使用SIP协议,Asterisk可以与多种软硬件电话终端进行交互,实现VoIP...

    Asterisk权威指南 第3版 中文

    6. **会议和多路通话**:了解如何创建电话会议,以及如何管理多路通话,包括混音和静音控制。 7. **语音邮件和消息传递**:学习设置和管理语音邮件系统,包括用户接口、邮件传递和通知。 8. **实时数据库和扩展**...

    Asterisk 简介 Asterisk 架构 Asterisk程序框图

    Asterisk是一款开源的电话交换机软件,它允许用户创建高度自定义的通信系统,包括VoIP(Voice over IP)电话、会议桥、自动呼叫分配(ACD)以及许多其他电信功能。Asterisk的核心设计理念是灵活性和可扩展性,这使得...

    Asterisk,电话未来之路2nd 中文版

    这涉及到VoIP(Voice over Internet Protocol)技术,如SIP(Session Initiation Protocol)协议,以及如何在Asterisk中配置电话线路和设备,如模拟电话线、数字E1/T1接口或VoIP网络。 其次,书中会讲解Asterisk的...

    Asterisk 客户端.rar

    在压缩包里,可能包含关于如何配置和使用这些客户端的详细指南,包括设置连接、拨号计划、通话记录等功能的实现。 2. **Asterisk Manager API (AMI)**:AMI是Asterisk的核心管理接口,它提供了一种通过网络控制...

    asterisk16版本安装包

    Asterisk是一款开源的IP电话系统,用于构建VoIP(Voice over Internet Protocol)通信平台。在本场景中,我们讨论的...不过,由于Asterisk具有高度灵活性和复杂性,因此在使用过程中需要有一定的Linux和通信协议基础。

    Asterisk Manager API(AMI) 中文文档

    ### Asterisk Manager Interface (AMI) 中文文档概览 #### 一、引言 Asterisk Manager Interface (AMI) 是一款强大...了解并掌握AMI的工作原理和使用方法对于任何从事Asterisk开发和管理工作的人来说都是非常重要的。

    Asterisk 之数据库配置方案 asterisk数据库

    Asterisk 是一个开源的 PBX(Private Branch Exchange)系统,可以实现电话交换和语音网关的功能。在传统的 Asterisk 配置中,配置文件都是存储在文件系统中的,但是随着系统的复杂度和规模的增加,配置文件的管理和...

    Asterisk(voip service)

    此外,由于"Asterisk"这个压缩包文件名暗示,你将可能接触到实际的安装、配置和维护过程。这可能包括安装Asterisk软件、配置网络设置、安装必要的依赖以及调试问题。 总的来说,Asterisk是一个功能丰富的开源平台,...

    Asterisk权威指南中文

    Asterisk权威指南中文(第3版) Asterisk权威指南(第3版)第15章自动话务员 Asterisk权威指南(第3版)第02章Asterisk体系结构 Asterisk权威指南(第3版)第05章用户设备配置 Asterisk权威指南(第3版)第06章Dialplan基础 ...

    Asterisk AMI 接口代码

    这个接口允许开发者通过编程方式与Asterisk进行交互,执行诸如控制呼叫、获取状态、监听通话等多种操作。在给定的压缩包文件中,我们看到包含了一个名为"asterisk-java"的子文件,这可能是一个Java库,专门用于与...

    Asterisk客户端

    Asterisk是世界上最流行的开源PBX(Private Branch eXchange)系统,它支持VoIP(Voice over Internet Protocol)电话服务,能够处理语音通话、视频通话、即时消息以及会议等多种通信方式。 **Asterisk核心功能** ...

Global site tag (gtag.js) - Google Analytics