1

Java アプリケーション内で電話発信者を構築したいと考えています。この目的のために、JAIN-SIP ライブラリを使用しました。最初の INVITE の後、システムはプロキシ認証を必要とします。2 番目の招待は、「AuthenticationHelperImpl.class」の助けを借りて作成されます: https://gitorious.org/0xdroid/external_nist-sip/source/1e0f37693341071f316852c8e05a08deef2b7fc4:java/gov/nist/javax/sip/clientauthutils/AuthenticationHelperImpl.java#L311には、Proxy-Authentication ヘッダーと次のような lloks が含まれます。

INVITE sip:+11111111111@fpbx.de;maddr=fpbx.de SIP/2.0
Call-ID: 1c609509a43b721ab11c396c1e6ea9e7@192.168.17.107
CSeq: 2 INVITE
From: "77735hk6iu" <sip:77735hk6iu@fpbx.de>
To: "+111111111111111" <sip:+11111111111@fpbx.de>
Via: SIP/2.0/UDP 192.168.17.107:34567;rport;branch=z9hG4bK-383337-5bc4fd6b7a616843fce9eaa243bcb10e
Max-Forwards: 70
Contact: <sip:77735hk6iu@192.168.17.107:5060>
Content-Type: application/sdp
Proxy-Authorization: Digest       username="77735hk6iu",realm="fpbx.de",nonce="VLaIxVS2h5muPS30F2zLdXHjup6ELyen",uri="sip:+111111111111@fpbx.de:5060;maddr=fpbx.de",response="47ea578c6b01c99fd3ed2b41c60983df"
Content-Length: 61

v=0
o=- 130565705777141827 1 IN IP4 192.168.17.107
s=call

その後、最初のコード 100 メッセージ (「あなたの電話は私たちにとって非常に重要です」) に続いて 408 コード メッセージ (「リクエスト タイムアウト」) を受け取ります。

状況を改善するために私がしたこと:

  1. さまざまな電話番号形式を試しました: 004930208488480、04930208488480、049、0049、sdfhajfkhsk。これらすべての数字について、私はメッセージで同じ組み合わせになります。

  2. リクエストURIでポートを使用しようとしました

  3. リクエスト uri から maddr を削除しようとしました。

  4. コーデック設定でメッセージ本文を埋めようとしました。

  5. ヘッダー経由でレポートを設定および削除する

あなたが今私が間違っていることをしているなら、助けてください。前もって感謝します。

4

3 に答える 3

0

100 メッセージはホップバイホップです。つまり、次のホップがリクエストを受け取ったことを意味します。他のメッセージは、通常、エンド ツー エンドです (したがって、180 Ringing を取得した場合、通常、呼び出されたエンドポイントが 180 を送信したことを意味します)。408 は通常、ホップの 1 つが INVITE を送信したが応答が得られなかった場合に表示されます (また、SIP スタックは、妥当な時間内に暫定的な応答を取得しなかった場合に内部的にそれを生成している可能性があります。通常、デフォルトでは約 32 秒です)。 SIP タイマー)。

あなたのネットワーク設定はわかりませんが、そのメッセージには (192.168.xx の種類の) いくつかのプライベート IP が含まれています。私が推測しなければならなかった場合、最初のホップは 100 を受信した IP/ポートに送り返していますが、次の応答は Via ヘッダーに従っており (当然のことです)、その後のホップは rport を尊重していません。パラメータなので、応答が失われています。または、NAT の構成が不十分で、INVITE 用に作成した穴をすぐに閉じています。

このメッセージが送信されるネットワークの端にプロキシがある場合、メッセージに不適切な Via ヘッダーが付けられているか (外部 IP ではなく内部 IP を使用している可能性があります)、間違った場所に INVITE が送信されています。 (応答が得られない原因)、408はそこから来ています。

于 2015-02-01T05:10:23.383 に答える