Giter Site home page Giter Site logo

casper-elife's Introduction

Casper-Elife

Chatbot para reunir notícias. Mini-Projeto realizado como etapa do processo seletivo da empresa Elife.

Link para conversar com Casper

Requisitos

  • 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.

Branding e Personalidade

Casper é um fantasma jovem e antenado em tudo de novo, desde futebol até as fofocas das celebridades.

Assets

Voz e Tom

Descontraído, engraçado e jovem.

👻😱💜😂 ⚽ ⚖️ 🎥 🤩

Fluxograma de Diálogo

Banco de Dados

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.

Fufillments

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.

Preenchimento do Bando de Dados

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.

casper-elife's People

Contributors

michaelbarney avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.