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

pjsip_header между серверами астериск

Добавлено: 18 янв 2026, 22:15
Bdfysx
Доброго вечера уважаемые!
Нужен ваша помощ! Я уже голову всю сломал, почти все перепробовал. Не передаются пользовательские pjsip заголовки между серверами (X-).

Ситуация такая. Дано 2 сервера asterisk 22.5 (внешний для связи с провайдером ast_ext) и 22.6 (внутренние номера компании и очереди ast_int), сервера между собой соеденены без авторизации по SIP.
вроде все гуд, звонок от провайдера приходит и в зависимости от условий уходит на очередь или номер. Тут все ок, все работает.
Задачка моя состоит в том, что мне нужно добавить кастомный заголовок.

[from-pstn]
exten => 78882223344,1,NoOp(входящий от провайдера)
same => n,AGI(incoming.py) ;скрипт на питоне проверяет рабочее время и блеклист. (по сути если его убрать ничего не меняется.)
same => n,GoSub(to-internal-srv,s,1(${EXTEN}) ;переводим звонок на исходящую линию, для звонка на внутренний сервер.

[to-internal-srv]
exten => s,1,NoOp(call to internal server)
same => n,Set(PJSIP_HEADER(add,X-Sip-ID)=sipid_value)
same => n,Set(PJSIP_HEADER(add,X-in-callid)=callid_value)
same => n,Dial(PJSIP/${EXTEN}@ast_int)

Вроде как бы должно быть. Но до внутреннего сервера, заголовок не доходит. Такое ощущение, что он просто не добавляется, хотя консоль астера при звонке показывает данные.

для принятия заголовка на внутреннем сервере.
[from-ext-srv]
exten => _X.,1,NoOp(Входящий звонок с внешнего сервера)
same => n,Set(XSIPID=${PJSIP_HEADER(read,X-Sip-ID)})
same => n,Dial(PJSIP/${EXTEN})
same => n,Hangup()

через обработчик тоже делал, не появляется.
Может где то в конфигах нужно разрешать кастомные заголовки или еще что-то включить? А может эти заголовки между серверами вообще не передаются?? Хотя sipHeader на старых серверах (SIP) работает и передается. Хееееллллп!

Re: pjsip_header между серверами астериск

Добавлено: 19 янв 2026, 10:36
Bdfysx
Походц аура сообщества работает.
Заголовок появился, хотя понять почему, пока не могу. Никаких изменений в диалплане не делал.
Разберусь, оставлю решение тут, для истории

Re: pjsip_header между серверами астериск

Добавлено: 20 янв 2026, 09:03
Bdfysx
Решилось таким образом.

Заголовки передаю через handler. Но при этом в хендлере не присваивает заголовок из Call-ID
Например, мне нужно присвоить кастомному заголовку Call-ID для дальнейшего сопоставления.

[handler]
exten => addheader,1,Set(PJSIP_HEADER(add,X-Sip-ID)=${PJSIP_HEADER(read,Call-ID)})

[some_context]
exten => 1,1,Dial(PJSIP/${EXTEN}@to_trunk,,b(handler^addheader^1))

так НЕ работает! (Такой баг замечен только при передаче именно Call-ID)
Для того что бы передать Call-ID в кастомный хидер, нужно в обычном контексте поместить Call-ID в переменную а уже переменную присваивать к Х- заголовку в хидере.

[some_context]
exten => 1,1,Set(__XSIPID=${PJSIP_HEADER(read,Call-ID)})
same => n,1,Dial(PJSIP/${EXTEN}@to_trunk,,b(handler^addheader^1))

[handler]
exten => addheader,1,Set(PJSIP_HEADER(add,X-Sip-ID)=${XSIPID)

ТАК заработало.
Ну и дополню, что все в БД (realtime)