Chatbot para reunir notícias. Mini-Projeto realizado como etapa do processo seletivo da empresa Elife.
Link para conversar com Casper
- Para conversar com o Casper, as pessoas devem abrir a página do Facebook do bot e iniciarem um diálogo via Mensagem Privada.
- Ao falarem com o Casper, os usuários receberão uma saudação do bot e um menu com vários temas de notícias em Quick Replies. (Esportes, Entretenimento, Famosos e Política)
- Ao escolherem um tema, os usuários recebem um conjunto de até 10 notícias sobre o tema escolhido.
- Caso não haja notícias sobre esse tema, o bot deverá desculpar-se e exibir o menu de temas novamente.
- Cada notícia é um Modelo genérico do Facebook Messenger composto por uma imagem, um título, uma descrição e um botão que leva ao link da fonte da notícia.
- As notícias devem ser mostradas ao usuário como um Carrossel de Modelos Genéricos.
- As notícias são obtidas de um banco de dados em MongoDB.
- Para que pessoas externas consigam conversar com seu chatbot, você deve submetê-lo para status de “live” no Facebook.
Casper é um fantasma jovem e antenado em tudo de novo, desde futebol até as fofocas das celebridades.
Descontraído, engraçado e jovem.
👻😱💜😂 ⚽ ⚖️ 🎥 🤩
O banco de dados utilizado foi o MongoDB através do serviço MongoDB Atlas.
O banco de dados possui apenas uma coleção (news) que possui como documentos todas as notícias coletadas, contendo nelas:
- title - Título da Notícia
- imageUrl - Url da imagem da Notícia
- description - Descrição da Notícia
- link - Url da fonte da notícia
- theme - A categoria da notícia.
O chatbot foi feito utilizando um agente do Dialogflow diretamente integrado com o Facebook Messenger. Desta maneira, para fazer solicitações ao banco de dados de notícias foi necessário um Webhook de fufillments.
Assim, foi implementado uma Firebase Function, encontrada aqui, para receber a chamada, fazer a solicitação ao banco de dados e retornar um carrousel com as notícias do tema escolhido.
Para preencher o banco de dados, foi implementada uma Firebase Function agendada para executar diariamente às 00:01, encontrada aqui.
Para coletar notícias, esta função faz chamadas à News API passando parâmetros para garantir notícias em português e do tema selecionado.
Em seguida, a função conecta ao banco de dados e o preenche com as notícias de maneira à ser utilizada posteriormente pela função de Webhook do Dialogflow.
Além disto, foi observado que algumas URLs estavam entrando em conflito com o Facebook Messenger, como as notícias do website InfoMoney. Assim, foi implementado uma função para minificar as URLs das fontes das notícias utilizando a API do Rebrandly.