ノード用Vonageビデオ移行ガイド

からの移行 opentok への @vonage/video または @vonage/server-sdk

はじめに

目的

OpenTok Node SDKはメンテナンス・モードに入っています。 Video SDK に移行し、Vonage クレデンシャルをすべての API で使用できるようになりました。

スコープ

を維持する。 @vonage/server-sdk パッケージを可能な限り小さくするため、Node SDKは小さなモジュールに分割された。 を小さなモジュールに分割しました。つまり @vonage/video を、SDK全体ではなくプロジェクトに追加する。どちらのルートを選択するにしても LTS バージョンのNodeJS がサポートされます(執筆時点では、最小バージョンは18です)。SDKは は、ESM と CJS Node モジュールの両方をサポートします。

この文書では、CJSモジュールとしてフルSDK をCJSモジュールとして使用します。 async/await よりも冗長ではないので、こちらも使用されます。 を使う promises.そのことを覚えておいてほしい。 async/await は単なる構文上の糖分 に過ぎない。機能に違いはない。この文書では に対する最新の ECMAScript サポートも使用します。 const そして let また "太い矢印 "機能を使う。

NodeSDK は Typescript で書かれていますが、これは必須ではありません。Typescript は、使用法を適切に表示するために、あなたの推奨する IDE 用の定義ファイルを提供します。

前提条件

OpenTokからNode SDKに移行するためには、どのようにプロミス (または async/await)が動作します。コールバックはサポートされなくなりました。

リソース

Vonage Video SDKソースコード Video API ドキュメント Video API 仕様

移行計画

影響を評価する

OpenTok SDK はコールバックを使用して記述されています。つまり、移行には プロジェクトの大幅な変更が必要になります。関数をどのように構成するかにもよりますが これは難しいことです。たとえば、セッションの作成を見てみましょう。

ノードSDKの場合は、次のように簡単である:

try {
    const session = await vonage.video.createSession(
        {} // session options
    );
    console.log(session.sessionId);
} catch (err) {
    console.error(err);
}

以前は、同じタスクを達成するためにコールバックが必要だった:

OT.createSession(
    {}, // session options
    function (err, session) {
        if (err) {
            console.error(err)
            return;
        }
        
        console.log(session.sessionId);
    }
);

おわかりのように、これはあなたのプロジェクトがどのように機能するかという、設計上の大きなパラダイムシフトである。 もしあなたのプロジェクトが他のパッケージに依存しており、そのパッケージが promisesを使うことができる。 Promise.resolve 約束を強制的に解消させるためだ。しかし、この場合 アプリケーションはSDKがAPIコールを完了するまで待たなければならないからである。 呼び出しが完了するのを待つ必要があるからです。

にどうしても変換できない場合 async/await移行はできない。

タイムライン

移行を完了するために必要な時間を考慮に入れてください。これは プロジェクトの経験やその影響、そしてテストに左右される。 OpenTokとVonage Video SDK間の同等性をVerifyできるように、優れたテスト・スイートを用意することが重要です。 OpenTokとVonage Video SDKの間の同等性を検証できるように、優れたテスト・スイートを用意することが重要です。移行にかかる時間は 移行にかかる時間は、OpenTok SDK が使用される場所の Numbers にほぼ比例します。 移行にかかる時間は、OpenTok SDK がコード内で使用されている場所の数と、使用されている機能の種類にほぼ比例します。 に比例します。APIコールの中には、他のものより簡単に置き換えられるものもあります。

パッケージ・アップデート

ビデオパッケージを更新するには、以下の方法でインストールできます。 npm または yarn このように:

npm install @vonage/server-sdk
yarn install @vonage/server-sdk

スタンドアローン・モジュールをインストールしたい場合(Typescript ユーザーもまた をインポートする必要があります。 @vonage/auth ビデオクライアントを作成するため):

npm install @vonage/video
yarn install @vonage/video

認証の変更

OpenTokとNode SDKの両方で認証が行われます、 そのため、初期化時にアカウント情報を一度だけ提供する必要があります。 違いは、OpenTokではAPIキーとシークレットが必要なのに対し Node SDKのVideo APIでは、アプリケーションIDとその秘密鍵を提供する必要があります。 秘密鍵を提供する必要があります。VonageとOpenTokの両方がトークンベースの認証を使っているのに対して、Vonageのトークンはトークンです、 Vonageのトークンは JWT 一方、OpenTokはカスタムフォーマットを使用しています。 APIキーとシークレットを VonageClient と同じように これは Video API ではなく、他の Vonage API に使用されます。そのため アプリケーションを作成するか、既存のアプリケーションを使用する必要があります。

からアプリケーションを作成できます。 Vonageダッシュボード. アプリケーションがビデオ機能を有効にしていることを確認してください。 をクリックする。 既存のアプリケーションの「Edit(編集)」をクリックして、そのアプリケーションの機能とクレデンシャルを表示します。 ここから、'Generate public and private key'をクリックする。これは一度だけ行ってください。 これを行うたびに認証情報が変更され、既存の鍵ペアが壊れてしまうからです。 既存のキー・ペアが壊れてしまうからだ。これをクリックすると、秘密鍵がダウンロードされます。 このファイルをテスト用に安全な場所に置いてください。 秘密鍵を共有したり、公開したりしないでください。 秘密鍵を共有したり、公開したりしないでください! 秘密鍵は、事実上、あなたのアプリケーションの「パスワード」となる。 アプリケーションの "パスワード "なので、慎重に扱わなければならない。

アプリケーションの設定に関する詳しいガイダンスについては、以下を参照してください。 入門ガイド.

アプリケーションを作成し、秘密鍵をダウンロードしたら、次にその情報をクライアントに渡します。 その情報をクライアントに渡す:

const { Vonage } = require('@vonage/server-sdk')

const vonage = new Vonage({
  appId: 'Your application id',
  privateKey: 'Your private key',
});

マイグレーション戦略

コールバックからプロミスに移行するのは簡単なことではありません。あなたのプロジェクトでは プロジェクト全体がコールバックを使っている可能性があります。また、サードパーティの パッケージを使っているかもしれない。そのような場合は 各APIコールを一度に1つずつ呼び出すのがベストである。

内蔵の util.promisify ユーティリティが常に機能するとは限らない。 動作するとは限りません。複数のパラメータを返すコールバックもあります。 util.promisify は対応できない。

変更された方法

オープントックメソッド ボンテージ方式 備考
createSession() createSession() について mediaMode オプションは現在「有効」または「無効」である。
generateToken() generateClientToken() このメソッドは、その機能をよりよく反映させるために名前が変更された。
listArchives() searchArchives() このメソッドの名前を変更しました。自動ページ分割が有効になっていない
setArchiveLayout() updateArchiveLayout() このメソッドは、その機能をよりよく反映させるために名前が変更された。レイアウトのための複数のパラメータは、単一の引数に置き換えられました。 ArchiveLayout
signal() sendSignal() このメソッドは、その機能をよりよく反映させるために名前が変更された。
forceDisconnect() disconnectClient() このメソッドは、その機能をよりよく反映させるために名前が変更された。
getStream() getStreamInfo() このメソッドは、その機能をよりよく反映させるために名前が変更された。
listStreams() getStreamInfo() この方法は削除された、 getStreamInfo() は、2 番目の引数として 1 つが指定されなければ、すべてのストリームを返します。

テストに関する推奨事項

移行中も移行後も、スムーズな移行には徹底したテストが欠かせない。 移行をスムーズに行うためには、徹底したテストが不可欠です。これには単体テストだけでなく、統合テストや回帰テストも含まれる。 回帰テストも含まれます。また、自動化されたテストを確実にするために、移行前後に少なくとも1回は、アプリケーションフローを手動でテストする価値があります。 自動化されたテストが、あなたが考えているとおりに実行されていることを確認するためです。 自動化されたテストが、あなたが考えているとおりに実行されていることを確認するため、あるいは、テストが発見できなかったかもしれない問題を発見するために を発見するためです。等価テストを作成することを検討してもよいでしょう。これは アプリケーションの OpenTok バージョンと Vonage Video バージョンの両方が、同じことを行うことを保証するスイートを作成することです。 を作成することです。移行が完了し 移行が完了し、OpenTok バージョンのアプリケーションが削除されたら、これらは破棄されます。

サポート・チャンネル

Vonage Videoへの移行に関する一般的なヘルプやディスカッションについては、以下をご覧ください。 をご覧ください。 コミュニティSlackの#Video-APIチャンネル, Vonage のスタッフや他のユーザーから回答を得ることができます。

Xでもお問い合わせいただけます。 VonageDev.

Video API自体に問題がある場合の主な連絡先は以下の通りです。 support@api.vonage.com.

直接サポートスラック Vonage デベロッパー Slack

SDKのバグを発見した場合は、次のページでチケットを発行してください。 Githubに再現するためのステップをissueとして提出する。

最後に、ビデオモジュールは、自動生成されたドキュメントを ウィキ セクションにある。