OriginateAction变量加入问题

问题描述 投票:0回答:2

我正在尝试使用C#AsterNET OriginateAction方法来拨出Asterisk AMI的呼叫。通话工作正常,但是我在设置此操作的变量时遇到问题。我将2个变量设置如下:

oc.SetVariables( new Dictionary<string, string>(){ { "SIPADD", "10001"}, { "VQWAITER", "10002" }});

但是当我尝试在Dialplan中获取变量“ SIPADD”之一时。我立即以联合形式将两个可变项作为“ Local / 10002 | _VQWAITER = 10001”

拨号计划:

exten => 999,1,NoOp((Caller ID IS: ${CALLERID(num)}))
 same =>      n,Answer()
 same =>      n,NoOp("Callback Agent Address: "${SIPADD})
 same =>      n,Dial(${SIPADD})
 same =>      n,Hangup()

关注于以上拨号方案的CLI跟踪上方:

enter image description here

[谁能指导我这里的问题吗?我想分别获得这些变量,而不是像这样加入。

目前,作为一项工作,我正在通过在Dialplan中执行以下setps拆分得到的连接字符串:

 same =>      n,NoOp("Callback Agent Address: "${SIPADD})
 same =>      n,Set(localSIPAdd=${CUT(SIPADD,|,1)})
 same =>      n,Set(waiter=${CUT(SIPADD,|,2)})
 same =>      n,NoOp("localSIP: "${localSIPAdd})
 same =>      n,NoOp("waiter: "${waiter})
 same =>      n,Set(CALLERID(num)=waiter)

以上更改的CLI:

enter image description here

variables asterisk asteriskami asternet
2个回答
0
投票

可能您正在使用Asterisk-Java库。根据其文档,有两种方法可用于变量。 SetVariableSetVariables。这两个变量都接受不同类型的输入参数,即分别为String和Map。

我不是Java开发人员,但是我认为像下面这样更新代码可以解决您的问题。

HashMap<String, String> map = new HashMap<String, String>();

map.put("SIPADD","10002");
map.put("VQWAITER","10003");

oc.SetVariables(map);

0
投票

这是使用比v13更高的Asterisk版本在AsterNET v1.3.0中的一个小错误。有关详细信息,请参见AsterNET issue #220

当前解决方法是在连接到Asterisk服务器之后手动设置连接上的VAR_DELIMITER属性。

VAR_DELIMITER
© www.soinside.com 2019 - 2024. All rights reserved.