
Compartir:
Michael es el constructor calvo y barbudo. Aprovechando sus 20 años de experiencia en desarrollo de software y DevOps, este desarrollador con problemas de folclore pasa sus días centrado en ayudar a los demás a tener éxito.
Prohibir los trolls Añadir moderación a la Video API
Tiempo de lectura: 3 minutos
¡Bienvenido a Internet! Si llevas aquí más de cinco minutos, probablemente te habrás dado cuenta de que la moderación de usuarios es muy necesaria. Lo mismo ocurre en las sesiones de la Video API. Los malos actores pueden interrumpir reuniones y presentaciones si se les deja a su aire. En este post, vamos a discutir algunas maneras de mantener tus sesiones de Video API seguras para todos.
Fuera de límites
Hay algunos procesos que deberías poner en marcha y que quedan fuera de los límites de este artículo. Discutiremos algunos de ellos conceptualmente, pero los detalles de implementación dependen de la arquitectura de sus aplicaciones.
Te vas de aquí
Cuando elimine a alguien de una sesión de la Video API, asegúrese de que no sólo lo está desconectando de la sesión de vídeo, sino que también lo está redirigiendo y/o revocando su autenticación.
... Y quédate fuera
Para que un usuario se una a una sesión de Video, necesita un token. Asegúrate de identificar a quién asignas los tokens. Esto puede hacerse mediante un sistema de autenticación o, si los usuarios se unen de forma anónima, por su dirección IP. Luego, cuando elimines a un usuario, registra que "usuario X" fue eliminado de una sesión.
Una vez que sepa quiénes son los malos actores, podrá evitar que se vuelvan a emitir tokens inadvertidamente y se les permita volver a entrar en la sesión.
Tomar el control
Una vez sentadas las bases anteriores, hablemos de las capacidades integradas de la Video API para la moderación de usuarios.
¿Quieres saltar hasta el final? Puedes encontrar un ejemplo funcional y todo el código fuente de este tutorial en GitHub.
Shhhhhh
Todos hemos estado en esa llamada en la que alguien se ha dejado el micrófono sin silenciar. Tanto si se trata de una persona como de una audiencia, necesitamos la capacidad de silenciar a los asistentes. Para ello, utilizaremos la función de señalización de la Video API. Empecemos por silenciar a una persona.
En la interfaz de usuario de tu cliente, querrás añadir código que detenga la publicación de audio. En primer lugar, asegúrate de conservar tu editor cuando lo inicialices. Esto te permitirá acceder al objeto más tarde y publicar/despublicar tu audio y vídeo.
A continuación, añadiremos un método que impedirá que el editor publique audio bajo demanda.
let publisher = OT.initPublisher('publisher');
function muteAudio() {
publisher.publishAudio(false);
}Podemos llamar a este método desde la interfaz de los invitados si deciden silenciar su micrófono, pero también lo utilizaremos cuando recibamos señales del anfitrión. Vamos a añadir algo de código para escuchar esas señales.
Una vez que haya creado la sesión, añada lo siguiente para comenzar a escuchar señales personalizadas con mute como tipo. Cuando recibamos una señal para mutellamaremos a nuestra función muteAudio para detener la publicación de audio.
// 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();
});Con nuestro lado del cliente listo, vamos a añadir algo de lógica a la interfaz de los anfitriones para enviar esas señales. Empezaremos añadiendo un método para manejar toda nuestra señalización.
/**
* 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');
}
});
};Ahora podemos añadir funciones para comunicarnos con los miembros de la sesión de la Video API. Vamos a añadir dos métodos para indicarles que silencien su audio. Una de las funciones enviará una señal a un invitado específico, y la otra se enviará a todos los invitados de la sesión.
/**
* 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', '');
};El único paso restante sería vincular un evento, como el clic de un botón, para llamar a esas funciones.
No quiero ver eso
Hay varias razones por las que puede necesitar impedir que un invitado publique su flujo de vídeo. Afortunadamente, el objeto de sesión de la Video API proporciona un método para hacerlo. Sin embargo, debe tener asignado el rol de moderador en el token que utilizó para unirse a la sesión. Para asegurarse de que puede llamar al método forceUnpublish en una sesión, compruebe primero las capacidades de los usuarios. El siguiente método muestra cómo comprobar las capacidades y llamar al método forceUnpublish método.
/**
* 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);
}
}; El martillo de las prohibiciones
Desgraciadamente, hay ocasiones en las que un invitado debe ser retirado de una sesión. El equipo detrás de la Video API se ha asegurado de que esto sea posible con el método forceDisconnect método. Al igual que el método forceUnpublish debe estar conectado como moderador para poder utilizarlo. La función que se muestra a continuación comprueba esa capacidad y luego fuerza la desconexión de un invitado de la sesión.
/**
* 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);
}
}; Resumen
Cuando se implementa con procesos y políticas sólidas, la Video API te brinda las herramientas que necesitas para mantener tus sesiones de video seguras para todos. ¿Quieres obtener más información sobre cómo implementar la moderación en tus sesiones de Video API de Vonage? Consulta los recursos a continuación: