VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Bdfysx
Сообщения: 3
Зарегистрирован: 18 янв 2026, 21:34
Откуда: Нижний Новгород

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

Сообщение 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) работает и передается. Хееееллллп!
Bdfysx
Сообщения: 3
Зарегистрирован: 18 янв 2026, 21:34
Откуда: Нижний Новгород

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

Сообщение Bdfysx »

Походц аура сообщества работает.
Заголовок появился, хотя понять почему, пока не могу. Никаких изменений в диалплане не делал.
Разберусь, оставлю решение тут, для истории
Bdfysx
Сообщения: 3
Зарегистрирован: 18 янв 2026, 21:34
Откуда: Нижний Новгород

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

Сообщение 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)
Ответить
© 2008 — 2026 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH