我的應用程序模擬具有相同記錄地址的多個SIP實例,因此我可以支持對該URI的同時傳入呼叫。 我也想這些實例是唯一可尋址的。因此,我希望從註冊服務商那裏獲得每個這些SIP實例的GRUU。獲取具有相同本地SIP URI的多個實例的GRUU
我使用OpenSips v2.3.1作爲註冊商。當應用程序在註冊服務器上註冊時,收到的響應僅包含一個與GRUU的聯繫地址,用於其中一個SIP實例(見下文)。當我使用具有不同本地SIP URI的SIP實例時,響應包含每個聯繫地址的GRUU。
我已經通過RFC5627(GRUU機制)進行了搜索,但找不到此行爲的原因。
這是正確的行爲還是這可能是這個OpenSips版本的問題?
謝謝您的回覆。
-
的REGISTER請求發送看起來像這樣:
REGISTER sip:192.168.1.178 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.237:5060;branch=z9hG4bKde764961a60b4e2f8e809470a5c20f78
Max-Forwards: 70
From: sip:[email protected];tag=d455cae0a95f4229bcd2153dac7b3c5b
To: sip:[email protected]
Call-ID: f8e77f1a8a604cc98a505bb7017045e4
CSeq: 22 REGISTER
Contact: <sip:[email protected]>;+sip.instance="<urn:uuid:2f33883736cc4a3d91570e8c06df9b06-002>"
Contact: <sip:[email protected]>;+sip.instance="<urn:uuid:55372b9295824de19c98a9db63386160-001>"
Supported: gruu
Expires: 600
Content-Length: 0
從OpenSips註冊器接收到的REGISTER響應看起來像這樣:
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.237:5060;branch=z9hG4bKde764961a60b4e2f8e809470a5c20f78
From: sip:[email protected];tag=d455cae0a95f4229bcd2153dac7b3c5b
To: sip:[email protected];tag=672eb56ff27ea055e14e7cc9d1cbeb13.6345
Call-ID: f8e77f1a8a604cc98a505bb7017045e4
CSeq: 22 REGISTER
Contact: <sip:[email protected]>;expires=600;pub-gruu="sip:[email protected]:5060;gr=urn:uuid:55372b9295824de19c98a9db63386160-001";temp-gruu="sip:tgruu.AUUDWmUJQ2QCSRNfYwBAc0UCXVQmRBk3CkUGXWQDEmoCSQZWYQUUNgFJUFdrUEk3U[email protected]192.168.1.178:5060;gr";+sip.instance="urn:uuid:55372b9295824de19c98a9db63386160-001"
Server: OpenSIPS (2.3.1 (x86_64/linux))
Content-Length: 0
您是否嘗試爲每個sip.instance發送單獨的REGISTER? –
是的,我有。第二個REGISTER請求只是刷新註冊,而不是添加另一個綁定。看來OpensSips將SIP URI作爲主鍵值。我認爲,在使用GRUUs時,實例ID將成爲更好的主鍵,或者可能是兩個值的組合。 – Bucq
+ sip.instance機制在rfc5626中描述。正如我所看到的 - 要分開註冊,您需要提供不同的註冊ID。可能沒有這個參數會使服務器迷惑 –