PJSIP и match_header
Добавлено: 08 май 2018, 12:32
Добрый день.
Окунулся в магию pjsip во всех проявлениях и столкнулся с интересным явлением. Есть у pjsip секция identify, которая позволяет входящие вызовы с транка маршрутизировать в нужный endpoint. Отлично работает с match по ip источника звонка. Но вот с параметром match_header работает криво. Ну как вриво, если следовать описанию и вписать заголовок со значением через : , то астериск все правильно разбирает и делает соответсвующий match. Вся проблема у меня врозникла с полем маршрутизации To. Я хочу вызов от оператора маршрутизировать в разные эндпоинты по разным match_header. Естественно будут разные identify. При входящем вызове в дебаге я вижу странную картину
То есть у входящего вызова астериск НЕ видит значение поля To: и соответсвенно не может его сравнить с тем match, которые я указал в конфиге. Смотришь дебаг звонка, и там ТО в инвайте виден , тот который я указал в конфиге. И в инвайте и в аск. А в дебаге в инвате пустое астериск видит, а в аск мусор какой-то.
Попробовал другое поле распарсить. В частности User-Agent отлично срабатывает при полном совпадении с шаблоном. Если шаблон отличается, то пишет что пришло и с чем сравнивает. Тут же мистика какая-то. Кто-то может сталкивался с такой задачей?
Думал может провайдер, от которого принимаю вызов, делает что-то не так, попробовал с телефона на ip адрес сервера позвонить. проблема та же.
Окунулся в магию pjsip во всех проявлениях и столкнулся с интересным явлением. Есть у pjsip секция identify, которая позволяет входящие вызовы с транка маршрутизировать в нужный endpoint. Отлично работает с match по ip источника звонка. Но вот с параметром match_header работает криво. Ну как вриво, если следовать описанию и вписать заголовок со значением через : , то астериск все правильно разбирает и делает соответсвующий match. Вся проблема у меня врозникла с полем маршрутизации To. Я хочу вызов от оператора маршрутизировать в разные эндпоинты по разным match_header. Естественно будут разные identify. При входящем вызове в дебаге я вижу странную картину
Код: Выделить всё
[May 7 13:43:25] DEBUG[6124]: res_pjsip_endpoint_identifier_ip.c:174 header_identify_match_check: SIP message contains header 'To' but value '���▒�' does not match value ''<sip:123@ххх.ххх.ххх.ххх:5060>'' for endpoint 'toll_f_f-IN1'
[May 7 13:41:59] DEBUG[6116]: res_pjsip_endpoint_identifier_ip.c:174 header_identify_match_check: SIP message contains header 'To' but value '' does not match value '<sip:123@ххх.ххх.ххх.ххх:5060>' for endpoint 'toll_f_f-IN1'
Попробовал другое поле распарсить. В частности User-Agent отлично срабатывает при полном совпадении с шаблоном. Если шаблон отличается, то пишет что пришло и с чем сравнивает. Тут же мистика какая-то. Кто-то может сталкивался с такой задачей?
Думал может провайдер, от которого принимаю вызов, делает что-то не так, попробовал с телефона на ip адрес сервера позвонить. проблема та же.