我正在尝试使用C# AsterNET OriginateAction方法拨出带有星号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跟踪:

有没有人能告诉我这里有什么问题?我想把这些变量分开,而不是像这样连接。
现在,作为一种变通方法,我通过在dialplan中执行以下setp来拆分连接的字符串:
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:

发布于 2020-01-21 14:54:51
您可能正在使用Java库。根据它的文档,有两种方法可用于变量。SetVariable和SetVariables。这两个变量接受不同类型的输入参数,即分别为String和Map。
我不是Java开发人员,但我认为像下面这样更新您的代码可能会解决您的问题。
HashMap<String, String> map = new HashMap<String, String>();
map.put("SIPADD","10002");
map.put("VQWAITER","10003");
oc.SetVariables(map);发布于 2020-01-28 22:40:24
当使用比v13更新的Asterisk版本时,这是AsterNET v1.3.0中的一个小错误。详情请参见AsterNET issue #220。
当前的解决方法是在连接到Asterisk服务器后手动设置连接的VAR_DELIMITER属性。
managerConnection.VAR_DELIMITER = new char[] { ',' };https://stackoverflow.com/questions/59825353
复制相似问题