ChannelRedirect: Redirect an existing channel to the dialplan. (1.4)
功能:
让指定的通道重定向拨号方案中指定的目标位置,在1.4版本时被引进的,同时也可以代接(偷取)一个正在振玲的来电.
描述:
ChannelRedirect(channel|[[context|]extension|]priority)
发送指定通道到指定的拨号方案中的目标位置(Sends the specified channel to the specified extension priority)
下面有一个示例:
这里面我将试图描述如果从二方通话创建多方通话。(Here I will attempt to describe how to make n-way calls from 2-way calls.)
实现此功能要用到二个命令函数:MeetMe和ChannelRedirect,你需要 Dahdi/Zaptel timing 驱动让MeetMe工作。(All work done by two applications: MeetMe and ChannelRedirect. You need the Dahdi/Zaptel timing driver to have MeetMe working. )
问题: For Asterisk 1.4 do wee need to replace 'ChannelRedirect' as used below with 'ManagerRedirect' as in bug/patch 6508?
这里有一个示例拨号方案脚本:
[default]
exten => _XXX,1,Set(DYNAMIC_FEATURES=nway-start)
exten => _XXX,n,Dial(SIP/${EXTEN})
[dynamic-nway]
exten => _XXX,1,Answer
exten => _XXX,n,Set(CONFNO=${EXTEN})
exten => _XXX,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite)
exten => _XXX,n,Set(DYNAMIC_FEATURES=)
exten => _XXX,n,MeetMe(${CONFNO},pdMX)
exten => _XXX,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(Local/${DEST}@dynamic-nway-dest,,g)
exten => 0,n,Set(DYNAMIC_FEATURES=)
exten => 0,n,Goto(dynamic-nway,${CONFNO},1)
exten => i,1,Goto(dynamic-nway,${CONFNO},1)
[dynamic-nway-dest]
exten => _XXX,1,Dial(SIP/${EXTEN})
[macro-nway-start]
exten => s,1,Set(CONFNO=${FindFreeConf()})
exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
exten => s,n,Read(DEST,dial,,i)
exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv)
exten => s,n,Dial(Local/${DEST}@dynamic-nway-dest,,g)
exten => s,n,Set(DYNAMIC_FEATURES=)
exten => s,n,Goto(dynamic-nway,${CONFNO},1)
[macro-nway-ok]
exten => s,1,ChannelRedirect(${BRIDGEPEER},dynamic-nway,${CONFNO},1)
[macro-nway-notok]
exten => s,1,SoftHangup(${BRIDGEPEER})
Note, You need to provide FindFreeConf() function (or any other way) to get free Conference number.
要使得这些生效要在features.conf做如下工作:
首先
[applicationmap]
nway-start => *0,caller,Macro,nway-start
nway-inv => **,caller,Macro,nway-ok
nway-noinv => *#,caller,Macro,nway-notok
再次在执行前必须对通道变量DYNAMIC_FEATURES进行赋值。
当你和别人通话的时候,按*0 (执行宏 nway-start)。 被叫马上被传递到一个空闲的会议室,而你将听到拨号音,等待你输入你要邀请的电话号码。当被邀请方接通后,你在和这个第三方通话的过程中,可以按 ** (在features.conf可以定义)加入会议,按 *# 挂掉他然后返回会议。
在示例所遇问题及解决方法:
1.Function FindFreeConf not registered