Les créateurs sont la pierre angulaire de toute plateforme de contenu généré par les utilisateurs (UGC). L'un des défis de la création d'une application UGC de diffusion en direct est de donner aux créateurs de contenu les outils dont ils ont besoin pour développer leur audience. Sans spectateurs, les créateurs ne seront pas motivés pour créer du contenu (et sans créateurs motivés, nous n'aurons pas de plateforme). Une fois que les téléspectateurs ont trouvé un créateur avec lequel ils aiment interagir, ils s'abonnent à cette chaîne et ont hâte de se connecter chaque fois que ce créateur est en ligne. C'est là que les choses se compliquent, car la plupart des téléspectateurs ne resteront pas connectés à notre application ouverte 24h/24 et 7j/7 pour vérifier si leur créateur préféré est en ligne. Pour les encourager à revenir sur notre plateforme, nous devons créer un système de notification pour alerter les téléspectateurs lorsque leurs flux préférés sont en ligne. Heureusement, c'est quelque chose qui est assez facile à construire avec Amazon Interactive Video Service (Amazon IVS). Dans cet article, nous verrons comment informer les spectateurs lorsqu'un flux Amazon IVS est en ligne.
Pour créer cette fonctionnalité, nous tirerons parti du fait qu'Amazon IVS envoie des événements de modification concernant l'état de nos flux à Amazon EventBridge. Cette intégration peut être utilisée à de nombreuses fins différentes, car il y a une tonne d'événements qui sont publiés pour chaque flux. Voici une liste de quelques-uns des événements qui sont publiés :
Créer / terminer une session
Début du flux / Fin / Échec
Début/Fin de l'enregistrement
Pour la liste complète des événements, consultez la documentation .
Comme vous pouvez le deviner, l'événement dont nous profiterons est l'événement Stream Start . Créons une règle qui sera déclenchée à chaque démarrage de notre flux.
Avant de créer une règle EventBridge, nous devons créer une fonction AWS Lambda qui sera appelée à partir de la règle (elle doit exister avant que la règle puisse être créée). Nous utiliserons le Node 18.x nouvellement disponible pour notre fonction.
Cette fonction sera la façon dont nous enverrons des notifications aux abonnés lorsque le flux sera mis en ligne. Dans votre application, vous pouvez utiliser la méthode qui fonctionne le mieux pour envoyer la notification. Si vous avez une application mobile ou une PWA, vous souhaiterez peut-être envoyer une notification push. Peut-être que vos abonnés préfèrent les notifications par e-mail ? Ou peut-être souhaitez-vous publier un message sur un flux de médias sociaux ou un canal Discord/Slack. Peut-être souhaitez-vous utiliser Amazon SNS pour envoyer un message SMS aux abonnés ? Il y a des tonnes d'options différentes ici et il n'y a aucune limitation. Dans mon cas, j'utilise Pushover pour envoyer une notification push à mon appareil mobile. Pushover a une belle API basée sur REST qui est facile à utiliser.
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 }); };
Cette règle peut être créée avec l'AWS CLI ( docs ), l'un des kits SDK AWS ou la console AWS. Pour cet article, nous nous concentrerons sur la console. Connectez-vous à la console Amazon EventBridge, sélectionnez Règle EventBridge et cliquez sur Créer une règle .
Sur la page suivante, donnez à la règle un Nom , une Description facultative , choisissez un Bus d'événement , sélectionnez Règle avec un modèle d'événement , puis cliquez sur Suivant .
Sélectionnez Événements AWS ou Événements partenaires EventBridge .
Si vous souhaitez créer un exemple d'événement à des fins de test, sélectionnez Entrer mon propre et collez le modèle suivant.
{ "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" } }
Sous Méthode de création , sélectionnez Utiliser le formulaire de modèle , puis une Source d'événement des services AWS . Pour le service AWS , choisissez Interactive Video Service (IVS) . Enfin, sous Event type , choisissez IVS Stream Stage Change .
Nous pouvons laisser le modèle d'événement tel quel, ou nous pouvons limiter cette règle uniquement à l'événement de début de flux en cliquant sur Modifier le modèle et en le modifiant pour qu'il ressemble à ce qui suit :
{ "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } }
Cliquez sur Modèle de test pour vous assurer que le modèle d'événement correspond à l'exemple d'événement ci-dessus, puis cliquez sur Suivant .
À l'étape suivante, sous Target 1 , sélectionnez AWS service . Sous Selet a target , choisissez Lambda function , puis recherchez et sélectionnez la fonction Lambda que nous avons créée précédemment.
Cliquez sur Suivant , entrez les balises souhaitées, puis vérifiez et créez la règle.
Nous sommes prêts à tester notre règle. Pour ce faire, il nous suffit de commencer à diffuser sur une chaîne Amazon IVS. Une fois que nous l'avons fait, notre règle se déclenchera et notre fonction Lambda sera appelée. Dans mon cas, cela se traduit par une belle notification push sur mon appareil mobile.
Dans cet article, nous avons créé une fonction AWS Lambda pour envoyer des notifications push et créé une règle Amazon EventBridge pour appeler cette fonction lorsque notre flux en direct Amazon IVS commence. Votre fonction impliquera probablement une logique supplémentaire pour rechercher les abonnés en fonction de la chaîne en cours de diffusion, ce que vous pouvez faire en fonction de l'ARN contenu dans la clé resources
dans les détails de l'événement. Pour en savoir plus, reportez-vous à la documentation .