2020年10月30日 星期五

SIP REFER

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 以後未看

參考

  1. RFC3515 The SIP Refer Method

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...