セッション監視

登録すると、リアルタイムのセッションイベントコールバックを受信し、アプリサーバーからセッションアクティビティを監視できます。

OpenTokプラットフォームを利用することで、開発者はアプリサーバー内から、 OpenTokクライアントSDKを使用しているクライアントの特定のアクティビティを監視できます。 OpenTok REST API を使用して コールバックを登録することで、OpenTok プロジェクト内のセッションが作成・破棄されたとき、 クライアントが接続・切断されたとき、 およびクライアントがセッションに対してストリームを公開・非公開にしたときに、 コールバック URL に HTTP POST リクエストが送信されます。 さらに、プロジェクトの OpenTok アーカイブに関連するイベントを監視するためのコールバックを登録することもできます。

コールバックの登録

セッションイベントやアーカイブのステータス更新に関する情報は、すべて サーバー内のHTTPエンドポイントに登録できます。登録された アクティビティが発生するたびに、OpenTokインフラストラクチャから エンドポイントに対してHTTPリクエストが送信されます。

コールバックを登録する:

  1. あなたのところへ Vonage Video API アカウントページ.

  2. コールバックを登録したい OpenTok プロジェクトを選択してください。

  3. セッション監視セクションでコールバックURLを設定します。

    安全なコールバック: ウェブフック・コールバック・リクエストを署名付きコールバックで保護することができます、 署名の秘密を使って参照 安全なコールバック.

アーカイブのコールバックURLとブロードキャストのコールバックURLは、 セッションイベントのコールバックURLとは 別々に設定されます。アーカイブのコールバックURLは、[アーカイブ]セクションで設定してください。 Vonage Video API アカウントページ.

重要だ: リトライとバックオフメカニズムが使用されるため、セッション監視サービスは、過剰な配信失敗の場合に(以前のバージョンのように)イベント転送を無効にしなくなりました。サービスが中断されたり無効になったりしないので、セッション監視コールバックの中断に関するメールを受け取ることはなくなりました。

セッションの開始と停止の監視

クライアントが最初にセッションを使い始めたときと、セッションが使われなくなったとき、 sessionCreated そして sessionDestroyed イベントは登録したコールバック・エンドポイントに送られます。

セッション作成

このイベントは、最初のクライアントがセッションに接続したときに送られる。すべてのクライアントが切断された場合 ( セッション破棄)、クライアントは後で同じセッションに再接続できる。

個別のイベントごとに、サーバはHTTP POSTリクエストをあなたが指定したコールバックURLに送ります。リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、以下の形式のJSONオブジェクトです:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionCreated",
  "timestamp": 1470257688309,
  "createdAt": 1470257688309
}

JSONオブジェクトには以下のプロパティが含まれる:

  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "sessionCreated"

  • timestamp - コールバックイベントが送信されたタイムスタンプ

  • createdAt - 最初のクライアントがセッションに接続したときのタイムスタンプ

セッション破棄

このイベントは、セッションが使用されなくなったときに送られる:

  • すべての参加者がセッションから切断してから1分後。

  • Video APIセッションがタイムアウトすると、8時間後に発生することがあります。

  • Video APIサーバーが予期せずシャットダウンした場合。

このイベントがディスパッチされた後も、セッションを再利用することができる。クライアントは同じセッションIDを使ってセッションに再接続できます。 セッション作成 コールバックイベントが送られる。しかし、クライアントが新しいセッションIDを使用して再接続するようにしたほうがよい。

また、ベストプラクティスとして、クライアントには、から8時間以内に(新しいセッションIDを使用して)新しいセッションに再接続してもらうようにすべきです。 セッション作成 コールバック・イベント。

個別のイベントごとに、サーバはHTTP POSTリクエストをあなたが指定したコールバックURLに送ります。リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、以下の形式のJSONオブジェクトです:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionDestroyed",
  "timestamp": 1470258896953,
  "createdAt" : 1470258896953,
  "reason" : "clientDisconnected"
}

JSONオブジェクトには以下のプロパティが含まれる:

  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "sessionDestroyed"

  • timestamp - コールバックイベントが送信されたタイムスタンプ

  • createdAt - このセッションが使われなくなったタイムスタンプ

  • reason - これは以下のいずれかに設定されている:

    • "clientDisconnected" - すべてのクライアントがセッションから切断された。

    • "forceDisconnected" - モデレーターがクライアントをセッションから切断した。またはセッションがタイムアウトした。または Video API サーバーが予期せずシャットダウンした。

    • "mediaIdle" - 接続後4時間以内にストリームを公開または購読しなかったため、すべてのクライアントがセッションから切断されました。

    • "serverRotation" — サーバーのローテーションにより、すべてのクライアントがセッションから切断されました。セッション移行を使用するようにクライアントを設定することで、サーバーのローテーション中にクライアントが切断されるのを防ぐことができます。詳しくは サーバーのローテーションとセッションの移行.

セッション通知イベント

について sessionNotification イベントは、あるセッションの Video API サーバー群のローテーションが予定されているときに送信されます。このイベントは、予定されているローテーションの 4 時間前と 1 時間前に送信されます。

について sessionNotification イベントは、指定したセッション・モニタリング・コールバック URL に送られる HTTP POST リクエストです。リクエストの Content-Type は application/json です。リクエストのデータは、以下の形式のJSONオブジェクトです:

{
  "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
  "projectId": "123456",
  "event": "sessionNotification",
  "reason": "serverRotation",
  "timestamp": 1470282888309,
  "remainingTime": 3600,
  "createdAt": 1470257688309
}

JSONオブジェクトには以下のプロパティが含まれる:

  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "sessionNotification"

  • reason - サーバーローテーションイベントの場合、次のように設定される。 "serverRotation".(現在、これがセッション通知イベントの唯一のタイプである)。

  • remainingTime - セッションのサーバーがローテーションされるまでの残り時間(秒)。14,400秒(4時間)または3,600秒(1時間)に設定される。

  • timestamp - コールバックイベントが送信されたタイムスタンプ

  • createdAt - 最初のクライアントがセッションに接続したときのタイムスタンプ

参照 サーバーのローテーションとセッションの移行 Video APIサーバーのローテーションの詳細と、サーバーのローテーションが発生したときにクライアントの接続を維持する方法については、「Video APIサーバーのローテーションと、サーバーのローテーションが発生したときにクライアントの接続を維持する方法」を参照してください。

接続アクティビティの監視

適切に登録されると、OpenTokのインフラストラクチャは、単一のプロジェクト内のすべてのセッションに対して確立(および切断)されたすべての接続について、HTTPリクエストを送信できるようになります。 これは、追加の接続を必要とせず、またエンドポイントから直接レポートを行うことなく、ユーザーの接続状況を追跡するのに特に役立ちます。

クライアントが connectionCreated そして connectionDestroyed 他のクライアントがセッションに接続したり切断したりした際の イベントとして、これらの イベントが、登録済みのコールバックエンドポイントに送信されます。

コネクションの作成

個別のイベントが発生するたびに、サーバーは指定されたURLに対してHTTP POSTリクエストを送信します。 リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、 以下の形式のJSONオブジェクトです:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "connectionCreated",
    "timestamp": 1470257688309,
    "connection": {
        "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
        "createdAt": 1470257688143,
        "data": "TOKENDATA"
    }
}

JSONオブジェクトには以下のプロパティが含まれる:

  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "connectionCreated"

  • timestamp — Unixエポックからの経過ミリ秒数

  • connection - 以下のプロパティを含む、接続を定義するオブジェクト:

    • id - 接続ID

    • data — 接続データ(参照: 接続 データ)

    • createdAt — このオブジェクトが作成された時刻

接続破壊

個別のイベントが発生するたびに、サーバーは指定されたURLに対してHTTP POSTリクエストを送信します。 リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、 以下の形式のJSONオブジェクトです:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "connectionDestroyed",
    "reason": "clientDisconnected",
    "timestamp": 1470258896953,
    "connection": {
        "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
        "createdAt": 1470257688143,
        "data": ""
    }
}

JSONオブジェクトには以下のプロパティが含まれる:

  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • reason - の場合 connectionDestroyed イベントの場合、これは 以下のいずれかに設定されます:

    • "clientDisconnected" — クライアントがセッションから切断されました(たとえば、 OpenTok.js の `Session.disconnect()` メソッドを呼び出した場合や、ブラウザやアプリを閉じた場合など)。

    • "forceDisconnected" — モデレーターがクライアントをセッションから切断しました (OpenTok.js を呼び出すことで) Session.forceDisconnect() メソッド)。

    • "networkDisconnected" - ネットワーク接続が突然終了した(例えば、クライアントがインターネット接続を失った)。

    • "mediaIdle" — クライアントは、接続から4時間以内にストリームのパブリッシュまたはサブスクライブを行わなかったため、セッションから切断されました。

    • "serverRotation" — サーバーのローテーションにより、クライアントがセッションから切断されました。セッション移行を使用するようにクライアントを設定することで、サーバーのローテーション中にクライアントが切断されるのを防ぐことができます。詳しくは サーバーのローテーションとセッションの移行.

  • event - "connectionDestroyed"

  • timestamp — Unixエポックからの経過ミリ秒数

  • connection - 以下のプロパティを含む、接続を定義するオブジェクト:

    • id - 接続ID

    • data — 接続データ(参照: 接続 データ)

    • createdAt — このオブジェクトが作成された時刻

モニタリング・ストリーム

サーバーエンドポイントは、特定のプロジェクトのすべてのセッションにおけるストリームの アクティビティによってトリガーされたHTTPリクエストを受信するように登録することもできます。ストリームが作成または 破棄された際、そのリクエストには、イベントをトリガーしたストリームの ストリームデータおよび接続データが含まれます。

クライアントが streamCreated そして streamDestroyed セッションへの公開を行う他のクライアントに対する 応答として発生するイベントは、 登録済みのコールバックエンドポイントに送信されます。

ストリーム作成

個別のイベントが発生するたびに、サーバーは指定されたURLに対してHTTP POSTリクエストを送信します。 リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、 以下の形式のJSONオブジェクトです:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "streamCreated",
    "timestamp": 1470258860571,
    "stream": {
        "id": "63245362-e00e-4834-8371-9397deb3e452",
        "connection": {
            "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
            "createdAt": 1470257688143,
            "data": ""
        },
        "createdAt": 1470258845416,
        "name": "",
        "videoType": "camera"
    }
}
  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "streamCreated"

  • timestamp — Unixエポックからの経過ミリ秒数

  • stream - ストリームを定義するオブジェクト:

    • id - ストリームID

    • connection — このストリームに関連付けられた接続。このオブジェクトには、 以下のプロパティが含まれます:

      • id - 接続ID

      • data — 接続データ(参照: 接続 データ)

      • createdAt — 接続が確立された時刻

    • createdAt — ストリームが作成された時刻

    • name — もし名前があったとすれば、この ストリームに関連付けられたパブリッシャーが初期化された際に引き継がれた

    • videoType - このストリームで送信されるビデオのタイプ。 "camera", "screen", または "custom" (音声のみのストリームの場合は未定義)。

ストリーム破壊

個別のイベントが発生するたびに、サーバーは指定されたURLに対してHTTP POSTリクエストを送信します。 リクエストのContent-Typeはapplication/jsonです。リクエストのデータは、 以下の形式のJSONオブジェクトです:

{
    "sessionId": "2_MX4xMzExMjU3MX5-MTQ3MDI1NzY3OTkxOH45QXRr",
    "projectId": "123456",
    "event": "streamDestroyed",
    "reason": "clientDisconnected",
    "timestamp": 1470258896953,
    "stream": {
        "id": "63245362-e00e-4834-8371-9397deb3e452",
        "connection": {
            "id": "c053fcc8-c681-41d5-8ec2-7a9e1434a21e",
            "createdAt": 1470257688143,
            "data": ""
        },
        "createdAt": 1470258845416,
        "name": "",
        "videoType": "camera"
    }
}
  • sessionId - このイベントに関連付けられたセッションID

  • projectId - このイベントに関連するプロジェクトID

  • event - "streamDestroyed"

  • reason - の場合 streamDestroyed イベントの場合、これは 以下のいずれかに設定されます:

    • "clientDisconnected" — クライアントがセッションから切断されました(たとえば、 OpenTok.js を呼び出すことで Session.disconnect() メソッド)。

    • "forceDisconnected" — モデレーターが OpenTok.js を呼び出すことで、 ストリームの配信者をセッションから切断しました。 Session.forceDisconnect() メソッドを使用する。

    • "forceUnpublished" — モデレーターがOpenTok.jsを呼び出すことで、 配信の配信者に配信を停止させました Session.forceUnpublish() メソッドを使用する。

    • "mediaStopped" — ストリームを配信しているユーザーが画面共有を停止しました。この 値は、画面共有を行う動画ストリームでのみ使用されます。

    • "networkDisconnected" ネットワーク接続が突然切断されました(たとえば、クライアントの インターネット接続が切断された場合など)。

    • "serverRotation" — パブリッシングクライアントがセッションから切断されたため、ストリームが停止しました。その理由は Video API サーバーのローテーション.

  • timestamp — Unixエポックからの経過ミリ秒数

  • stream - ストリームを定義するオブジェクト:

    • id - ストリームID

    • connection — このストリームに関連付けられた接続。このオブジェクトには、 以下のプロパティが含まれます:

      • id - 接続ID

      • data — 接続データ(参照: 接続 データ)

      • createdAt — 接続が確立された時刻

    • createdAt — ストリームが作成された時刻

    • name — もし名前があったとすれば、この ストリームに関連付けられたパブリッシャーが初期化された際に引き継がれた

    • videoType - このストリームで送信されるビデオのタイプ。 "camera", "screen", または "custom" (音声のみのストリームの場合は未定義)。

モニタリング・アーカイブ

各アーカイブは、そのライフサイクルを通じて複数の状態を経ます。 ステータスの更新が行われるたびに、アーカイブのステータス登録が 行われているサーバーエンドポイントにHTTPリクエストが送信されます。これは特に、 アーカイブのアップロード後に後処理をトリガーしたり、アーカイブが永続 ストレージにアップロードされた後に必要な 管理タスクを実行したりするのに役立ちます。詳細については、 アーカイブのステータス の変更 OpenTokアーカイブに関する 開発者ガイドの該当セクション。

放送の監視

参照 ライブ・ストリーミング放送の状態変化を監視 OpenTokライブ配信開発者ガイドの該当セクション。

SIPコールの進行状況のモニタリング

OpenTokセッションへのSIP接続のステータス更新を監視できます。 詳しくは、 通話進行状況のモニタリング OpenTok SIP Interconnect 開発者ガイドの該当セクション。

モニタリング・エクスペリエンス・コンポーザー

エクスペリエンス・コンポーザーのステータス更新を監視できます。 ステータス コールバックの設定 セクションを参照してください。

ライブ・キャプションのモニタリング

ライブキャプションのステータスアップデートを監視できます。ライブキャプションの ライブ・キャプション・コールバック セクションを参照してください。