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.
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 Stream Start . Vamos criar uma regra que será acionada toda vez que nosso stream for iniciado.
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 o Pushover 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.
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 }); };
Essa regra pode ser criada com a AWS CLI ( docs ), 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 EventBridge Rule e clique em Create rule .
Na próxima página, dê à regra um Nome , uma Descrição opcional , escolha um Barramento de eventos , selecione Regra com um padrão de evento e clique em Avançar .
Selecione eventos AWS ou eventos de parceiros EventBridge .
Se desejar criar um evento de amostra para fins de teste, selecione Enter my own e cole o seguinte padrão.
{ "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 Método de criação , selecione Usar formulário de padrão e, em seguida, uma Fonte de evento dos serviços da AWS . Para o serviço AWS , escolha Interactive Video Service (IVS) . Finalmente, em Event type , escolha IVS Stream Stage Change .
Podemos deixar o padrão de evento como está ou podemos limitar essa regra apenas ao evento de início do fluxo clicando em Editar padrão e modificando-o para se parecer com o seguinte:
{ "source": ["aws.ivs"], "detail-type": ["IVS Stream State Change"], "detail": { "event_name": ["Stream Start"] } }
Clique em Padrão de teste para certificar-se de que o padrão de evento corresponda ao evento de exemplo acima e clique em Avançar .
Na próxima etapa, em Target 1 , selecione AWS service . Em Selet a target , escolha Lambda function , localize e selecione a função Lambda que criamos anteriormente.
Clique em Avançar , digite as tags desejadas e revise e crie a regra.
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.
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 resources
nos detalhes do evento. Para saber mais, consulte a documentação .