/Desenvolvimento

voltar
/Desenvolvimento

Criando um bot de previsão do tempo para o Twitter em menos de 10 minutos com Node-RED

PorVitor Henckel em

A intenção deste artigo é mostrar como o Node-RED pode agilizar e facilitar o desenvolvimento de API’s. Vamos focar no desenvolvimento do bot. Caso ainda não conheça o Node-RED, fica aqui uma leitura para fazer antes de seguir com este artigo.

Vamos utilizar o Node-RED dentro da plataforma IBM Cloud (ex-Bluemix), a IBM disponibiliza em cloud vários serviços de forma gratuita, como o Watson Conversation, por exemplo; muito utilizado para criação de chatbots.

O bot

Vamos desenvolver um bot simples para o Twitter. O robô vai ficar escutando todos os tweets públicos que contenham frases, como: “qual a previsão do tempo?”, “alguém sabe a previsão do tempo?” ou somente “previsão do tempo”.

Quando o robô identificar um tweet que contenha alguma destas frases, vamos tentar identificar a localização do usuário, caso o tweet venha com a localização, vamos tweetar marcando o usuário com a previsão do tempo para o dia atual e o próximo dia na cidade dele.

Para pegar a previsão do tempo, vamos utilizar a API do site https://hgbrasil.com/ . Eles disponibilizam uma API gratuita para previsão do tempo, bastando apenas um cadastro simples dos dados do usuário e cadastro da URL que utilizará o serviço.

Mãos a obra

Para iniciar nosso bot, criei uma conta no Twitter chamada “Botzão do Tempo” (@BotSaoPedro).

No Node-RED criei uma aba também chamada de SaoPedroBot. Não é obrigatório, fiz uma nova aba apenas para separar o código do nosso bot dos outros que já possuo no node-RED.

Aba SaoPedroBot onde ficarão os nodes com os códigos dos nosso bot

Agora insira um bloco de entrada do Twitter como mostrado na imagem abaixo. Clique duas vezes sobre o bloco e a aba de edição do bloco abrirá.

Nesta aba, clique no ícone de lápis ao lado do campo Twitter ID. Uma nova aba será aberta com um botão para que você autentique o aplicativo em sua conta do Twitter.

Na tela do Twitter, clique em “Autorizar aplicativo” e após a mensagem de sucesso poderá fechar a página.

No campo Twitter ID no Node-RED já estará aparecendo o @ do seu bot, no nosso caso, aqui: @BotSaoPedro. Clique em “Add” e pronto, o Node-RED voltará para a aba abaixo já com sua conta do Twitter autenticada.

Agora nesta aba, no campo Search vamos deixar selecionada a opção: “All public tweets” para que nosso bot possa ficar monitorando tudo e encontrar quem deseja saber sobre o tempo.

No campo “For” você pode especificar o que o bot deve procurar. Neste campo você pode adicionar várias palavras ou frases separadas por vírgulas, pode inserir um usuário específico – por exemplo: monitorar e responder sempre que alguém marca o usuário da sua empresa – e ainda pode adicionar #hashtags.

Você pode ainda fazer condiçõesu. Uilizando vírgulas entre as palavras, sua busca vai funcionar como OR, uma palavra ou outra. Se utilizar espaço entre as palavras, será considerado AND, então precisa conter todas as palavras.

Vamos inserir agora um bloco chamado “function”. É neste bloco que vamos receber os tweets encontrados, descobrir a localização do usuário, montar a URL da API e enviar ao próximo bloco que vai fazer a chamada a API.

Código no Sublime para melhorar a visualização

Aqui ao lado um código simples:

  1. Recebemos um objeto com todos os dados do tweet e armazenamos na variável tweet.
  2. Um “if” apenas para verificar se o tweet contém a informação da localização do usuário.
  3. Guardamos os dados do location do usuário
  4. Algumas contas têm o location cadastrado desta forma: “cidade, estado, país”, outras aparecem como “cidade/estado/país”, somente o país e outras o campo vazio, por isso precisamos fazer esse tratamento. Então quebramos o location pela vírgula (,) e
  5. pela barra (/).
  6. Aqui fizemos um if para descobrir se o primeiro parâmetro é diferente do país (então temos a cidade)
  7. Armazenamos a cidade em uma variável só para ficar mais organizado e mais legível
  8. Aqui armazenamos nossa API KEY gerada no site https://hgbrasil.com/
  9. Armazenamos em msg.method como o próximo bloco que fará a requisição à API deve fazer a chamada – neste caso, “GET”.
  10. Em msg.url montamos a URL da API que será chamada no próximo bloco.
  11. Aqui damos o return da msg na primeira saída do bloco. Essa saída direciona para a requisição da API.
  12. Return na segunda saída do bloco que mata a execução sem nenhum retorno para o Twitter.
Código dentro do bloco no Node-RED

Agora inserimos um node chamado http-request e damos um duplo clique para editar este bloco.

No campo method, selecionamos a opção “- set by msg.method” e no campo return, a opção “a parsed JSON object”.

A informação do método e da URL virão do nosso bloco anterior.

Agora vamos inserir um novo bloco function para tratar o recebimento da API e gerar o tweet.

JSON gerado pela API

Aqui montamos o tweet com base nas informações retornadas pela API. Iniciamos com o ‘@’ + msg.tweet.user.screen_name para marcarmos o usuário no tweet.

O restante dos dados são informações da API, hora, cidade, tempo agora, descrição, temperatura agora, vento, umidade do ar, máxima e mínima de hoje e de amanhã.

Agora inserimos o bloco final de saída para o Twitter. Este bloco é o responsável pelo envio do tweet. Inserimos também um bloco de “debug” (bloco verde) na última saída para podermos ver os tweets que estão sendo enviados.

Agora, sempre que alguém perguntar sobre previsão do tempo nosso bot irá tentar responder como mostram as imagens abaixo:

Tweet perguntando sobre a previsão do tempo
Tweet do nosso bot respondendo ao usuário

Aqui, a aba de debug do Node-RED mostrando a chegada no tweet encontrado e abaixo o envio após o processamento dos dados.

Debug do Node-RED

Bom, era isso. Rápido e fácil desenvolver um bot simples utilizando Node-RED como orquestrador. Espero que o conteúdo não tenha ficado muito confuso, mas quem ficar com dúvidas ou quiser saber mais sobre Node-RED, fico à disposição total para tentar auxiliar.

E como podem ver na imagem abaixo, o bot continua respondendo previsões de tempo aos usuários e já com alguns seguidores!

De 0 a 10, o quanto você recomendaria este artigo para um amigo?

 

Deixe um comentário! 0

leia mais
Este projeto é oferecido pelas empresas:
Este projeto é mantido pelas empresas:
Este projeto é apoiado pelas empresas: