Java用Vonageビデオ移行ガイド
からの移行 com.tokbox:opentok-server-sdk への com.vonage:server-sdk.
はじめに
目的
このドキュメントの目的は、OpenTok Java Server SDK から Vonage Java Server SDK への移行の出発点を提供することです。
スコープ
この文書では、少なくともバージョン4.0.0以降を使用していることを前提としています。 OpenTok Java SDK.Video API はバージョン 8.0.0 で Java Server SDK に追加されました。 ギットハブ または メイブン・セントラル.
前提条件
本ガイドは、プロのソフトウェア・エンジニアを対象としています。少なくとも、Java、一般的なJava開発者ツール、ビルドシステム(MavenまたはGradle)、Git(またはその他のバージョン管理システム)の基本的な能力があることを前提としています。Javaコードの読み書き、プロジェクトの依存関係の管理、Javaプロジェクトのデプロイと実行に慣れている必要があります。Java言語、プラットフォーム、関連ツールの紹介は、このドキュメントの範囲を超えています。
リソース
以下のリンクは、この文書に付随するさらなる読み物や、この文書でカバーされていないことを参照するのに便利です:
ボネージ
- Vonage ビデオ・ドキュメント
- Vonage Video API 仕様
- Vonage Java Server SDK ビデオ使用ガイド
- Vonage Java Server SDK Video API Javadocs
- Vonage Java Server SDK 動画ソースコード
- Vonage Java Server SDK GitHub リポジトリ
- Vonage Java Server SDKがMaven Centralで成果物を公開
トクボックス
- OpenTok API REST リファレンス
- OpenTok Java Server SDK ドキュメント
- OpenTok JavaサーバーSDKソースコード
- OpenTok Java Server SDK GitHub リポジトリ
- OpenTok Java Server SDKがMaven Centralにアーティファクトを公開
移行計画
OpenTokからVonage Videoに移行する前に、現実的な期待値を設定するために、タスクの規模を考慮する必要があります。
影響を評価する
最初に答えるべき質問は、あなたのアプリケーションのコードのうち、どれだけが OpenTok SDK に依存しているか、ということです。SDKが直接使用されているすべてのファイルのリストを作成してください。つまり、OpenTok SDKからのインポートを含むJavaソース・ファイルはすべて、OpenTok SDKに依存しています。 com.opentok パッケージを使用します。プロジェクト内のファイルを検索して、以下のステートメントを見つけることができます。 import com.opentok IDEまたはコマンドラインツールを使用して、影響を受けるファイルを特定する。
タイムライン
移行を完了するのに必要な時間を考慮に入れる。これは、プロジェクトの経験やその影響、テストによって異なります。OpenTokとVonage Videoの間の同等性を検証できるように、優れたテスト・スイートを用意することが極めて重要です。移行にかかる時間は、OpenTok SDKがあなたのコードで使われている場所の数と、使われている機能の種類にほぼ比例します。APIコールの中には、他のものよりも簡単に置き換えられるものがあります。
バージョニング
バージョン管理システム上に移行用の新しいブランチを作成し、既存のプロジェクトを壊すことなく、少しずつ頻繁に変更を加えていくのが理想的です。既存のプロジェクトのテストを、正しいかどうかの判断材料として使うこともできます。移行用ブランチをメインブランチにマージするのは、変換が完了してからにするのが理想的です。
主な変更点と考察
新機能と規格
Vonage Video APIはOpenTokと同等の機能を持っており、Java SDKはAPI仕様に沿うように積極的にメンテナンスされています。OpenTokとVonageのJava SDKの違いのひとつは、Java SDKがプレーンなStringsではなく、より強力な型付けのデータモデルを使用していることです。また、SDK内の他のAPIとの整合性が高く、SDKを直感的に使えるようにするための規約に従っています。もう一つの大きな違いは、リクエスト・クラスとレスポンス・クラスが統一されていることです。例えば Archive クラスを使ってアーカイブの作成と取得を行います。 ArchiveProperties リクエストと Archive をレスポンスに使用します。OpenTok SDK と同様に、Java SDK はリクエスト・オブジェクトの構築に Builder パターンを使用します。
OpenTok SDKとは異なり、Vonage SDKはチェックされた例外を使用しません。そのため try {...} catch (InvalidArgumentException ex)これにより、コードを整理することができる。失敗した(つまりステータスコードが2xxでない)APIコールの例外をキャッチしたい場合は、次のようにキャッチできる。 VideoResponseException の代わりに OpenTokException.
依存関係の更新
まず、ビルド・システムの依存関係を更新して、OpenTokの代わりにVonage Java SDKを使用する必要があります。この方法はお使いのビルドシステムによって異なります。最新バージョンの Vonage Java SDK をビルドに含める方法については、以下を参照してください。 メイブン・セントラル または mvnrepository.com.
OpenTok SDKは古いバージョンの依存関係を使用する傾向があり、実行時に問題を引き起こす可能性があるためです。
パッケージ名
ビルドツールを使ってVonage Java SDKをクラスパスに追加したら、コードで使い始めることができます。
インポートは com.opentok そして com.opentok.exception パッケージ com.vonage.client.video.IDEやコード・エディターを使って検索と置換を行えば、ほとんどのコンパイル・エラーを解決できるはずだ。
APIエラーを処理するためにキャッチする必要がある唯一の例外は、次のとおりです。 com.vonage.client.video.VideoResponseException.
認証の変更
OpenTokとVonage Java Server SDKの認証はどちらも代行されますので、初期化時にアカウント認証情報を一度だけ提供するだけで済みます。違いは、OpenTokではAPIキーとシークレットが必要ですが、Vonage Java SDKのVideo APIではアプリケーションIDとそのプライベートキーを提供する必要があります。VonageとOpenTokはどちらもトークンベースの認証を使用しますが、Vonageのトークンは以下の通りです。 JWT 一方、OpenTokはカスタムフォーマットを使用しています。APIキーとシークレットを VonageClient OpenTok と同様、これは Video API ではなく他の Vonage API に使用されます。そのため、アプリケーションを作成するか、既存のアプリケーションを使用する必要があります。
からアプリケーションを作成できます。 Vonageダッシュボード. アプリケーションがビデオ機能を有効にしていることを確認してください。 既存のアプリケーションの「Edit(編集)」をクリックして、そのアプリケーションの機能とクレデンシャルを表示します。ここから、'Generate public and private key'をクリックする。これを行うたびに認証情報が変更され、既存のキー・ペアが壊れてしまうからです。これをクリックすると、秘密鍵がダウンロードされます。このファイルをテスト用に安全な場所に置いてください。 決して秘密鍵を共有したり、公開したりしないでください! 秘密鍵は事実上、あなたのアプリケーションの「パスワード」ですから、慎重に扱わなければなりません。秘密鍵ファイルのパスを指す環境変数を作成し、アプリケーションをセットアップする際に参照できるようにすることをお勧めします。 VonageClient変数を次のように呼び出す。 VONAGE_PRIVATE_KEY_PATH.アプリケーションID(ダッシュボードまたは編集時のURLで確認できます)についても、同様に行う必要があります。
アプリケーションの設定に関する詳しいガイダンスについては、以下を参照してください。 入門ガイド.
使用方法
参照 Java SDK README をご覧ください。
その代わりだ:
OpenTok videoClient = new OpenTok.Builder(apiKey, apiSecret).build();
以下を実行する:
import com.vonage.client.video.*;
import com.vonage.client.VonageClient;
// Inside a constructor or method body:
VonageClient vonage = VonageClient.builder()
.applicationId(VONAGE_APPLICATION_ID)
.privateKeyPath(VONAGE_PRIVATE_KEY_PATH)
.build();
VideoClient videoClient = vonage.getVideoClient();
インスタンス化したら VonageClientを使用することができます。 Video API を使用する。 VideoClientから得られる。 VonageClient (上記参照)。
のAPIメソッドは VideoClient は、Javadocsを使って文書化されている。 OpenTok クラスである。
詳しい使用方法については Java Sever SDK ビデオガイド.
メソッドの変更
OpenTokからVonageに移行する際に注意すべき小さな変更がいくつかあります。 これらの多くは簡単なもので、IDEが自動補完を助けてくれますが、わかりやすくするために、以下のことを考慮してください:
projectId現在applicationIdアプリケーション- 該当する場合は、より強いタイピングを使用(例)。
UUIDそしてURIの代わりにString). playDTMFに改名した。sendDtmf該当するすべての DTMF エンドポイントについて。OpenTok#disableForceMute(String)の代わりにVideoClient#muteSession(String, boolean, String...).を設定する必要があります。activeへのブールパラメータfalse同じ効果を得るために。- について
MuteAllPropertiesクラスとOpenTokの代わりにexcludedStreamIdsのメソッド・パラメータに直接入力する。VideoClient#muteSession(String, boolean, Collection<String>)(またはVideoClient#muteSession(String, boolean, String...) for convenience).これらの方法はOpenTok#forceMuteAll(String, MuteAllProperties). ArchivePropertiesそしてBroadcastProperties- に置き換えられました。ArchiveそしてBroadcastそれぞれどちらも建設にはビルダー・パターンを使用する。ArchiveそしてBroadcastVonageでも、OpenTokと同様の方法で応答を表現している。- したがって
ArchiveそしてBroadcastはVonageの実装に統一されている。
OpenTok#setBroadcastLayout(String, BroadcastProperties)の代わりにVideoClient#updateBroadcastLayout(String, StreamCompositionLayout).OpenTok#setArchiveLayout(String, ArchiveProperties)の代わりにVideoClient#updateArchiveLayout(String, StreamCompositionLayout).OpenTok#dial(String, String, SipProperties)の代わりにVideoClient#sipDial(SipDialRequest).Sipに置き換えた。SipResponse.
- について
listArchivesOpenTokのさまざまなパラメータを持つメソッドは、次のように置き換えられました。VideoClient#listArchives(ListStreamCompositionsRequest)オプションを制御する。- その返事は
List<Archive>の代わりにArchiveList.使用するCollection#size()の代わりにArchiveList#getTotalCount()で要素数を求める。
- その返事は
OpenTok#setStreamLayouts(String, StreamListProperties)の代わりにVideoClient#setStreamLayout(String, List<SessionStream>)(またはVideoClient#setStreamLayout(String, SessionStream...)便宜上)。OpenTok#signal(String, String, SignalProperties)そしてOpenTok#signal(String, SignalProperties)の代わりにVideoClient#signal(String, String, SignalRequest)そしてVideoClient#signalAll(String, SignalRequest)それぞれ- 得られたトークンの構造は
generateTokenの方法OpenTokそしてVideoClientは異なる。VonageはJWTを使用しているが、OpenTokはカスタムソリューションを使用している。 OpenTok#startCaptions(String, String, CaptionProperties)の代わりにVideoClient#startCaptions(CaptionsRequest).CaptionPropertiesに置き換えた。CaptionsRequest.Captionに置き換えた。CaptionsResponse.CaptionsRequestには列挙型を使用する。languageCodeプレーンな文字列の代わりに。- について
tokenそしてsessionIdに設定する必要がある。CaptionsRequest.Builderオブジェクトがある。
OpenTok#connectAudioStream(String, String, AudioConnectorProperties)の代わりにVideoClient#connectToWebsocket(ConnectRequest).AudioConnectorPropertiesに置き換えた。ConnectRequest.AudioConnectorに置き換えた。ConnectResponse.
OpenTok#startRender(String, String, RenderProperties)の代わりにVideoClient#startRender(RenderRequest).RenderPropertiesの代わりにRenderRequest.nameパラメータはPropertiesクラスはトップレベルのRenderRequest.Builder.
Renderの代わりにRenderResponse.resolutionは文字列ではなく列挙型になった。
OpenTok#listRenders(Integer, Integer)の代わりにVideoClient#listRenders(ListStreamCompositionsRequest).- これは、更新された
listBroadcastsそしてlistArchivesメソッド(上記参照)。
- これは、更新された
テストに関する推奨事項
移行中も移行後も、スムーズな移行には徹底したテストが欠かせない。これには単体テストだけでなく、統合テストや回帰テストも含まれます。また、自動化されたテストがあなたが考えているとおりに実行されていることを確認するため、あるいはテストが検出できなかったかもしれない問題を検出するために、移行前と移行後に少なくとも1回はアプリケーションフローを手動でテストする価値があります。等価テストを作成することを検討してもよいでしょう。これは、OpenTok と Vonage Video の両方のバージョンのアプリケーションが同じことを行うことを保証するスイートを作成することです。移行が完了し、OpenTok バージョンのアプリケーションが削除されたら、これらのテストは破棄することができます。
トラブルシューティング&サポート
Vonage Java Server SDKは、ランタイムエラーが発生した場合、スタックトレースで有用な例外メッセージを提供するように努めています。これらを注意深く調べて原因を特定してください。
サポート・チャンネル
Vonage Videoへの移行に関する一般的なヘルプやディスカッションについては、以下をご覧ください。 コミュニティSlackの#Video-APIチャンネルVonage のスタッフや他のユーザーから回答を得ることができます。また、Xでもお問い合わせいただけます。 VonageDev. Video API 自体に問題がある場合の主な連絡先は次のとおりです。 support@api.vonage.com.SDKのバグを発見した場合は、以下の連絡先までご連絡ください。 GitHubに再現するための手順をissueとして提出する。.