對 INVITE 要求的 SIP 回應可能是最終或臨時的。最終回應一律會可靠地傳送,但臨時回應通常不會。假設您需要可靠地傳送臨時回應,您可以使用 PRACK(臨時回應確認)方法。
開始之前
如果要開發支援 PRACK 的應用程式,必須符合下列準則:
- 如果要指出用戶端支援 PRACK,傳送 INVITE 要求的用戶端必須在 Supported 或 Require 標頭中放置 100rel 標籤。
- SIP Servlet 必須呼叫 sendReliably() 方法(而非 send() 方法)來做出回應。
關於這項作業
下列標準中說明了 PRACK:
- RFC 3262 ("Reliability
of Provisional Responses in the Session Initiation Protocol (SIP)"),這是 RFC 3261 ("SIP:
Session Initiation Protocol") 的延伸,其中新增了 PRACK 和 100rel 選項標籤。
- JSR 289 ("SIP
Servlet Specification Version 1.1") 第 5.7.1 節 ("Reliable Provisional Responses")。
程序
- 如果您正在開發擔任 Proxy 的應用程式,請讓您的應用程式針對在 To 欄位中沒有標籤的任何 INVITE 要求,產生並傳送一個可靠的臨時回應。
- 如果您正在開發擔任使用者代理程式用戶端 (UAC) 的應用程式,請執行下列動作:
- 讓您的應用程式新增 100rel 標籤至送出的 INVITE 要求。這個選項標籤必須出現在 Supported 標頭或 Require 標頭中。
- 如果要建立 PRACK 要求,並將要求傳送給使用者代理程式伺服器 (UAS),請在應用程式的 doProvisionalResponse(...) 方法內,對送入的回應呼叫 createPrack() 方法。儲存器會依照 JSR 289 第 5.7.1 節的定義,來處理 RAck 標頭。
- 擔任 UAC 的應用程式會在 PRACK 中收到最終的 2xx-6xx 回應,UAC 可以使用 doResponse() 方法來處理該回應。
- 如果您正在開發擔任使用者代理程式伺服器 (UAS) 的應用程式,請執行下列動作: