Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现
2010-07-24 16:40
387 查看
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
Powered by Zoundry Raven
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
Powered by Zoundry Raven
相关文章推荐
- Asterisk 通话过程中执行动作(即applicationmap )的使用方法和电话转会议的实现
- 使用Python的元类实现AOP监控类方法调用过程
- 使用Spring的AOP实现接口方法执行时间记录
- C#中的类SqlCommand对象使用方法ExecuteNonQuery()调用SQLServer存储过程时,存储过程执行成功,数据发生改变,但是返回-1
- 使用eval()方法可以实现动态执行js
- 对基于JUnit和Ant的测试用例执行过程使用Kieker(AspectJ)进行监控的方法
- MySQL存储过程中实现执行动态SQL语句的方法
- 怎样使用安卓变声电话软件实现边变声边通话
- ViewPager的使用方法和实现过程
- 如何使用安卓变声电话软件实现边变声边通话
- SQLiteOpenHelper 用单例模式实现后 onCreate 方法不执行的解决过程
- 详解WordPress中添加和执行动作的函数使用方法
- 实现分析sql语句执行过程和编译时间的方法
- ListView使用自定义适配器的情况下实现适配器的控件点击事件执行Activity界面中的方法
- 简单快速实现使用线程后台执行作业的方法
- 使用 Gmail 拨打国内电话,通话双方均免费的方法
- 使用安卓注解时,Fragment显示过程中各方法执行的先后顺序
- Android使用Intent实现拨打电话的动作
- ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法
- DataGridView中CellClick的使用,选中一行触发的动作可以在这个方法里执行