Os criadores são a força vital de qualquer plataforma de conteúdo gerado pelo usuário (UGC). Um dos desafios de criar um aplicativo UGC de transmissão ao vivo é fornecer aos criadores de conteúdo as ferramentas necessárias para aumentar seu público. Sem espectadores, os criadores não serão motivados a criar conteúdo (e sem criadores motivados, não teremos uma plataforma). Depois que os espectadores encontram um criador com quem adoram interagir, eles se inscrevem nesse canal e ficam ansiosos para sintonizar sempre que esse criador estiver online. É aqui que as coisas ficam complicadas - porque a maioria dos espectadores não fica conectada ao nosso aplicativo aberto 24 horas por dia, 7 dias por semana, para verificar se seu criador favorito está online. Para incentivá-los a retornar à nossa plataforma, precisamos criar um sistema de notificação para alertar os espectadores quando suas transmissões favoritas estiverem online. Felizmente, isso é algo muito fácil de construir com o Amazon Interactive Video Service (Amazon IVS). Nesta postagem, veremos como notificar os visualizadores quando um stream do Amazon IVS estiver online. EventBridge sobre fluxos problemáticos Para criar esse recurso, aproveitaremos o fato de que o Amazon IVS envia eventos de alteração sobre o status de nossos fluxos para o Amazon EventBridge. Essa integração pode ser usada para muitos propósitos diferentes, pois há uma tonelada de eventos que são publicados para cada transmissão. Aqui está uma lista de apenas alguns dos eventos que são publicados: Sessão Criar / Terminar Início/fim/falha da transmissão Início / Fim da Gravação Para obter a lista completa de eventos, consulte a . documentação Como você pode imaginar, o evento do qual aproveitaremos é o evento . Vamos criar uma regra que será acionada toda vez que nosso stream for iniciado. Stream Start Criando a função de manipulador do AWS Lambda Antes de criarmos uma Regra EventBridge, precisamos criar uma Função AWS Lambda que será chamada a partir da regra (deve existir antes que a regra possa ser criada). Usaremos o recém-disponível Node 18.x para nossa função. Essa função será como enviaremos notificações aos assinantes quando a transmissão for ao ar. Em seu aplicativo, você pode utilizar qualquer método que funcione melhor para enviar a notificação. Se você tiver um aplicativo móvel ou PWA, talvez queira enviar uma notificação por push. Talvez seus assinantes prefiram notificações por e-mail? Ou talvez você queira postar uma mensagem em um feed de mídia social ou canal Discord/Slack. Talvez você queira usar o Amazon SNS para enviar uma mensagem SMS aos assinantes? Existem inúmeras opções diferentes aqui e não há limitações. No meu caso, estou usando para enviar uma notificação por push ao meu dispositivo móvel. O Pushover tem uma boa API baseada em REST que é fácil de usar. o Pushover 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 }); }; Criando a regra EventBridge Essa regra pode ser criada com a AWS CLI ( ), qualquer um dos AWS SDKs ou o Console AWS. Para esta postagem, vamos nos concentrar no console. Faça login no console do Amazon EventBridge, selecione e clique em . docs EventBridge Rule Create rule Na próxima página, dê à regra um , uma opcional , escolha um , selecione e clique em . Nome Descrição Barramento de eventos Regra com um padrão de evento Avançar Selecione . eventos AWS ou eventos de parceiros EventBridge Se desejar criar um evento de amostra para fins de teste, selecione e cole o seguinte padrão. Enter my own { "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" } } Em , selecione e, em seguida, uma dos . Para o , escolha . Finalmente, em , escolha . Método de criação Usar formulário de padrão Fonte de evento serviços da AWS serviço AWS Interactive Video Service (IVS) Event type IVS Stream Stage Change Podemos deixar o como está ou podemos limitar essa regra apenas ao evento clicando em e modificando-o para se parecer com o seguinte: padrão de evento de início do fluxo Editar padrão { "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } } Clique em para certificar-se de que o corresponda ao evento de exemplo acima e clique em . Padrão de teste padrão de evento Avançar Na próxima etapa, em , selecione . Em , escolha , localize e selecione a função Lambda que criamos anteriormente. Target 1 AWS service Selet a target Lambda function Clique em , digite as tags desejadas e revise e crie a regra. Avançar Ao vivo Estamos prontos para testar nossa regra. Para fazer isso, só precisamos começar a transmitir para um canal Amazon IVS. Assim que fizermos isso, nossa regra será acionada e nossa função Lambda será invocada. No meu caso, isso resulta em uma boa notificação por push no meu dispositivo móvel. Resumo Nesta postagem, criamos uma função do AWS Lambda para enviar notificações por push e uma regra do Amazon EventBridge para invocar essa função quando nossa transmissão ao vivo do Amazon IVS começa. Sua função provavelmente envolverá alguma lógica adicional para procurar os assinantes com base no canal que está transmitindo no momento, o que você pode fazer com base no ARN contido na chave nos detalhes do evento. Para saber mais, consulte a . resources documentação