0

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

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

但是当我尝试在拨号计划中获取变量“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 跟踪:

在此处输入图像描述

谁能指导我这里有什么问题?我想单独获取这些变量,而不是像这样加入。

现在作为一项工作,我正在拆分通过在拨号计划中执行以下设置获得的连接字符串:

 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:

在此处输入图像描述

4

2 回答 2

0

当使用比 v13 更新的 Asterisk 版本时,这是 AsterNET v1.3.0 中的一个小错误。有关详细信息,请参阅AsterNET 问题 #220

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

managerConnection.VAR_DELIMITER = new char[] { ',' };
于 2020-01-28T14:40:24.123 回答
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);
于 2020-01-21T06:54:50.780 回答