私は現在、mobicents (Tomcat での sip サーブレットの実装) を基礎として使用して、sip を使用した通信システムを開発しています。私は通知サービスを実装しようとしました。ここで、UA は定期的に Notify を介して Status-Info を取得するためにサブスクライブできます。RFC3265「特定のイベント通知」で読んだように、サブスクリプションの NOTIFY メッセージは、サブスクライブ ダイアログに属しているため、同じ Call-ID を持っている必要があります。
問題: 新しいリクエストが現在のダイアログに属していることをサーブレットコンテナに伝える方法がわからないため、同じ Call-ID で NOTIFY を作成する際に問題が発生しました。これは私がテストのために試みたものです:
public void doSubscribe(SipServletRequest request){
try{
//Get Session
SipApplicationSession session = request.getApplicationSession();
//Send response
SipServletResponse response = request.createResponse(SipServletResponse.SC_OK);
response.setExpires(600);
response.setHeader("Event", "buddylist");
response.send();
//Send notify (same call-id!!!)
Address serverAddress = this.sipFactory.createAddress("sip:server@test.com");
SipServletRequest newRequest = sipFactory.createRequest(session, "NOTIFY", serverAddress, request.getFrom());
newRequest.setHeader("Subscription-State", "active;expires=600");
newRequest.setHeader("Event", "buddylist");
newRequest.send();
} catch(Exception e){
e.printStackTrace();
}
}
同じセッションを追加するとうまくいくと思いましたが、そうではありません。誰もこれを正しく行う方法を知っていますか?