使用gosub参数在Asterisk 13中进行队列命令?

时间:2016-08-10 08:06:46

标签: asterisk

我相信Asterisk 13 Queue命令可以指定gosub,这样一旦双方连接,它就会在被叫方的通道(队列成员)上进行gosub。 但是如何将args传递给gosub?

我试过了:

exten => _X.,n,Queue(queue1,,,180,,,setstartcall,s,1(arg_callstarted,${UNIQUEID}))

但是它不起作用,我没有在我的子语境中得到论据。

[setstartcall]
exten => s,1,Set(DB(${ARG1}/${ARG2})=${EPOCH})
exten => s,n,Return()

2 个答案:

答案 0 :(得分:0)

您应该使用父通道变量设置。

exten => _X.,n,Set(__ARG_1=${UNIQUEID}); double underline mean set this variable to same for any child channel created.

把它放在队列之前

答案 1 :(得分:0)

为了扩展arheops的答案,您可以使用变量继承将变量传递到堆栈中,这在此处列出,https://wiki.asterisk.org/wiki/display/AST/Variable+Inheritance

正如他们所解释的那样,您可以设置一个前面带有两个下划线的变量,以便它可以被创建的任何新通道继承,这意味着它可以设置为__FOO,然后稍后引用为${FOO}

因此,要结合您的示例和他们的答案:

[incoming] ; Using 'incoming' as the parent context
exten => _X.,n,Set(__UNIQ=${UNIQUEID})
exten => _X.,n,Queue(queue1,,,180,,,setstartcall))

[setstartcall]
exten => s,1,Set(DB(arg_callstarted/${UNIQ})=${EPOCH})
exten => s,n,Return()

希望有所帮助。