SIP UAC を作成し、UAS から繰り返し着信メッセージを検出して無視する方法をいくつか試しましたが、試したすべてのアプローチで何かがうまくいかず、私の問題は、同じ呼び出しには同じシグネチャがあり、すべてのメッセージ テキストを比較するには多すぎるため、これらの繰り返しメッセージを検出しようとするときに、メッセージを構成するどのパラメーターを調べればよいか疑問に思っていました。
アップデート:
着信オプションに問題があり、サーバーに空の Ok 応答を送信して処理しました。(更新:しばらくテストした後、私はまだ時々別のオプションリクエストを受け取り、数秒ごとに数回受け取ることに気づきました。そのため、悪いリクエストで応答しようとしましたが、今ではオプションリクエストを1回または2回しか受け取りません毎登録・再登録)
現在、SessionInPogress のメッセージが繰り返し表示され、ここでビジー、使用不可などのさまざまなエラー メッセージが表示されます。これらのメッセージが非常に多く、ログが乱れているため、フィルタリングしたいと思います。
それを達成する方法はありますか?
アップデート:
返信する前にあなたのテクニックを試してみます。おそらくこれで問題が解決するでしょう
これが私が使用したものです。うまく機能します:
private boolean compare(SIPMessage message1, SIPMessage message2) {
if (message1.getClass() != message2.getClass())
return false;
if (message1.getCSeq().getSeqNumber() != message2.getCSeq().getSeqNumber())
return false;
if (!message1.getCSeq().getMethod().equals(message2.getCSeq().getMethod()))
return false;
if (!message1.getCallId().equals(message2.getCallId()))
return false;
if (message1.getClass()==SIPResponse.class)
if(((SIPResponse)message1).getStatusCode()!=((SIPResponse)message2).getStatusCode())
return false;
return true;
}
ありがとう、アダム。