https://d226lax1qjow5r.cloudfront.net/blog/blogposts/ban-the-trolls-adding-moderation-to-the-video-api/blog_video-api_moderation_1200x600.png

荒らしを追放せよ!Video APIにモデレーションを追加する

最終更新日 November 12, 2020

所要時間:1 分

インターネットへようこそ!もしあなたが5分以上ここにいるなら、おそらくユーザーの節度がとても必要であることに気づいたでしょう。Video API セッションでも同じことが言えます。悪質な行為者は、放っておくと会議やプレゼンテーションを混乱させます。この投稿では、Video API セッションを安全に保つためのいくつかの方法について説明します。

アウト・オブ・バウンズ

この記事の範囲外ですが、導入すべきプロセスがいくつかあります。そのうちのいくつかについて概念的に説明するが、具体的な実装はアプリケーションのアーキテクチャに依存する。

あなたはここから出て行く

Video API セッションから誰かを削除する場合は、その人を Video セッションから切断するだけでなく、リダイレクトしたり認証を取り消したりしていることを確認してください。

...そして外出しない

ユーザーが Video セッションに参加するには、トークンが必要です。トークンを誰に割り当てるかを確認してください。これは認証システムで行うこともできますし、ユーザーが匿名で参加する場合はIPアドレスで行うこともできます。ユーザーを削除するときは、"ユーザーX "がセッションから削除されたことを記録してください。

悪質な行為者が誰であるかが分かれば、トークンを不用意に再発行してセッションに戻すことを防げます。

コントロールする

上記の基礎が整ったところで、Video API に組み込まれているユーザーモデレーション機能について説明しよう。

最後まで読み飛ばしたいですか?このチュートリアルの動作例とすべてのソースコードは GitHub.

シーッ

誰かがマイクをミュートしないまま通話した経験は誰にでもあるでしょう。それが一人であろうと聴衆であろうと、出席者をミュートする機能が必要です。そのために Video API のシグナリング機能を利用します。まずは個人をミュートするところから始めましょう。

クライアントUIに、オーディオのパブリッシュを停止するコードを追加します。まず、パブリッシャーを初期化する際に、パブリッシャーを保持するようにしてください。こうすることで、後でオブジェクトにアクセスし、オーディオやVideoの公開/非公開を切り替えることができます。

次に、パブリッシャーがオンデマンドでオーディオを公開しないようにするメソッドを追加します。

let publisher = OT.initPublisher('publisher');

function muteAudio() {
  publisher.publishAudio(false);
}

ゲストがマイクをミュートする場合は、ゲストのインターフェイスからこのメソッドを呼び出すことができますが、ホストからのシグナルを受信するときにもこのメソッドを使います。これらのシグナルをリッスンするコードを追加しましょう。

セッションを作成したら、以下を追加して、カスタム・シグナルのリッスンを開始する。 muteを追加します。にシグナルを受信すると muteシグナルを受信したら muteAudio関数を呼び出します。

// listens for the custom signal type 'mute' and 'muteAll' and 
// calls the muteAudio function to stop publishing audio to the session
session.on("signal:mute", function (event) {
  muteAudio();
});

クライアント側の準備ができたので、ホスト側のインターフェースにシグナルを送るためのロジックを追加しましょう。まず、すべてのシグナルを処理するメソッドを1つ追加します。

/**
 * Send a signal to all or specific members of the Video API session
 * @param {Object} session Video API session to send signal through
 * @param {String} type Type of signal being sent (the topic)
 * @param {String} data Payload to send with the signal
 * @param {Object} [to] An optional Video API connection or array of connections for use in sending to individual connections
 */
function signal(session, type, data, to) {
  const signalData = Object.assign({}, { type, data }, to ? { to } : {});
  session.signal(signalData, function (error) {
    if (error) {
      console.log(['signal error (', error.code, '): ', error.message].join(''));
    } else {
      console.log('signal sent');
    }
  });
};

これで、Video API セッションのメンバーと通信する関数を追加できる。音声をミュートするようにシグナルを送るメソッドを 2 つ追加してみましょう。関数の 1 つは特定のゲストにシグナルを送信し、もう 1 つはセッション内のすべてのゲストに送信されます。

/**
 * Mutes a subscriber in the session
 * @param {Object} subscriber The Video API subscriber object
 */
function muteSubscriber(subscriber) {
  signal(session, 'mute', '', subscriber.stream.connection);
};

/**
 * Mutes all guests in the session
 */
function muteAll() {
  signal(session, 'mute', '');
};

残る唯一のステップは、ボタンクリックのようなイベントをバインドして、それらの関数を呼び出すことだ。

見たくない

ゲストの動画ストリームの公開を停止する必要がある理由はいくつかあります。幸いなことに、Video API セッションオブジェクトにはそのためのメソッドが用意されています。ただし、セッションに参加する際に使用したトークンにモデレータの役割が割り当てられている必要があります。セッションで forceUnpublishメソッドを確実に呼び出せるようにするには、まずユーザーの能力をチェックします。以下のメソッドでは、能力のチェックと forceUnpublishメソッドを呼び出す方法を示します。

/**
 * Force un-publishes a subscriber in the session
 * @param {Object} subscriber The OpenTok subscriber object
 */
function unpublishSubscriber(subscriber) {
  if (session.capabilities.forceUnpublish == 1) {
    session.forceUnpublish(subscriber.stream);
  }
};

禁止令の鉄槌を下す

残念ながら、セッションからゲストを削除しなければならない場合があります。Video API の開発チームは、これを可能にするために forceDisconnectメソッドで可能にしています。メソッドと同様に forceUnpublishメソッドと同様、このメソッドを使用するにはモデレータとして接続する必要があります。以下の関数は、その機能をチェックし、ゲストをセッションから強制的に切断します。

/**
 * Disconnects a subscriber from the session
 * @param {Object} subscriber The OpenTok subscriber object
 */
function disconnectSubscriber(subscriber) {
  if (session.capabilities.forceDisconnect == 1) {
    session.forceDisconnect(subscriber.stream.connection);
  }
};

まとめ

Video API をしっかりとしたプロセスとポリシーで実装すれば、Video セッションを誰にとっても安全に保つために必要なツールが得られます。Vonage Video APIセッションにモデレーションを導入する方法についてもっと知りたいですか?以下のリソースをご覧ください:

シェア:

https://a.storyblok.com/f/270183/225x225/b0360f94ad/michaeljolley.png
Michael Jolleyヴォネージの卒業生

マイケルはハゲでヒゲのビルダー。ソフトウェア開発とDevOpsにおける20年の経験を生かし、他人の成功を助けることに集中する日々を送っている。