在 Liberty 上接收「階段作業起始通訊協定 (SIP)」中的不相符訊息
使用 UnmatchedMessageListener API,來接收 SIP 儲存器無法處理的送入「階段作業起始通訊協定 (SIP)」要求或回應訊息。
開始之前
在 server.xml 檔中,安裝及配置 sipServlet-1.1 特性。如需相關資訊,請參閱在 Liberty 上管理「階段作業起始通訊協定 (SIP)」。
關於這項作業
SIP 儲存器提供介面,讓應用程式能夠接收不符合任何現有對話的所有送入要求或回應訊息。凡是不符合現有對話的要求或回應訊息,都視為不相符的訊息。
不相符的要求是指具有 To 和 From 標籤的要求,但卻因從未建立相關的對話,或者此對話處於失效狀態,而在 SIP 儲存器中找不到該對話。當 SIP 儲存器收到不相符的送入要求時,儲存器會回以 481 呼叫/交易不存在回應,然後將該送入的要求轉遞至接聽器類別。送入的要求會當成 UnmatchedRequestEvent 事件的一部分來轉遞,其定義在 com.ibm.websphere.sip.unmatchedMessages.events 套件中。事件含有一個介面,用來取得不相符的送入要求,以及接收該事件之應用程式的相關 ServletContext。應用程式可以使用 ServletContext 來建立新的 SIP 活動。接聽器無法為所接收的不相符要求建立回應,或對該要求執行 Proxy 作業。當發生此情況時,SIP 儲存器中會發生 IllegalStateException 異常狀況。
不相符的回應是指 SIP 儲存器中所收到的回應,但是該回應卻不符合任何送出的要求。在 SIP 儲存器捨棄不相符的回應之前,會將不相符的回應當成 UnmatchedResponseEvent 事件的一部分,傳送給 UnmatchedMessageListener 接聽器。類似於不相符的要求,應用程式會取得不相符回應和相關應用程式 ServletContext 的存取權。
如果為應用程式定義了多個 UnmatchedMessageListener 接聽器,每一個接聽器都是個別啟動。如果您在單一應用程式伺服器中有多個應用程式,且有多個應用程式具有 UnmatchedMessageListener 接聽器,所有接聽器都以隨機順序啟動。在應用程式組合的過程中,若有一個應用程式傳送要求給相同伺服器上的另一個應用程式,且 SIP 儲存器判斷此要求是 SIP 儲存器無法處理的要求,則會啟動該伺服器上的所有 UnmatchedMessageListener 接聽器。
UnmatchedMessageListener API 定義在 com.ibm.websphere.sip.unmatchedMessages 套件中的 com.ibm.websphere.appserver.api.sipServlet 檔內。
程序
您可以在應用程式碼中使用下列其中一種方法,來存取 UnmatchedMessageListener API: