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 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现的更多相关文章
- C#怎么在生成解决方案的过程中执行perl脚本(C#早期绑定)
转载 怎么在生成解决方案的过程中执行perl脚本 早期绑定在编译期间识别并检查方法.属性.函数,并在应用程序执行之前执行其他优化.在这个绑定中,编译器已经知道它是什么类型的对象以及它拥有的方法或属性. ...
- 在WebBrowser中执行javascript脚本的几种方法整理(execScript/InvokeScript/NavigateScript) 附完整源码
[实例简介] 涵盖了几种常用的 webBrowser执行javascript的方法,详见示例截图以及代码 [实例截图] [核心代码] execScript方式: 1 2 3 4 5 6 7 8 9 1 ...
- Python中执行系统命令常见的几种方法--转载
Python中执行系统命令常见的几种方法 Python中执行系统命令常见的几种方法有: (1)os.system # 仅仅在一个子终端运行系统命令,而不能获取命令执行后的返回信息 # 如果再命令行下执 ...
- 在Oracle中执行动态SQL的几种方法
转载:在Oracle中执行动态SQL的几种方法 以下为内容留存: 在Oracle中执行动态SQL的几种方法 在一般的sql操作中,sql语句基本上都是固定的,如:SELECT t.empno,t.en ...
- 在 Ruby 中执行 Shell 命令的 6 种方法
我们时常会与操作系统交互或在 Ruby 中执行 Shell 命令.Ruby为我们提供了完成该任务的诸多方法. Exec Kernel#exec 通过执行给定的命令来替换当前进程,例如: $ irb & ...
- python中执行shell命令的几个方法小结(转载)
转载:http://www.jb51.net/article/55327.htm python中执行shell命令的几个方法小结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014- ...
- Kafka实际使用过程中遇到的一些问题及解决方法
Kafka实际使用过程中遇到的一些问题及解决方法: 1.关于Kafka的分区: 开始使用Kafka的时候,没有分区的概念,以为类似于传统的MQ中间件一样,就直接从程序中获取Kafka中的数据. 后来程 ...
- Android中的ListView的绘制过程中执行的方法
首先,系统在绘制ListView之前, 将会先调用getCount方法来获取Item的个数.(如果getCount方法返回0的话,列表时不显示任何内容的) 之后每绘制一个 Item就会调用一次getV ...
- Linux中执行shell脚本的4种方法总结
bash shell 脚本的方法有多种,现在作个小结.假设我们编写好的shell脚本的文件名为hello.sh,文件位置在/data/shell目录中并已有执行权限. 方法一:切换到shell脚本所在 ...
随机推荐
- CheckedListBoxControl 或CheckedListBox 控件中显示水平滚动条 z
public partial class Form1 : Form { public Form1() { InitializeComponent(); DisplayHScroll(); } /// ...
- Aws Dynamodb数据导出到S3
本节将描写叙述怎样从一个或多个DynamoDB的表导出数据到S3的bucket中.在运行导出之前你须要提前创建好S3的bucket. 注意 假设你还没有使用过AWS Data Pipeline,在运行 ...
- 【转】supervisord使用
Supervisor (http://supervisord.org) 是一个用 Python 写的进程管理工具,可以很方便的用来启动.重启.关闭进程(不仅仅是 Python 进程).除了对单个进程的 ...
- windows下redis安装以及简单配置
1.下载redis 下载地址https://github.com/dmajkic/redis/downloads.有32bit和64bit根据自己需要选择就可以了. 2.安装redis 首先使用cmd ...
- AMD单双桥时序简叙
芯片组(双桥)时序 VBAT :RTC电路的供电3V(RTC电路有问题会导致没复位或不跑码等故障) RTCCLK :晶振起振给南桥提供32.768KHz频率(RTC电路有问题会导致没复位或不跑码等故障 ...
- DateTime操作,时间范围,加减
DB里边存的是char类型数组的时间,例如20151111 12171220000,现在需要把这个时间加减5s,组成 一个时间范围 然后再写存储过程. 想到的办法就是把这个时间先转换成DateTime ...
- MyEclipse的html/JSP编辑器添加代码自动提示
http://lusterfly.iteye.com/blog/1872627 在myeclipse 9以前的版本中,我们如果要为html编辑器添加自动的代码提示可以这样操作: windows--&g ...
- iOS移动开发周报-第17期
lhq iOS移动开发周报-第17期 前言 欢迎国内的iOS同行或技术作者向我提交周报线索,线索可以是新闻.教程.开发工具或开源项目,将相关文章的简介和链接在微博上发布并 @唐巧_boy 即可. [摘 ...
- MongoDB 征途
到目前为止,对数据库这块仍然捉襟见肘,仅限于懂一些MySQL,就更谈不上什么优化了. 细想来,还是没有项目驱动造成的...既然跟关系型数据库缘分未到,干脆直接go to NoSQL - MongoDB ...
- MySQL 导入导出命令(转载)
导出数据: mysqldump --databases -u root -p密码 数据库名> /root/guogl/XXX.sql 从sql文件导入数据: mysql -u root -p密码 ...