Image for post
Image for post

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

Vitor Henckel
Mar 16, 2018 · 6 min read

A intenção deste tutorial é mostrar como o Node-RED pode agilizar e facilitar o desenvolvimento de API's.

Vamos focar no desenvolvimento do bot, caso você ainda não conheça o Node-RED fica aqui uma leitura para fazer antes de seguir com este tutorial.

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

Image for post
Image for post

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

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

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.

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 irá abrir.

Image for post
Image for post

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 já pode fechar a página.

Image for post
Image for post

No campo Twitter ID no Node-RED agora 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 selecionado a opção: "All public tweets" para que nosso bot possa ficar monitorando tudo e encontrar quem deseja saber sobre o tempo.

Image for post
Image for post

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 pode ainda adicionar #hashtags.

Você pode ainda fazer condições, utilizando 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.

Image for post
Image for post

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 tem o location cadastrado desta forma "cidade, estado, país" outras aparecem como "cidade/estado/país", algumas tem só o país e outras tem o campo vazio, por isso precisamos fazer este 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 em msg.method como o próximo bloco que fará a requisição a API deve fazer a chamada, neste caso "GET".
8- Em msg.url montamos a URL da API que será chamada no próximo bloco.
9- Aqui damos o return da msg na primeira saída do bloco, essa saída direciona para a requisição da API.
10- Return na segunda saída do bloco que mata a execução sem nenhum retorno para o Twitter.

Image for post
Image for post
Código dentro do bloco no Node-RED
Image for post
Image for post

Agora inserimos um node chamado http-request, damos um duplo clique para editar este bloco.
No campo method selecionamos a opção "- set by msg.method" e o campo return selecionar 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.

Image for post
Image for post
JSON gerado pela API
Image for post
Image for post

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.

Image for post
Image for post

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

Image for post
Image for post
Tweet perguntando sobre a previsão do tempo
Image for post
Image for post
Tweet do nosso bot respondendo ao usuário
Image for post
Image for post
Debug do Node-RED

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

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 queira 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! 😉

Image for post
Image for post

Bots Brasil

Conectamos pessoas e compartilhamos conteúdos relacionados…

Sign up for bostBR.Radar 📡

By Bots Brasil

Novidades do mercado de chatbots, inteligência artificial e interfaces conversacionais entregues no seu email. Take a look

By signing up, you will create a Medium account if you don’t already have one. Review our Privacy Policy for more information about our privacy practices.

Check your inbox
Medium sent you an email at to complete your subscription.

Vitor Henckel

Written by

Apaixonado pelo mundo das Startups, empreendedorismo, Inteligência Artificial, ChatBots!

Bots Brasil

Conectamos pessoas e compartilhamos conteúdos relacionados à Bots, Inteligência Artificial e Interfaces Conversacionais em Português.

Vitor Henckel

Written by

Apaixonado pelo mundo das Startups, empreendedorismo, Inteligência Artificial, ChatBots!

Bots Brasil

Conectamos pessoas e compartilhamos conteúdos relacionados à Bots, Inteligência Artificial e Interfaces Conversacionais em Português.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store