Рейтинг:0

Пересылка заголовков SIP со звездочкой (PJSIP)

флаг ru

Я пытаюсь перенаправить определенный входящий заголовок на другую часть вызова, но не могу понять, как передать значение заголовка входящей ветви в обработчик предварительного набора

[дополнения]
exten => addheader,1,Verbose("Настройка заголовка")
exten => addheader,1,Verbose(${somevar}) ; Переменная 'somevar' больше не существует
exten => addheader,n,Set(PJSIP_HEADER(add,X-MyHeader)=test)
exten => addheader,n,Set(PJSIP_HEADER(add,X-MyHeader2)=${somevar})
exten => addheader,n,Return()

[входящий]
exten => _+4600.,1,Звонок
exten => _+4600.,n,Set(somevar=${PJSIP_HEADER(read,TheHeaderIWantToForward)})
exten => _+4600.,n,Verbose(${somevar}) ; Печатает правильное значение
exten => _+4600.,n,Dial(PJSIP/${EXTEN:1},,b(addheaders^addheader^1))
exten => _+4600.,n,Отбой

Мне удалось добавить X-MyHeader в ветвь исходящего вызова (поскольку звездочка документация показывает, как это сделать), но как на самом деле передать значение в другой контекст? Я не могу прочитать переменную в "[addheaders]", и я могу только прочитать заголовки в "[incoming]"

Рейтинг:1
флаг by

Вы можете использовать _VARIABLE: https://wiki.asterisk.org/wiki/display/AST/Переменная+Наследование

[обработчик]
exten => addheader,1,NoOp(значение ${somevar})
то же самое => n, Set (PJSIP_HEADER (добавить, X-myheader = $ {somevar})
то же самое => п, Возврат()

[внутренний]
exten => 6010,1,NoOp(Тест)
то же самое => n,Set(_somevar=${PJSIP_HEADER(read,X-myheader)})
то же самое => n, NoOp (значение равно $ {somevar})
то же самое => n,Dial(PJSIP/6010,,b(handler^addheader^1))
то же самое => n, повесить трубку ()
Рейтинг:0
флаг ru

Не знаю, был ли это «правильный» способ сделать это, но я решил это, приняв расширения с подстановочными знаками в контексте addheaders:

[дополнения]
exten => _.,1,Set(PJSIP_HEADER(добавить,X-заголовок для пересылки)=${EXTEN})
exten => _.,n,Return()

[входящий]
exten => _+4600.,1,Звонок
exten => _+4600.,2,Set(customheader=${PJSIP_HEADER(read,X-header-to-forwarded)})
exten => _+4600.,3,GotoIf($["${customheader}"=""]?7:) ; Пропустить добавление заголовка, если он пуст
exten => _+4600.,4,Dial(PJSIP/${EXTEN:1},,b(addheaders^${customheader}^1))
exten => _+4600.,5,Перейти(9))
exten => _+4600.,6,Dial(PJSIP/${EXTEN:1})
exten => _+4600.,7,Отбой

Это имеет некоторые ограничения, например "." или "," нельзя использовать, но это решило нашу проблему.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.