9

SIP と WebRTC を使用し、PTSN に接続するブラウザベースの VOIP ソリューションの実装を検討しています。基本的に、ユーザーは私に SIP クレデンシャルを提供し、私は WebRTC を使用してマイクとスピーカーにアクセスします。このページでは、SIP クライアントを実行する予定です。

PTSN からの着信コールを実装するにはどうすればよいですか? ユーザーの SIP サーバーに接続する何らかのリスナーが必要ですか?

これが幅広い質問であることは承知していますが、オンラインで調査を行った後でも、着信コールの SIP 実装について多少混乱しています。

4

4 に答える 4

7

おそらく、これを更新することは努力する価値があります。

WebRTCは現在、Firefox と Chrome に実装されています (IE、Edge、Safari にはありません)。

従来の SIP から WebRTC への変換には、いくつかの変換が必要です。WebRTC を使用すると、通常は WebSocket を介したシグナリングに何でも使用できます。独自のプロトコルを実装できますが、SIP との互換性を探している場合、最も自然に適合するのはWebSocket to SIP プロトコルです

WebRTC はメディアを DTLS/SRTP でエンコードするため、クリア RTP でもデコードする必要があります。これは、サーバー側で、WebRTC サポートが組み込まれたソフトスイッチを使用するか、WebRTC から SIP ゲートウェイへのいずれかを使用することを意味します。完全なメディア トランスコーディングをサポートするソフトスイッチ/ゲートウェイを選択してください。WebRTC は現在、G.711、G.722、および Opus をサポートしています。レガシー SIP ネットワークの場合、サーバーは通常 G.711 を選択するだけで、すべてが完璧です。状況によっては、メディアを G.729、G.723、GSM などの他の一般的なコーデックに変換する必要がある場合があります。

通常、次のプロトコル カバーがあります。

  • シグナリング (これは簡単です): TLS の WebSocket を介した SIP -> UDP/TCP を介した SIP のクリア
  • メディア (これはより複雑です): DTLS/SRTP でエンコードされた PCMU 付き RTP -> PCMU 付きのクリア RTP

WebRTC をサポートするソフトスイッチ:

WebRTC から SIP ゲートウェイへ:

SIP (RFC 7118) 対応の WebRTC クライアント:

また、独自の STUN および TURN サーバーを展開して使用する必要があります (一部のサーバー/ゲートウェイにはこれらが組み込まれています。それ以外の場合はcoturn rfc5766-turn-server を使用します)。

サーバー側が起動して実行されると、上記の webrtc クライアントに基づいてカスタムのクライアント側ソリューションを簡単に作成できます。これは、それぞれが使いやすい JavaScript API を備えているためです。

于 2016-03-13T19:57:18.973 に答える
6

理論的には、オープン ソース ソフトスイッチ (FreeSWITCH、Asterisk) プロジェクトを使用して SIP サーバーを展開し、「SIP トランキング」サービスを購入して、電話番号を取得し、PSTN との間で通話をルーティングすることができます。次に、サーバーを使用するように WebRTC SIP クライアントを構成できます。オープン ソースの JavaScript ライブラリ (SIP.js、JsSIP、sipML5) があります。

小規模で作業していて、通信インフラストラクチャの実行とトランキングの購入に慣れている場合は、これが最良の選択かもしれません。実際には、PSTN から WebRTC への呼び出しを実行するのは難しい場合があり、多くの品質の問題があります。また、アプリを構築しようとしている規模もわかりませんが、SIP サーバーへの同時接続が 100 を超えているため、スケーリングに対処する必要があります。ホステッド ソリューションで通信の煩わしさを解消したい場合は、SIP.js を使用して OnSIP (SIP.js をサポートしている会社) にサインアップできますこれは、電話を購入できる従量課金制のサービスです。数字を入力して、クライアントをコーディングするだけです。SIP.js ユーザー エージェントの構造は次のようになります。

var userAgent = new SIP.UA({
  uri: 'bob@example.onsip.com',
  wsServers: ['wss://sip-ws.example.com'],
  authorizationUser: sipUsername,
  password: sipPassword
});

OnSIP (hosted) を選択した場合、これらの資格情報はサービスによって提供され、OnSIP に登録されます。独自の SIP サーバーを展開することを選択した場合は、それに応じて変更します。

于 2014-06-24T20:53:18.217 に答える
5

SIP-WebRTC ゲートウェイを実装するサーバーが必要です。ゲートウェイは、SIP プロバイダー (ISDN-SIP、SS7-SIP などを変換することにより、それ自体が SIP-PSTN ゲートウェイとして機能する) からの着信通話を SIP 経由で受信し、WebRTC を使用してブラウザー ベースのクライアントに通話を転送できます。 .

別の言い方をすれば、サーバーは SIP サーバーと HTTP サーバーの組み合わせである必要があり、HTTP サーバーは Web ソケットと WebRTC API をサポートする必要があります。

Phono SDKをまだ見ていない場合は、出発点として適しています。

アップデート:

私が最後に WebRTC を見たときから、状況は少し進んでいます。現在、メディア側に新しい WebRTC API を活用する JavaScript 実装の SIP がいくつかあるようです。SIP-javascript スタックを使用するブラウザー アプリケーションは、追加のサーバーを必要とせず、既存の SIP サーバーに直接接続できます。私が見つけた 1 つの例はsip-jsですが、他にもあると思います。

于 2012-12-15T23:49:21.897 に答える
0

あなたの問題の解決策は次のとおりです。

  • Webrtc 自体は rtpengine.so として機能します。sip 資格情報を使用して、自分自身を wss または ws に登録してサーバーを sip することができます。その後、他の sip ユーザーまたはアウトバウンドに電話をかけることができます。
  • コールはそこから sip サーバーにヒットし、sip サーバーは着信コールまたは発信コールの天気を決定します
于 2016-03-14T12:29:04.553 に答える