Asterisk ConfBridge совместно использует переменные канала в диалплане
Я пытаюсь создать приложение для входящих вызовов, в котором вызывающий абонент вызывает Asterisk, канал вызывающего абонента идентифицирует добавочный номер для набора из БД, затем Asterisk инициирует вызов к этому добавочному номеру, и этот внутренний вызов создает конференцию, а вызывающий абонент зацикливается на конференции. Использую приложение Originate и ConfBridge. Проблема, с которой я сталкиваюсь, заключается в следующем: 1) переменная, идентифицированная в канале вызывающего абонента, не наследуется каналу вызова (расширения), несмотря на использование префикса __ для моей переменной. 2) Затем я решил использовать Asterisk DB. Используя ${UNIQUEID} в качестве ключа для хранения моих значений и тем самым извлечения переменных в разных каналах. Это оказалось бесполезным, поскольку - при использовании приложения Originate для моего второго канала, UNIQUEID также меняется.
Ниже приведена упрощенная версия моего приложения (подход 1):
[local]
exten = main,1,Answer()
exten = main,n,Set(__operator=201005)
exten = main,n,GoSub(operator,logintoconf,1)
exten = main,n,GoSub(caller,logintoconf,1)
[caller]
exten = logintoconf,1,ConfBridge(${operator},escalationbridge,caller)
exten = logintoconf,n,Return()
[operator]
exten = logintoconf,1,Originate(SIP/201005,exten,handler-callee,callee,1)
exten = logintoconf,n,NoOp("Call complete" ${DIALSTATUS} )
exten = logintoconf,n,Return()
[handler-callee]
exten = callee,1,Set(CHANNEL(hangup_handler_push)=hangup-callee,s,1)
exten = callee,n,NoOp(handler-callee................)
exten = callee,n,ConfBridge(${operator},escalationbridge,operator)
[hangup-caller]
exten = s,1,NoOp("Hangup caller" ${CHANNEL} )
exten = s,n,Hangup
exten = s,n,Return()
[hangup-callee]
exten = s,1,NoOp("Calleee Hangup " ${CHANNEL} )
exten = s,n,Hangup
exten = s,n,Return()
в приведенном выше __operator, не наследует значения в канал оператора.
Цените любые входные данные, которые могут помочь мне поделиться переменными, используя Dialplan.
Благодарю.
1 ответ
Вы можете наследовать только в унаследованных каналах. Поскольку вы создаете новые каналы, они не могут наследовать.
Вы можете отправить имя глобальной переменной второго, третьего и т. Д. Канала или использовать функцию SHARED.