RTCKit:ブラウザーの音声およびビデオチャットAPI

画像



現時点で最も人気のあるIPテレフォニープロトコルはSIPです。 これにより、ほとんどのソフトウェアおよびハードウェア電話コンポーネントとやり取りでき、多くのサービスでもサポートされています。 C( PJSIPLinphone )またはPython( B2BUAp2p-sip )言語でこのプロトコルの適切なスタック実装がいくつかあり、その助けを借りて、音声およびビデオ通信をデスクトップまたはサーバーアプリケーションに簡単に統合できます。



問題



Webアプリケーションでは状況が異なります。今日のブラウザーは、追加のプラグインなしでテレフォニーを使用する機能をまだサポートしていません。 この方向での作業は間違いなく進行中です。 GoogleとW3CがサポートするWebRTCプロジェクトにはいくつかの希望がありますが、残念なことに、それでも万能薬ではありません。 第一に、Internet Explorerでのサポートの見通しは非常に曖昧であり、第二に、まだSIPをサポートしていません。 それに、この技術は将来のものです。 しかし、SIPテレフォニーをWebアプリケーションに今すぐ埋め込みたい場合はどうでしょうか。



まず、要件を決定します。 ブラウザ内のリアルタイム通信技術から、次のものが必要です。





現状



Webブラウザーの現在の状態を慎重に検討した結果、現時点では、これらの要件を満たしているのは1つのテクノロジー、つまりAdobe Flashだけであることが明らかになりました。 このテクノロジーは閉じられており、奇妙なものではありませんが、長年にわたってアドビはそれをある程度まともな状態にしています。 ネットワーク上の膨大な量のコンテンツにはFlash Playerが必要なため、ほとんどのユーザーがインストールします。



Flashは、Internet Explorer用のActiveXテクノロジーで作成され、他のすべてのブラウザーでNPAPIを使用するブラウザープラグインです。 プラグインはswfファイルをロードし、それらに含まれるバイトコードを実行できます。 しかし最も重要なことは、Flash PlayerはサウンドカードとユーザーのWebカメラとやり取りし、それらからサウンドと画像を取得し、最新のオーディオおよびビデオコーデックを使用してエンコードできることです。 たとえば、Speex / 16000コーデックは、音質/圧縮比の点で理想的です。



残念ながら、Flashでは、SIPクライアントを構築する標準のTCPおよびUDPプロトコルを直接使用することはできません。 代わりに、独自のプロトコルRTMPおよびRTMFPを使用して音声およびビデオデータを送信することが提案されています。 最初のものはTCP上に構築されているため、すぐに消えますが、 RTMFPはまさに必要なものです。 UDP上で動作するため、遅延を最小限に抑えることができ、ネットワーク干渉に対する耐性があります。



テクノロジーを決定した後、実装に関連する疑問が生じます。 クライアント側では、複雑なことは何もないようです。 Webページに埋め込まれ、RTMFPプロトコルを使用した双方向通信を提供するFlashアプリケーションを作成する必要があります。 これには、ActionScript(基本的にはクラスとモジュールをサポートするJavaScript)での開発が必要です。



ただし、サーバー側では、RTMFPをSIPに変換する必要があります。 執筆時点では、この機能をサポートしているオープンソースプロジェクト(red5、rtmpliteなど)はありません。 市販のAdobe Flash Media ServerとFlash Media Gatewayを組み合わせても、RTMP <-> SIP変換のみがサポートされます。もちろん、Adobeのサーバー製品の価格は手頃すぎるわけではありません。



解決策



これらのアクションには多くの労力が必要であり、すべて一見単純な機会であるアプリケーションのための音声とビデオの通信のためです。 この点で、私たちはこれらすべての困難を自分自身に負わせるクラウドサービスを作成するというアイデアを持っていました。 talkpad.ruでの長年の経験を使用して、Webアプリケーション内で通信するためのAPIを作成しました-RTCKit.com



画像



このサービスを使用すると、非表示のWebPhone Flashコンポーネントをアプリケーションに埋め込み、直感的なJavaScript APIを使用して管理できます 。 WebPhoneは音声とビデオのデータをクラウドに送信し、SIPへの変換とその逆の変換を行っています。その結果、最新のIPテレフォニーサービスの全範囲を利用できます。



これはどのように使用できますか? たとえば、SIPを介したテレフォニーサービスプロバイダーの場合、何もインストールすることなく、サブスクライバーにサイトから直接電話をかけることができます。 または、たとえば、RTCKitを介してPBXとやり取りし、ブラウザーで企業電話会議を整理できます。



使用例



たとえば、次のユースケースを考えます。 Zingayaのような独自のclick2callサービスを作成し、顧客が追加のソフトウェアをインストールせずにWebサイトから直接電話をかけたいオンラインストアに提供するとします。 問題ありません。これは次のように行われます。



1.固定電話と携帯電話の音声を固定するには、 talkpad.rusipnet.ru、またはその他のSIPプロバイダーでアカウントを登録します。



2. RTCKit JavaScriptライブラリをロードするページをWebサーバーに配置し、次のコードを記述します。 <username>と<password>の代わりに、前の段落のアカウント情報を使用します。



<head> <script src="http://rtckit.com/api/swfobject.js"></script> <script src="http://rtckit.com/api/rtckit.js"></script> <script> window.addEventListener('load', function() { RTCKit.webPhone.onConnectStateChanged = function(connectInfo) { if (connectInfo.connected) { RTCKit.webPhone.register({ registrar: 'talkpad.ru', username: '<username>', password: '<password>' }); } } RTCKit.webPhone.onRegStateChanged = function(regInfo) { if (regInfo.registered) RTCKit.webPhone.call({'uri': 'sip:<number>@talkpad.ru'}); } RTCKit.webPhone.embed({container: 'container'}); RTCKit.webPhone.connect() }, false); </script> </head> <body> <div id='container' style='width: 217px; height: 140px'></div> </body>
      
      







3.オンラインストアページの[呼び出し]ボタンをクリックして、ポップアップウィンドウでページが表示されるようにします。<number>の代わりに、国際形式の営業部門の電話番号(たとえば74951234567)を使用します。 Click2callサービスの準備ができました!



RTCKitでアカウントを設定することなく、SIPプロバイダーに登録して、 テストベンチのブラウザーで直接呼び出すことができます。 ページにはすでにテスト用の資格情報が含まれていますが、独自の資格情報を使用することもできます。



結論として、WebPhoneは、さまざまなテレフォニーのニーズに対応する最新のクラウドAPIを作成するための最初のステップにすぎないと言いたいと思います。 RTCKitの新しい興味深い機能を開発中です。準備ができ次第、それらについて説明します。



更新:マイクがLinuxで機能しなかったために問題が見つかり、修正されました。 今ではどこでも動作するはずです。



更新:現在、ブラウザでのビデオ通話もサポートしています。 ここで読むことができます



All Articles