Страница 1 из 1

Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 13:03
youran
Пытаюсь просмотреть заголовок при помощи функции SIP_HEADER, следующим образом
exten => s,1,NoOp(${SIP_HEADER(To)})
на что Asterisk ругается chan_sip.c:23271 func_header_read: This function can only be used on SIP channels.

Версия 18.8.0

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 13:09
Zavr2008
Для PJSIP (а его похоже используете) нужно использовать PJSIP_HEADER()
https://asterisk-pbx.ru/wiki/asterisk/func/pjsip_header

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 13:11
youran
Нет использую cha_sip.so

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 13:13
ded
В вашем примере -
exten => s,1,NoOp(${SIP_HEADER(To)})
это чтение из переменной, а не функция.

Смотрите синтаксис, используя встроенный help.
Функция SIP_HEADER
*CLI> core show function SIP_HEADER

-= Info about function 'SIP_HEADER' =-

[Synopsis]
Gets the specified SIP header from an incoming INVITE message.

[Description]
Since there are several headers (such as Via) which can occur multiple times,
SIP_HEADER takes an optional second argument to specify which header with
that name to retrieve. Headers start at offset '1'.

[Syntax]
SIP_HEADER(name[,number])

[Arguments]
number
If not specified, defaults to '1'.

Примеры -
exten => 1,1,Set(TESTAT=${CUT(SIP_HEADER(From),@,2)})
exten => 1,n,GotoIf($["${TESTAT}" != ""]?hasat)
exten => 1,n,Set(FROM_IP=${CUT(CUT(SIP_HEADER(From),>,1),:,2)})
exten => 1,n,Goto(gotip)
exten => 1,20(hasat),Set(FROM_IP=${CUT(CUT(CUT(SIP_HEADER(From),@,2),>,1),:,1)})
exten => 1,n(gotip),NoOp(Gateway IP is ${FROM_IP})

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 15:50
gosha
это чтение из переменной, а не функция.


строка ниже кабы говорит что нормально там все с синтаксисом. )

на что Asterisk ругается chan_sip.c:23271 func_header_read: This function can only be used on SIP channels.


В какой нибудь Local chanel топик стартер не звонит ? ну либо и вправду pjsip

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 16:40
ded
Я бы проверил эту функцию именно на incoming INVITE message .
Код: выделить все
exten => 1,1,Set(TESTAT=${CUT(SIP_HEADER(To),@,1)})
exten => 1,n,NoOp(${TESTAT})

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 17:21
youran
gosha писал(а):
это чтение из переменной, а не функция.


строка ниже кабы говорит что нормально там все с синтаксисом. )

на что Asterisk ругается chan_sip.c:23271 func_header_read: This function can only be used on SIP channels.


В какой нибудь Local chanel топик стартер не звонит ? ну либо и вправду pjsip


Да звонит именно в Local chanel

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 17:24
youran
Может я неправильно задал вопрос мне надо что бы в ивайт поле было SIP_HEADER(REDIRECT_INFO) куда можно было передать значение

Re: Функция SIP_HEADER выдает ошибку

СообщениеДобавлено: 23 ноя 2021, 18:11
gosha
если у что то типа

exten => ...., blabla
exten => ...., Dial(Local/xxx@some-ext)


[some-ext]
...., SIP_HEADER(...)

то перед Dial вытаскивайте тот хидер в переменную и потом использзуйте ее

Set(__ORIG_TO=${SIP_HEADER(To)})

и потом уже в some-ext использовать ${ORIG_TO}