SIP Method REFER 透過 Refer-To 提供第三方資訊給對方去聯繫,並隱含訂閱 refer Event 回報是否聯繫成功 (Event subscriptions 定義在 RFC3265)。在 INVITE Dialog 外也可使用,會建立一個 Dialog。
應用Call Transfer。例如 A 和 B 通話中,判斷需要和 C 談,所以送 REFER 給 B 提供 C 的 Contact 資訊。B 允許下嘗試用來呼叫 C。B 將會回報是否聯繫成功給 A。
Refer-To (r) 信頭欄位
REFER 請求必須要 Refer-To,Refer-To 只用在 REFER 請求,提供參照的 URL,可加密。由於 Contact 是 Route/Record-Route 機制的重要部份,不能用來表示參照的 URL。
格式
( name-addr / addr-spec ) * (SEMI generic-param)
範例
Refer-To: sip:alice@atlanta.example.com
Refer-To: <sip:bob@biloxi.example.net?Accept-Contact=sip:bobsdesk.
biloxi.example.net&Call-ID%3D55432%40alicepc.atlanta.example.com>
Refer-To: <sip:dave@denver.example.org?Replaces=12345%40192.168.118.3%3B
to-tag%3D12345%3Bfrom-tag%3D5FFE-3994>
Refer-To: <sip:carol@cleveland.example.org;method=SUBSCRIBE>
Refer-To: http://www.ietf.org
REFER 請求處理
- 回 400 Bad Request 如果沒有 Refer-To 或多於一個 Refer-To。
- Proxy 或 UA 可回 100 Trying 或適當的 4xx ~ 6xx。
- 接受回 202 Accepted,並訂閱 refer,馬上 NOTIFY 回報。
- 聯繫 Refer-To 提供的 URL,例如有參數 method=INVITE 用 INVITE。
- NOTIFY 回報使用和 REFER 相同的 Dialog。Event 是 refer,可能有 id 參數放 REFER CSeq 序號區別多個 REFER。含信體 message/sipfrag (RFC3240)。一開始 Subscription-State expires 參數告知 duration,也可能告知停刊。後續發 REFER 者可停訂或續訂 refer。
- 信體基本要有 SIP 回應狀態行,可包含其它 SIP 信頭欄位。
- SIP/2.0 100 Trying (聯繫進行中)
- SIP/2.0 200 OK (聯繫成功)
- SIP/2.0 503 Service Unavailable (聯繫失敗)
- SIP/2.0 603 Declined (參照失敗)
其它
只有 REFER 能訂閱 refer
refer event package
RFC3515 2.4.7 以後未看
沒有留言:
張貼留言