問題タブ [sip-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
p2p - PJSIP/PJNATH ライブラリで NAT マッピングの内部ポートが見つかりません
PJSIP/PJNATH ポート パンチング ライブラリ (STUN/TURN/ICE 用) を使用しており、パンチされたポートを介して独自の UDP ベースのトランスポートを作成したいと考えています。
NAT マッピングの内部ポートを保持するデータ構造が見つかりません。内部ポート (両側) が必要な理由は、UDP ソケットを内部ポートにバインドするためです (OS がランダムなポートを選択するのではなく)。図を参照してください。
icedemo
サンプル アプリは、(ポートをパンチした後) インターネット上でデータを送受信できることがわかりました。そのため、内部 UDP ポートにバインドする必要があります。内部ポートを保持しているデータ構造を知る必要があるだけです。
ファイル内のpj_ice_sess_send_data
関数は、ice_session.c
変数をダンプする有望な場所のように見えました。ただし、NAT マッピングの内部ポートを含むものはありません。
参考までに、パブリック IP:Port はすぐに利用できます。
背景
PJNATH ライブラリは、標準ベースの STUN/TURN/ICE プロトコルを実装し、両側からホスト/サーバーリフレクティブ/リレー IP:ポートを交換した後、ICE-UDP チェックを使用して UDP ポートをパンチします。
macos - MAC 10.9 で Kamailio のインストール エラーが発生しましたが、これは何ですか?
Kamailio 4.1
コマンドでMac OS10.9にインストールしようとしています:
しかし、ターミナルでは次のように表示されます。
このエラーは何ですか? 他に何か不足していますか?私の目的を達成するための正しい方法を教えてください。
call - iOS用SIP SDK
SIP サーバーがあり、VoIP iOS アプリケーションを実装したいと考えています。任意の SIP サーバーを使用するオプションを提供する iOS 用の SIP SDK (有料または無料) はありますか?
ありがとうございました
sip - SIP 通話がいつ開始されたかを把握する方法
Astraisk と SIP クライアント (任意のソフトフォン) の間に立つ単純な SIP プロキシ アプリケーションを作成しています。アプリケーションの目的は、通話時間を計算することです。
以下は通常の流れの例です。
- クライアントは INVITE を SIP プロキシに送信し、SIP プロキシは INVITE をアスタリスクに再送信します。
- アスタリスクは 200 OK で応答し、SIP プロキシは 200 OK をクライアントに再送信します。
- クライアントは ACK で応答し、SIP プロキシは ACK をアスタリスクに再送信します。
- いずれかの当事者が BYE を送信するたびに、会話は終了する必要があります。
ステップ 2 では、コールが開始されたと仮定します (たとえば、rtp メディア フローが開始されます)。次に、BYE メッセージが通話時間を計算するのを待ちます。ただし、一部のクライアントはステップ 3 と 4 に進まないことに気付きました。ステップ 2 の後で、どの当事者からも通話終了通知が受信されません。そのような通話の期間は無限です。
RTP フローをスニッフィングせずに、SIP コールの開始/終了時間を確認する最良の方法は何ですか? 手順 3 で通話の開始をマークするまで待つ必要がありますか? クライアントが ACK を省略した場合、または ACK を含む UDP データグラムがネットワークで失われた場合はどうなりますか?
今のところ、SIP コールが開始されたことを確認する信頼できる方法はないと考えていました。アクティブな通話を追跡するには、代わりに Astrisk チャネル API を使用する必要があるかもしれません。
android - IP アドレスではなくドメインで SIP サーバーに登録し、クライアント側から SIP アカウントを作成する方法は?
Android用のLiblinphoneライブラリを正常にコンパイルし、それを使用してBrekeke SIPサーバーに登録し、AndroidクライアントとPCクライアント(x-Lite、linphone)の間で呼び出しを行います。しかし、私は2つの問題に直面しています:
クライアントは、ドメインではなく IP アドレスを使用してサーバーに登録します。
例: サーバー IP:192.168.10.105 およびクライアント (IP,name):(192.168.10.101,101) の場合、ユーザーは sip:101@192.168.10.105 ではなく sip:101@192.168.10.101 として Brekeke に登録されます。そのため、linphone クライアントから 101 を呼び出すと、結果は Not Found になります
/li>コードでクライアント側から SIP サーバーにユーザーを作成する必要があります。Liblinphone を使用してこれは可能ですか、それとも自分で実装する必要がありますか?
sip - SIP リクエストでの from タグの使用は何ですか?
SIP に関して些細な疑問があります。グーグルで検索して多くの本を参照してみましたが、SIP リクエストに from タグを追加する明確な理由を見つけることができません。
SIP リクエストの例 (rfc-3261 からのスナップショット)
RFC-3261 によると:
ダイアログは、from-tag、to-tag、call-id を使用して識別できます。
to-tag と call-id を追加する正確な理由はわかっています。私が知らないのは、
- なぜ from-tag が必要なのですか?
- from-tag が存在しない場合 (rfc-3261 で義務付けられていないと仮定すると)、どのような影響がありますか?