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

Verbietet die Trolle! Hinzufügen der Moderation zur Video-API

Zuletzt aktualisiert am November 12, 2020

Lesedauer: 3 Minuten

Willkommen im Internet! Wenn Sie schon länger als fünf Minuten hier sind, haben Sie wahrscheinlich festgestellt, dass die Moderation der Benutzer sehr wichtig ist. Das Gleiche gilt für Video-API-Sitzungen. Bösewichte können Sitzungen und Präsentationen stören, wenn sie sich selbst überlassen werden. In diesem Beitrag werden wir einige Möglichkeiten erörtern, wie Sie Ihre Video-API-Sitzungen für alle sicher halten können.

Außerhalb der Grenzen

Es gibt einige Prozesse, die Sie einrichten sollten, die aber den Rahmen dieses Beitrags sprengen würden. Wir werden einige von ihnen konzeptionell besprechen, aber die Einzelheiten der Implementierung hängen von der Architektur Ihrer Anwendungen ab.

Du bist raus hier

Wenn Sie jemanden aus einer Video-API-Sitzung entfernen, stellen Sie sicher, dass Sie ihn nicht nur von der Videositzung trennen, sondern ihn auch umleiten und/oder seine Authentifizierung widerrufen.

... und draußen bleiben

Damit ein Benutzer an einer Videositzung teilnehmen kann, benötigt er ein Token. Stellen Sie sicher, dass Sie wissen, wem Sie die Token zuweisen. Dies kann über ein Authentifizierungssystem erfolgen oder, wenn Benutzer anonym teilnehmen, über ihre IP-Adresse. Wenn Sie dann einen Benutzer entfernen, halten Sie fest, dass "Benutzer X" aus einer Sitzung entfernt wurde.

Sobald Sie wissen, wer die "bösen Buben" sind, können Sie verhindern, dass sie versehentlich Token neu ausgeben und wieder in die Sitzung einsteigen.

Die Kontrolle übernehmen

Mit den oben genannten Grundlagen können wir nun die in die Video-API integrierten Funktionen zur Benutzermoderation besprechen.

Möchten Sie zum Ende springen? Sie finden ein funktionierendes Beispiel und den gesamten Quellcode für dieses Tutorial auf GitHub.

Schhhhhh

Wir alle haben schon einmal ein Gespräch geführt, bei dem jemand sein Mikrofon nicht stummgeschaltet hat. Egal, ob es sich um eine einzelne Person oder um ein Publikum handelt, wir brauchen die Möglichkeit, Teilnehmer stumm zu schalten. Dazu verwenden wir die Signalisierungsfunktion der Video-API. Beginnen wir mit dem Stummschalten einer Person.

In Ihrer Client-Benutzeroberfläche müssen Sie Code hinzufügen, der die Veröffentlichung von Audiodaten stoppt. Stellen Sie zunächst sicher, dass Sie Ihren Verleger bei der Initialisierung beibehalten. So können Sie später auf das Objekt zugreifen und Ihre Audio- und Videodaten veröffentlichen bzw. die Veröffentlichung aufheben.

Dann fügen wir eine Methode hinzu, die den Verlag daran hindert, Audio on Demand zu veröffentlichen.

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

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

Wir können diese Methode über die Schnittstelle der Gäste aufrufen, wenn diese ihr Mikrofon stummschalten wollen, aber wir werden sie auch verwenden, wenn wir Signale vom Gastgeber empfangen. Fügen wir etwas Code hinzu, um auf diese Signale zu hören.

Sobald Sie die Sitzung erstellt haben, fügen Sie Folgendes hinzu, um auf benutzerdefinierte Signale mit mute als Typ. Wenn wir ein Signal an muteerhalten, rufen wir unsere muteAudio Funktion auf, um die Veröffentlichung von Audio zu beenden.

// 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();
});

Nachdem unsere Client-Seite fertig ist, fügen wir der Schnittstelle der Hosts eine Logik hinzu, um diese Signale zu senden. Zunächst fügen wir eine Methode hinzu, die alle unsere Signale verarbeitet.

/**
 * 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');
    }
  });
};

Jetzt können wir Funktionen hinzufügen, um mit den Mitgliedern der Video-API-Sitzung zu kommunizieren. Fügen wir zwei Methoden hinzu, um ihnen zu signalisieren, dass sie ihr Audio stummschalten sollen. Eine der Funktionen sendet ein Signal an einen bestimmten Gast, die andere wird an alle Gäste in der Sitzung gesendet.

/**
 * 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', '');
};

Der einzige verbleibende Schritt wäre die Bindung eines Ereignisses, z. B. eines Schaltflächenklicks, um diese Funktionen aufzurufen.

Das will ich nicht sehen

Es gibt verschiedene Gründe, warum Sie die Veröffentlichung des Videostreams eines Gastes stoppen müssen. Glücklicherweise bietet das Sitzungsobjekt der Video-API eine Methode, um dies zu tun. Sie müssen jedoch im Token, das Sie zum Beitritt zur Sitzung verwendet haben, die Moderatorenrolle zugewiesen haben. Um sicherzustellen, dass Sie die forceUnpublish Methode für eine Sitzung aufrufen können, überprüfen Sie zunächst die Fähigkeiten der Benutzer. Die folgende Methode zeigt, wie Sie sowohl Ihre Fähigkeiten überprüfen als auch die forceUnpublish Methode.

/**
 * 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);
  }
};

Bringt den Verbotshammer zum Einsatz

Leider kommt es manchmal vor, dass ein Gast aus einer Sitzung entfernt werden muss. Das Team hinter der Video-API hat dafür gesorgt, dass dies mit der forceDisconnect Methode. Wie die Methode forceUnpublish Methode müssen Sie als Moderator verbunden sein, um sie zu verwenden. Die unten stehende Funktion prüft diese Fähigkeit und erzwingt dann die Trennung eines Gastes von der Sitzung.

/**
 * 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);
  }
};

Einpacken

Wenn die Video-API mit soliden Prozessen und Richtlinien implementiert wird, gibt sie Ihnen die Werkzeuge an die Hand, die Sie benötigen, um Ihre Videositzungen für alle sicher zu halten. Möchten Sie mehr über die Implementierung von Moderation in Ihren Vonage Video API-Sitzungen erfahren? Sehen Sie sich die folgenden Ressourcen an:

Teilen Sie:

https://a.storyblok.com/f/270183/225x225/b0360f94ad/michaeljolley.png
Michael JolleyVonage Ehemalige

Michael ist der kahlköpfige, bärtige Baumeister. Mit seiner 20-jährigen Erfahrung in der Software-Entwicklung und DevOps verbringt er seine Tage damit, anderen zum Erfolg zu verhelfen.