Los creadores son el alma de cualquier plataforma de contenido generado por el usuario (UGC). Uno de los desafíos de desarrollar una aplicación UGC de transmisión en vivo es brindarles a los creadores de contenido las herramientas que necesitan para aumentar su audiencia. Sin espectadores, los creadores no estarán motivados para crear contenido (y sin creadores motivados, no tendremos una plataforma). Una vez que los espectadores encuentren un creador con el que les encanta interactuar, se suscribirán a ese canal y esperarán sintonizarlo cada vez que ese creador esté en línea. Aquí es donde las cosas se complican, porque la mayoría de los espectadores no permanecerán conectados a nuestra aplicación abierta las 24 horas del día, los 7 días de la semana para comprobar si su creador favorito está en línea. Para alentarlos a regresar a nuestra plataforma, necesitamos crear un sistema de notificación para alertar a los espectadores cuando sus transmisiones favoritas estén en línea. Afortunadamente, esto es algo que es bastante fácil de construir con Amazon Interactive Video Service (Amazon IVS). En esta publicación, veremos cómo notificar a los espectadores cuando una transmisión de Amazon IVS está en línea.
Para crear esta característica, aprovecharemos el hecho de que Amazon IVS envía eventos de cambio sobre el estado de nuestras transmisiones a Amazon EventBridge. Esta integración se puede usar para muchos propósitos diferentes, ya que hay un montón de eventos que se publican para cada transmisión. Aquí hay una lista de algunos de los eventos que se publican:
Sesión Crear/Terminar
Transmisión Inicio/Fin/Error
Inicio/fin de grabación
Para obtener la lista completa de eventos, consulte la documentación .
Como puede suponer, el evento que aprovecharemos es el evento Inicio de transmisión . Vamos a crear una regla que se activará cada vez que comience nuestra transmisión.
Antes de crear una regla de EventBridge, debemos crear una función AWS Lambda a la que se llamará desde la regla (debe existir antes de que se pueda crear la regla). Usaremos el nuevo Nodo 18.x disponible para nuestra función.
Esta función será la forma en que enviamos notificaciones a los suscriptores cuando la transmisión se active. En su aplicación, puede utilizar cualquier método que funcione mejor para enviar la notificación. Si tiene una aplicación móvil o PWA, es posible que desee enviar una notificación automática. ¿Quizás sus suscriptores prefieren las notificaciones por correo electrónico? O tal vez quieras publicar un mensaje en una fuente de redes sociales o en un canal de Discord/Slack. ¿Quizás quiera usar Amazon SNS para enviar un mensaje SMS a los suscriptores? Hay toneladas de opciones diferentes aquí y no hay limitaciones. En mi caso, estoy usando Pushover para enviar una notificación push a mi dispositivo móvil. Pushover tiene una buena API basada en REST que es fácil de usar.
export const handler = async(event) => { // push notification using Pushover.net const formData = new FormData(); formData.append('token', process.env.PUSHOVER_APP_TOKEN); formData.append('user', process.env.PUSHOVER_USER_TOKEN); formData.append('title', `${event.detail.channel_name} is Live!!!`); formData.append('message', 'Watch now!'); formData.append('url', 'https://recursive.codes'); const pushoverResponse = await fetch('https://api.pushover.net/1/messages.json', { method: 'POST', body: formData }); };
Esta regla se puede crear con la CLI de AWS ( docs ), cualquiera de los SDK de AWS o la consola de AWS. Para esta publicación, nos centraremos en la consola. Inicie sesión en la consola de Amazon EventBridge, seleccione Regla de EventBridge y haga clic en Crear regla .
En la página siguiente, asigne a la regla un Nombre , una Descripción opcional, elija un Bus de eventos , seleccione Regla con un patrón de evento y haga clic en Siguiente .
Seleccione eventos de AWS o eventos de socios de EventBridge .
Si desea crear un evento de muestra con fines de prueba, seleccione Ingresar mi propio y pegue el siguiente patrón.
{ "version": "0", "id": "01234567-0123-0123-0123-012345678901", "detail-type": "IVS Stream State Change", "source": "aws.ivs", "account": "123456789012", "time": "2017-06-12T10:23:43Z", "region": "us-east-1", "resources": ["arn:aws:ivs:us-east-1:123456789012:channel/12345678-1a23-4567-a1bc-1a2b34567890"], "detail": { "event_name": "Stream Start" } }
En Método de creación , seleccione Usar formulario de patrón y, a continuación, un Origen de eventos de los servicios de AWS . Para el servicio de AWS , elija Servicio de video interactivo (IVS) . Finalmente, en Tipo de evento , elija IVS Stream Stage Change .
Podemos dejar el patrón de evento como está, o podemos limitar esta regla solo al evento de inicio de transmisión haciendo clic en Editar patrón y modificándolo para que tenga el siguiente aspecto:
{ "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } }
Haga clic en Patrón de prueba para asegurarse de que el patrón de evento coincida con el evento de muestra anterior y luego haga clic en Siguiente .
En el siguiente paso, en Destino 1 , seleccione el servicio de AWS . En Seleccionar un destino , elija la función Lambda , luego busque y seleccione la función Lambda que creamos anteriormente.
Haga clic en Siguiente , ingrese las etiquetas deseadas, luego revise y cree la regla.
Estamos listos para probar nuestra regla. Para hacerlo, solo necesitamos comenzar a transmitir a un canal de Amazon IVS. Una vez que lo hagamos, nuestra regla se activará y se invocará nuestra función Lambda. En mi caso, eso da como resultado una buena notificación automática en mi dispositivo móvil.
En esta publicación, creamos una función de AWS Lambda para enviar notificaciones automáticas y creamos una regla de Amazon EventBridge para invocar esa función cuando comienza nuestra transmisión en vivo de Amazon IVS. Su función probablemente implicará alguna lógica adicional para buscar suscriptores según el canal que se está transmitiendo actualmente, lo que puede hacer según el ARN contenido en la clave resources
en los detalles del evento. Para obtener más información, consulte la documentación .