Проблема: при входящем вызове на Eltex SMG 2016 от абонента с включенным антиопределителем номера, Eltex передает не все поля Contact в Header.
Вводные данные:
Оператор местной телефонной связи.
Eltex SMG-2016.
Версия ПО: ECSS-10 V.3.18.0.3969 2016/PBX/SORM/VAS/REC/IVR Build: Jul 20 2020 16:07:52
Присоединяющий оператор: Beeline
Схема трафика: Beeline <-SIP-> SMG-2016 <-SIP-> Asterisk(PJSIP) <-SIP-> Абоненты .
Входящий вызов от Beeline в сторону SMG 2016 приходит со следующими полями
Код: Выделить всё
Message Header
Via: SIP/2.0/UDP 8.8.8.8:5060;branch=z9hG4bKfupkf53tnn74v979q9r344qrs;Role=3;Hpt=8e58_16;TRC=ffffffff-ffffffff
Record-Route: <sip:8.8.8.8:5060;transport=udp;lr;Hpt=8e58_16;CxtId=4;TRC=ffffffff-ffffffff;X-HwB2bUaCookie=4673>
Call-ID: isbcuoczkpzqzo4yhr1qosr114sqchzz4qfo@SoftX3000
[Generated Call-ID: isbcuoczkpzqzo4yhr1qosr114sqchzz4qfo@SoftX3000]
From: Anonymous <sip:anonymous@anonymous.invalid;cpc-rus=1>;tag=z140uyyp-CC-27
SIP Display info: Anonymous
SIP from address: sip:anonymous@anonymous.invalid;cpc-rus=1
SIP from address User Part: anonymous
SIP from address Host Part: anonymous.invalid
SIP From URI parameter: cpc-rus=1
SIP from tag: z140uyyp-CC-27
To: <sip:4957777777@8.8.4.4;user=phone>
CSeq: 1 INVITE
Allow: INVITE,ACK,OPTIONS,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER
Contact: <sip:Anonymous@8.8.8.8:5060;transport=udp;Hpt=8e58_16;CxtId=4;TRC=ffffffff-ffffffff>
Contact URI: sip:Anonymous@8.8.8.8:5060;transport=udp;Hpt=8e58_16;CxtId=4;TRC=ffffffff-ffffffff
Contact URI User Part: Anonymous
Contact URI Host Part: 8.8.8.8
Contact URI Host Port: 5060
Contact URI parameter: transport=udp
Contact URI parameter: Hpt=8e58_16
Contact URI parameter: CxtId=4
Contact URI parameter: TRC=ffffffff-ffffffff
Max-Forwards: 68
Supported: 100rel,timer
User-Agent: Huawei SoftX3000 V300R011
Session-Expires: 3600
Min-SE: 600
Privacy: user
Content-Length: 276
Content-Type: application/sdp
Message Body
Но далее выходит с не полным набором значений в поле Contact
Код: Выделить всё
Frame 1: 902 bytes on wire (7216 bits), 902 bytes captured (7216 bits)
Ethernet II, Src: EltexEnt_8b:4f:0a (a8:f9:4b:8b:4f:0a), Dst: c2:cc:da:c8:6a:24 (c2:cc:da:c8:6a:24)
Internet Protocol Version 4, Src: 77.88.8.8, Dst: 77.88.8.2
User Datagram Protocol, Src Port: 5060, Dst Port: 5060
Session Initiation Protocol (INVITE)
Request-Line: INVITE sip:74957777777@77.88.8.2:5060;user=phone SIP/2.0
Message Header
Via: SIP/2.0/UDP 77.88.8.8:5060;rport;branch=z9hG4bK-o638868-1828
Transport: UDP
Sent-by Address: 77.88.8.8
Sent-by port: 5060
RPort: rport
Branch: z9hG4bK-o638868-1828
From: "Anonymous" <sip:77.88.8.8;user=phone>;tag=o1828p0D1719D0t7r638831
SIP Display info: "Anonymous"
SIP from address: sip:77.88.8.8;user=phone
SIP from address Host Part: 77.88.8.8
SIP From URI parameter: user=phone
SIP from tag: o1828p0D1719D0t7r638831
To: <sip:74957777777@77.88.8.2;user=phone>
SIP to address: sip:74957777777@77.88.8.2;user=phone
SIP to address User Part: 74957777777
SIP to address Host Part: 77.88.8.2
SIP To URI parameter: user=phone
Call-ID: 1600-332168-638677
[Generated Call-ID: 1600-332168-638677]
CSeq: 2 INVITE
Sequence Number: 2
Method: INVITE
User-Agent: smg_pa_sip 3.18.0.63
Max-Forwards: 29
Contact: <sip:@77.88.8.8:5060>
Contact URI: sip:@77.88.8.8:5060
Contact URI Host Part: 77.88.8.8
Contact URI Host Port: 5060
Accept: multipart/mixed, application/sdp
Allow: INVITE, ACK, BYE, CANCEL, PRACK, REGISTER, INFO, REFER, NOTIFY, OPTIONS, UPDATE
Supported: replaces
X-UniqueTag: 110000d15f632188365515439d437001
Content-Type: application/sdp
Content-Length: 236
Message Body
Session Description Protocol
Asterisk почему-то это поле Contact не нравится , и он в консоли он выдает ошибку:
Код: Выделить всё
[Sep 16 17:15:00] ERROR[601]: pjproject: <?>: sip_transport.c Error processing 860 bytes packet from UDP 77.88.8.8:5060 : PJSIP syntax error exception when parsing 'Contact' header on line 9 col 15:
Т.е. с таким полем Contact все работает
Код: Выделить всё
Contact: <sip:79995557788@77.88.8.8:5060>
А вот с таким полем Contact, работать не хочет:
Код: Выделить всё
Contact: <sip:@77.88.8.8:5060>
По-идее поле Contact , должно приходить в формате
Код: Выделить всё
Contact: <sip:Anonymous@77.88.8.8:5060>
Но из-за того что Anonymous пропущено , Asterisk отказывается принимать вызов.
Как заставить SMG 2016 формировать поле Contact по-другому ?