開發後端對後端 (B2B) 應用程式

您可以使用 javax.servlet.sip.B2buaHelper 介面,來開發「後端對後端使用者代理程式 (B2BUA)」應用程式。

開始之前

請閱讀 JSR289 規格第 12 節,其中提供 B2BUA 作業的詳細資訊。SIP Servlet 1.1 規格定義了用來建立 B2BUA 應用程式的 Helper 類別 javax.servlet.sip.B2buaHelper。如需相關資訊,請參閱 B2buaHelper 方法的相關說明文件。

關於這項作業

B2BUA 是一種「階段作業起始通訊協定 (SIP)」應用程式,位於 SIP 呼叫中間,可在兩個以上的 SIP 對話之間轉遞要求和回應。一般的 B2BUA 應用程式會管理兩個使用者代理程式之間的 SIP 階段作業。不過,B2BUA 應用程式也可以處理更複雜的實務,在這類實務中,它需要管理下游分岔中不同分支的回應。當要求分割成不同的分支,且訊息會從使用者代理程式用戶端轉遞給使用者代理程式伺服器時,就會出現下游分岔。B2buaHelper 類別含有建立這類 B2BUA 應用程式的所有必要方法。B2buaHelper 類別的行為和用來建立新要求的規則,定義在 JSR289 規格第 12.2 節中。您可以使用 B2buaHelper 類別函數,來鏈結 SIP 後端對後端使用者代理程式的兩個 Leg(送入的呼叫 Leg 和送出的呼叫 Leg)。

程序

  1. 呼叫 SipServletRequest.getB2buaHelper() 方法,來擷取 B2buaHelper 實例。
  2. 擷取這個實例之後,您可以呼叫 B2buaHelper.createRequest(),以建立新的 SIP 要求。
    private void doInvite(SipServletRequest req) {
    	B2buaHelper b2buaHelper = req.getB2buaHelper();
    	SipServletRequest newRequest = b2buaHelper.createRequest(req, true, headerMap);
    }

    所建立的 newRequest,與在這個方法的第一個參數中提供作為原始要求的 SipServletRequest req 相同。Boolean 參數指出原始要求 reqnewRequest 是否鏈結。headerMap 提供 newRequest 中所置換之非系統標頭的對映。

  3. 請確定兩個 Leg 已鏈結。如果您呼叫設有 false 屬性的 createRequest 方法,您可以呼叫下列來明確鏈結 SIP 階段作業:
    B2buaHelper.linkSipSessions(session1, session2)
  4. 鏈結 SIP 階段作業與 SIP 要求之後,您可以呼叫下列來擷取所鏈結的階段作業:
    SipSession linkedSession = B2buaHelper.getLinkedSession(req.getSession());
    註: 在 B2BUA 分岔實務中,應用程式會建立多個 SIP 要求,因此不是所有的 SIP 階段作業都會鏈結。您必須明確鏈結它們。
  5. 收到「使用者代理程式伺服器 (UAS)」的回應之後,請建立要傳給其 Leg 的回應。請檢查以判斷回應中所鏈結的階段作業是否存在,若是,請使用所鏈結的要求,來建立要傳給「使用者代理程式用戶端 (UAC)」的回應。
    SipServletRequest linked = b2bHelper.getLinkedSipServletRequest(resp.getRequest()); 
    linked.createResponse(resp.getStatus(),resp.getReasonPhrase()).send(); 

    如果回應沒有與任何鏈結的階段作業相關聯,應用程式需要呼叫 B2buaHelper.createResponseToOriginalRequest,並建立衍生的新階段作業,而這是原始要求相關聯之 SipSession 的副本。

    註: JSR289 規格第 12.5 節提供方法來建立多個要傳給原始要求的成功回應。如果原始 INVITE 訊息有多個相關聯的 SipSession,且需要傳送多個成功回應給 INVITE 訊息,請使用 B2buaHelper.createResponseToOriginalRequest 方法。
  6. 如果您使用 createResponseToOriginalRequest 方法,請確定兩個 Leg 已鏈結。您的應用程式負責將衍生的新階段作業鏈結至其配對階段作業,這樣它就可以擷取鏈結的階段作業,以便傳送其後續的回應。

指示主題類型的圖示 作業主題

檔名:twlp_sip_dev_b2b.html