Video APIにおけるイベントの仕組み

Vonage Video API はイベント駆動型です。セッション、ストリーム、またはオプション・モジュールに変更があるたびに、クライアント SDK オブジェクト(Session、Publisher、Subscriber)および登録したサーバー・エンドポイントに、ドキュメント化されたコールバックが発行されます。 これらのコールバックにハンドラを配線し、後で Video Inspector や Archiving Inspector などのツールで確認することで、即座に対応し、参加者に情報を提供し、セッションの健全性の監査証跡を維持することができます。

ビデオセッションにおけるイベントの流れ

  1. つながって、参加する: クライアントはセッションに接続し、ストリームの公開や購読を開始する。
  2. ライフサイクルイベントを発する: SDKオブジェクト(Session, Publisher, Subscriber, Streamなど)とオプションのモジュールで構成される。 アーカイビング, ブロードキャスト/ライブ・ストリーミング, エクスペリエンス・コンポーザー, ライブキャプション, トランスクリプションそして SIP相互接続 - ライフサイクルとメディアの変更を記述するイベントをディスパッチする(完全なカタログは以下のオプショナルモジュールの表を参照)。
  3. イベントを派遣する: Vonageクラウドはイベントを他の参加者に転送し、設定されている場合はWebhookエンドポイントに転送します。
  4. あなたのアプリにReactを: クライアントでUIの状態を更新し、サーバーでビジネスロジックをトリガーし、後で分析するために注目すべきイベントを記録します。これらの機能を組み合わせることで、統一されたイベントモデルを通じて、観察、応答、回復を動的に行うことができます。

ビデオイベントの起源

クライアントSDK

注: このガイドでは、代表的なクライアントとサーバーのイベントファミリーを紹介します。詳細は Client SDKの概要 プラットフォーム別のイベント参考資料へのリンクはこちら。

セッション

  • ライフサイクル: sessionConnected, connectionDestroyed.
  • ストリームが変わる: streamCreated, streamPropertyChanged.
  • シグナリング: signal, signal:type.
  • オプションのモジュール: アーカイブ、トランスクリプション、ライブキャプション、ブロードキャストコントロールのためのクライアント向けコールバック。全機能については、下記のモジュールガイドをご覧ください。

出版社

  • メディアの状態 videoEnabled / videoDisabled, audioEnabled / audioDisabled.
  • ネットワーク/クオリティ networkQualityLevelChanged, videoDisableWarning.
  • オプションのモジュール: デバイス許可プロンプト (accessDialogOpened, accessDenied)と診断(audioLevelUpdated)は出版ガイドに住んでいる。

購読者

  • メディアの状態 videoEnabled / videoDisabled.
  • ネットワーク/クオリティ videoDisableWarning, videoDisableWarningLifted.
  • オプションのモジュール: audioLevelUpdatedレイアウトコールバック、その他のサブスクライバーヘルパーはカスタマイズガイドを参照してください。

コールバック・ファミリー

家族 発射時 参考
セッション・モニタリング セッションの開始/停止、接続/ストリームの作成/破棄 セッション・モニタリング・ガイド
アーカイブ アーカイブのライフサイクル:開始、停止、失敗 アーカイブガイド
ブロードキャスト ブロードキャストのライフサイクル:開始、停止、失敗 放送ガイド
エクスペリエンス・コンポーザー コンポーザーのライフサイクル/ステータスの更新 エクスペリエンス・コンポーザー・ガイド
ライブ・キャプション 字幕ペイロード配信 ライブ・キャプション・ガイド
トランスクリプション 成績証明書の発行状況 テープ起こしガイド
SIP相互接続 SIPコールのライフサイクル:インバウンド/アウトバウンド招待、切断 SIPガイド

観測可能なツール

クライアント・イベント・ハンドラの操作

イベントハンドラのパターンは、SDK間で類似しています。以下の例ではJavaScript SDKを使用しています:

session.on('streamCreated', event => {
  const stream = event.stream;
  session.subscribe(stream, 'subscriberContainer', {
    insertMode: 'append',
    width: '100%',
    height: '100%'
  });
});

publisher.on('networkQualityLevelChanged', event => {
  updateNetworkBadge(event.networkQualityLevel);
});

session.on('signal:layout', event => {
  applyLayout(event.data);
});

同じパターンをネイティブSDK全体に適用する:iOS (OTSessionDelegate)、アンドロイド(Session.SessionListener)、ウィンドウズ(Session イベント・ハンドラ)、Linux (otc_session_callbacks)に相当するオブザーバーを各プラットフォームにバインドする。

全イベントリストについては、プラットフォームのリファレンスを参照のこと: JavaScriptセッションイベント, iOS OTSessionDelegate コールバック, アンドロイド Session.SessionListener, WindowsセッションAPIそして Linuxセッション・コールバック.

サーバー・コールバックの処理

  • にコールバックURLを登録する。 Video APIダッシュボード または Video REST API.
  • 着信リクエストの検証、再試行の実施、および以下のセクションで説明されている署名/バックオフポリシーの見直し。 ウェブフックの検証.
  • ペイロードの迅速な処理:作業をキューに入れ、次のように応答する。 200 OK 再試行がキューをブロックするのを避けるためである。
  • セッションID、接続ID、ストリームIDなどのメタデータと一緒にリクエストボディをログに記録することで、サーバーのコールバックとクライアント側のイベントを関連付けることができます。

反応する場所を選ぶ

  • クライアントで一時的なUXの更新を処理する: SDKイベントを使用して、UIインジケータ(ミュートアイコン、再接続バナー)を切り替えたり、ユーザーに更新を促したりします。
  • 持続的な問題をサーバーにエスカレーションする: ストリームや接続の失敗をバックエンドに転送し、オペレータに警告を発したり、自動化されたワークフローをトリガーします。
  • 監査データの永続化: 重要なコールバックを保存する。 sessionDestroyedアーカイブ failed)のコンプライアンスと事故後のレビューのために使用される。
  • 工具を使ってテストする: のセッションログを再生して問題を再現する。 ビデオ・インスペクター または インサイトAPI.

イベント参考チートシート

イベント・ファミリー イベント例 配送方法 典型的な反応
セッションのライフサイクル sessionConnected, connectionDestroyed, streamCreated クライアントSDK、セッション監視コールバック 参加者名簿の更新、UIのクリーンアップ、セッション状態の永続化
メディアの質 videoDisabled, networkQualityLevelChanged, reconnected クライアントSDK レイアウトの調整、警告の表示、音声のみのモードへの切り替え
アプリケーション信号 signal, signal:layoutカスタム・データ・チャンネル クライアントSDK UI状態の同期、アノテーションのブロードキャスト、メタデータの共有
レコーディングと放送 アーカイブまたはブロードキャスト・コールバックのステータス (started, stopped, failed) アーカイブとブロードキャスト・コールバック ステータスの表示、後処理のトリガー、アラートの発生
キャプションとテープ起こし トランスクリプション・コールバック・ステータス (completed) トランスクリプション・コールバック トランスクリプトをストレージにレンダリングする

その他のリソース