En una analizamos cómo agregar chat a una transmisión en vivo de Amazon Interactive Video Service (Amazon IVS). Las salas de chat son una gran parte de la creación de experiencias interactivas de transmisión en vivo, pero desafortunadamente vienen con la posibilidad inevitable de que algunos usuarios publiquen mensajes insensibles u ofensivos. En esta publicación, le mostraré una manera muy simple pero efectiva de moderar sus salas de chat de Amazon IVS para mantener las cosas divertidas y amigables. publicación reciente, Presentamos los controladores de revisión de moderación de chat Hay dos formas de abordar la moderación del chat: manual y automatizada. El método manual, que trataremos en una publicación futura, requiere que un moderador (el emisor u otro usuario designado) "marque" un mensaje de chat para eliminarlo a través de uno de los de SDK de chat de Amazon IVS. Marcar un mensaje envía un evento a todos los clientes WebSocket conectados que se pueden usar para actualizar o eliminar el mensaje ofensivo. El método automatizado, que cubriremos en esta publicación, nos permite utilizar una función AWS Lambda para realizar sustituciones en el mensaje de chat o rechazar la entrega según las necesidades comerciales de la aplicación. documentos Hay ventajas y desventajas tanto para la moderación manual como para la automática. Un "pro" de la moderación manual es que, dado que requiere la intervención humana, es menos probable que tenga "falsos positivos" que son posibles con la moderación automática. Otro aspecto positivo de la intervención manual es que, en general, los humanos son mejores que las máquinas para identificar mensajes que deben moderarse. Sin embargo, una "contra" de la moderación manual es que los mensajes solo se pueden eliminar que se hayan publicado en una sala de chat. Y como dice el refrán, "no se puede volver a poner la pasta de dientes en el tubo". En otras palabras, sus usuarios ya han visto mensajes potencialmente ofensivos; no puede hacer que "dejen de ver" un mensaje que ya hayan visto. después de Por otro lado, la moderación automática nos brinda la capacidad de rechazar (o censurar) mensajes dañinos antes de que se publiquen en una sala de chat. Pero, como se mencionó anteriormente, es muy difícil que una máquina modere correctamente los mensajes de chat con mucha precisión. ¿Alguna vez ha estado en una sala de chat o ha publicado un comentario en una publicación de blog que es puramente inocente y fue rechazado o censurado incorrectamente? Puede ser muy frustrante para un usuario de chat que envía un mensaje que dice "Esta persona sería un verdadero activo para nuestro equipo" solo para ver "Esta persona sería un verdadero ***et para nuestro equipo" publicado en la sala de chat ( o simplemente rechazado)! Dicho esto, el mejor enfoque para la moderación del chat es una decisión individual para su aplicación en función de su público objetivo y las necesidades comerciales. Sospecho que muchas aplicaciones que requieren moderación utilizarían en última instancia una combinación de moderación manual y automática. Ahora que hemos hablado sobre ambos enfoques posibles, profundicemos en cómo puede usar una función de AWS Lambda para realizar una moderación automática para su sala de chat de Amazon IVS. Adición de un controlador de revisión de mensajes Al crear (o actualizar) una sala de chat de Amazon IVS a través de la consola de Amazon IVS, la CLI de AWS o uno de los SDK de Amazon IVS, podemos especificar una función de AWS Lambda que servirá como nuestro controlador de revisión de mensajes. En esta publicación, nos centraremos en el uso de la consola de Amazon IVS, pero puede consultar la documentación correspondiente si desea utilizar otro método. Para agregar un controlador, desplácese hacia abajo hasta la sección* Controlador de revisión de mensajes* mientras crea o edita una sala de chat de Amazon IVS. De forma predeterminada, se seleccionará la opción 'Deshabilitado'. Cambiemos esto seleccionando . Manejar con AWS Lambda Esto nos presenta algunas opciones más. La primera opción, , nos permite elegir cómo queremos manejar las respuestas no válidas, los errores y los tiempos de espera de nuestra función de controlador. Nuevamente, esto depende de las necesidades de su negocio. Si prefiere rechazar los mensajes en este caso, seleccione . Si elige , es posible que se publiquen mensajes potencialmente dañinos en su sala de chat. Aquí es donde un enfoque combinado podría proporcionarle un "plan de respaldo" para que un moderador aún pueda eliminar los mensajes que el controlador no haya detectado por cualquier motivo. Para esta demostración, elegiré . A continuación, necesitaremos especificar la función AWS Lambda que actuará como nuestro controlador. Crearemos una nueva función a través de la consola para esta demostración, así que hagamos clic en . Fallback result Denegar Permitir Permitir Crear función Lambda Al hacer clic en este botón nos llevará a la lista de nuestras funciones actuales. En esta página, haga clic en . Crear función En la página siguiente, ingrese el nombre ivs-chat-moderation-function, deje los valores predeterminados seleccionados para el resto de las opciones y luego haga clic en . Crear función Ahora actualicemos el código de nuestra función. La nos dice que la función recibirá un objeto de evento en el siguiente formato: documentación { "Content": "string", "MessageId": "string", "RoomArn": "string", "Attributes": {"string": "string"}, "Sender": { "Attributes": { "string": "string" }, "UserId": "string", "Ip": "string" } } Para devolver un valor de nuestra función usando Node, debemos usar una función asíncrona (consulte la para obtener más información). El objeto que devolvamos debe usar el siguiente formato: documentación de AWS Lambda { "Content": "string", "ReviewResult": "string", "Attributes": {"string": "string"}, } El valor que establecemos para ReviewResult debe ser o y determinará si el mensaje se envía o no a la sala de chat. Podemos modificar el Contenido del mensaje según sea necesario, lo que significa que podemos eliminar o reemplazar contenido potencialmente ofensivo o insensible y que se publique el mensaje. Cualquier atributo adicional se puede pasar con . Si elige enviar un de , puede pasar un atributo de que se usará para devolver una respuesta al cliente, incluido el valor especificado como . ALLOW DENY ALLOW Attributes ReviewResult DENY Reason 406 Not Acceptable Reason Referirse a para obtener más información, incluidas las restricciones de longitud y los valores válidos. Documentación del controlador de revisión de mensajes de chat Ahora podemos modificar el código de la función para reemplazar una 'mala palabra' en el contenido entrante con asteriscos. exports.handler = async (event) => { return { ReviewResult: 'ALLOW', Content: event.Content.replace(/bad word/ig, '*** ****'), Attributes: { username: event.Attributes.username } }; }; Volvamos a nuestra sala de chat, actualice la lista de funciones, seleccione nuestra nueva función y haga clic en . Guardar cambios Ahora podemos publicar un mensaje en nuestra sala de chat y ver qué sucede. ¡Excelente! Nuestro controlador de mensajes de chat se invocó correctamente y nuestra 'mala palabra' se eliminó antes de que se publicara en la sala de chat. En realidad, le gustaría usar una solución mucho más sofisticada para reemplazar el texto dañino que la simple expresión regular que estoy usando arriba. Probé la biblioteca y descubrí que hace un gran trabajo censurando e identificando palabras profanas en un mensaje entrante. Siéntase libre de usar cualquier solución que funcione para usted, pero tenga en cuenta que su función debe devolver una respuesta dentro de los 200 ms o se agotará el tiempo de espera, por lo que las llamadas API de terceros pueden estar fuera de discusión. @2toad/blasfemia Aquí hay un ejemplo de un controlador que usa la para censurar palabras dañinas: @2toad/profanity exports.censorChat = async (event) => { console.log('censorChat:', JSON.stringify(event, null, 2)); return { ReviewResult: 'ALLOW', Content: profanity.censor(event.Content), Attributes: { username: event.Attributes.username } }; }; Y un ejemplo de rechazar un mensaje en lugar de censurar. exports.rejectInappropriateChat = async (event) => { console.log('rejectInappropriateChat:', JSON.stringify(event, null, 2)); const profane = profanity.exists(event.Content); return { ReviewResult: profane ? 'DENY' : 'ALLOW', Content: profane ? '' : event.Content, Attributes: { username: event.Attributes.username } }; }; Resumen En esta publicación, aprendimos sobre dos enfoques diferentes para moderar los mensajes de chat: manual y automatizado. Luego creamos una función de AWS Lambda y la asociamos con una sala de chat de Amazon IVS para realizar la moderación de chat automatizada. En una publicación futura, veremos cómo puede usar el SDK de chat de Amazon IVS para moderar manualmente los mensajes de chat. Si tiene alguna pregunta, deje un comentario o comuníquese conmigo en . Twitter