Проблема присоединения к переменным OriginateAction - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь использовать метод C# Aste rNET OriginateAction для набора вызовов с помощью Asterisk AMI. Вызовы работают нормально, но у меня возникла проблема с установкой переменных в этом действии. Я установил 2 переменные следующим образом:

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

, но когда я пытаюсь получить одну из переменных "SIPADD" в диалплане. Я получаю оба vairables одновременно в объединенной форме как "Local / 10002 | _VQWAITER = 10001"

Dialplan:

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

Может кто-нибудь подсказать мне, в чем здесь проблема? Я хочу получить эти переменные по отдельности, а не объединить, как это.

На данный момент, как работа arround, я разделяю объединенную строку, которую я получаю, выполняя следующие setps в dialplan:

 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

Ответы [ 2 ]

0 голосов
/ 28 января 2020

Это небольшая ошибка в Aste rNET v1.3.0 при использовании версий Asterisk, более новых, чем v13. Подробнее см. Aste rNET выпуск # 220 .

Текущий способ - вручную установить свойство VAR_DELIMITER в соединении после подключения к серверу Asterisk.

managerConnection.VAR_DELIMITER = new char[] { ',' };
0 голосов
/ 21 января 2020

Возможно, вы используете библиотеку Asterisk- 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);
...