ChatBot com Node-RED e Telegram

ChatBot com Node-RED e Telegram

Nas primeiras postagens sobre o Node-RED nos concentramos em entender essa poderosa ferramenta de programação que atende a todos os tipos de makers, dos apaixonados por programação a não programadores. Entendemos a ferramenta em todo o seu contexto por meio de exemplos práticos. Agora vamos dar mais um passo e aprender como podemos integrar o Node-RED ao Telegram.

img-01_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Hoje vamos aprender a desenvolver um ChatBot utilizando o Node-RED com o Telegram, para isso vamos utilizar o node do RedBot, que é um bot mais completo e permite a integração com praticamente todas as redes sociais. Porém, nossa escolha é o Telegram, visto que ele possui uma interface de configuração mais amigável. O primeiro passo como sempre será subir o servidor Node-RED, se você ainda não sabe como fazer, siga os passos abaixo:

1º PASSO: Execute o Terminal (prompt de comando) como administrador e rode o comando node-red para iniciar o servidor Node-RED. Este comando pode ser chamado tanto Linux quanto no Windows.

2º PASSO: Tendo iniciado o servidor, teremos a tela como mostra a imagem abaixo. Para acessar em seu navegador digite o endereço http://127.0.0.1:1880/, ou ainda melhor, digite, localhost:1880.

node-v_node-red_node-js_IoT_MQTT_embarcados_06

Tendo executado os passos acima corretamente e subido o servidor com sucesso, é hora de colocarmos a mão na massa e começarmos o desenvolvimento do nosso ChatBot.

CRIANDO UM BOT NO TELEGRAM

Antes de prosseguirmos vamos criar e configurar o bot no Telegram. Um bot é um aplicativo externo que é executado dentro do Telegram. Os usuários poderão interagir com o bot enviando desde mensagens simples até fazer solicitações. Assim também por meio dos bots é possível integrar o Telegram com outros serviços como o Gmail Bot, por exemplo; ou ainda fazê-lo funcionar como uma loja virtual aceitando pagamentos de usuários; E mais, é possível usar o bot e construir serviços sociais com o objetivo por exemplo, de aproximar pessoas com interesses comuns, e claro, o  bot do RedBot traz ainda muitas outras possibilidades.

Abra o aplicativo do Telegram instalado em seu smartphone e pesquise por @BotFather, o BotFather é o pai de todos os bots, ele o ajudará a criar um novo bot ou alterar a configuração de um bot já criado. Após encontrar o BotFather clique nele e em seguida clique em começar.

node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot_img-01_

Perceba que ao clicar em começar o comando /start foi “setado”. Logo abaixo do comando /start uma lista de comandos será exibida. É bem intuitivo criar um bot no Telegram. O próximo passo será enviar o comando /newbot, e há duas maneiras de fazê-lo, você pode clicar sobre o nome do comando ou escrevê-lo. Apos enviar o comando /newbot,BotFather lhe pedirá o nome do bot, o nome que escolhemos é MasterWalker, fique a vontade para escolher o seu.

Após a validação do nome escolhido é hora de criar um nome de usuário que possibilitará a busca, será criado um “@nick”, é importante que este “nick” contenha a palavra “bot”, assim, usaremos MasterWalker_bot. Estando tudo certo, o BotFather nos dará as boas vindas e fornecerá um token, que é o código que precisaremos para configurarmos o bot do Telegram no Node-Red e no ManyBot. Selecione e copie o token fornecido.

node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot_img-02_

Volte a tela inicial do Telegram e pesquise por @ManyBot, clique sobre ele e depois em começar, escolha o idioma de sua preferência, e clique em Create a New Bot > I’ve copied the API token, e cole o token fornecido pelo BotFather para a criação do bot. Clique sobre o @nick que você gerou e pronto, seu bot já está criado. E agora vamos ao nosso próximo passo com o Node-RED.

node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot_img-03_

INSTALANDO O CHATBOT DO REDBOT NO NODE-RED

É provável que você ainda não tenha instalado o node que precisaremos, então vamos relembrar o procedimento para instalar um novo node. No menu lateral superior a direita clique em Manage palette, na opção Palette clique em Install, no campo de pesquisa digite, chatbot, e instale a primeira opção como mostra a imagem.

img-03_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Após a instalação busque pelo node do Telegram que poderá ser encontrado no conjunto de nodes do RedBot Platforms no palette, será necessário o node de entrada (Telegram In) – Telegram Receiver e o node de saída (Telegram Out) – Telegram Sender.

img-04_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Obviamente iremos testar a funcionalidade dos nossos nodes do Telegram conectando-os a function Template e ao output debug, este último é o node que trará a informação do nó de entrada. Assim, conecte os nodes Telegram Receiver e Telegram Sender ao node da function Template, e o node debug será conectado ao Telegram Receiver respectivamente.

Agora vamos editar os nodes do Telegram, abra com um duplo clique o node Telegram Receiver para que possamos editá-lo, em Bot-Name coloque o nome que você deu ao seu bot quando o criou no Telegram:, no nosso caso, MasterWalker_bot; em Token informe o token fornecido pelo BotFather e em Users: você poderá determinar quem poderá interagir com o seu bot colocando o nome dos usuários os quais permitirá a interação ou deixar em branco e permitir a interação de todos que desejarem; em Parse escolha a opção: Markdown. Não mexa nas demais configurações. Faça a mesma configuração no node Telegram Sender e dê um Deploy.

Como demonstra a imagem abaixo, após o Deploy, poderemos observar abaixo dos nodes a mensagem de que ambos estão conectados – “connected”.

img-05_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Volte ao bot que você criou no Telegram e mande uma mensagem, por exemplo, “Olá!”, e veja a mensagem que você digitou no Telegram na área de debug do Node-RED, a mensagem será recebida com todas as informações do remetente pelo servidor Node-RED por meio de um objeto.json.

As informações são: Type – que é o tipo de mensagem; chatID – Identificador da mensagem; UserID – Identificador do usuário; ts – Timestamp, objeto de estudo das nossas postagens anteriores, que tem a função de indicar data e hora de envio da mensagem; transport – que informa o remetente da mensagem; inbound – ticket de confirmação de visualização da mensagem; content – conteúdo da mensagem.

img-06_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Agora observe o que acontecerá quando configurarmos o Template, vamos configurá-lo como mostra a imagem abaixo:

img-07_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

No Telegram digite uma nova mensagem e observe o que acontecerá, como é padrão acontecer em um ChatBot, agora o bot da MasterWalker mostrará a mensagem que você digitou.

INSTRUINDO O BOT MASTERWALKER

Agora podemos desconectar o Template do Telegram Receiver e deixá-lo de lado juntamente com o Telegram Sender, por segurança manteremos o debug configurando-o como demonstra a imagem.

img-08_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

No conjunto do RedBot no palette clique e arraste para o Flow o node keyboard e conecte-o ao Telegram Receiver.

Será dentro do keyboard que configuraremos o nosso menu, acesse-o dando um duplo clique sobre ele. Em name: escreva menu; em Message: {{firstName}}, escolha uma opção: 🙂, as opções destacadas de vermelho são uma sugestão do próprio Node-RED para uma melhor experiência do usuário, onde o {{firstName}} exibirá o primeiro nome do usuário; Em Buttons adicionaremos quatro botões, “Localização”, “Contato (Tel)”, “Audio” e “Texto’.

img-09_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Precisaremos de um node de saída, assim, copiaremos por meio dos atalhos, “CTRL + C” e “CTRL + V” o node Telegram Sender e o conectaremos ao node keyboard (menu), como mostra.

img-10_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Dê um Deploy e volte ao Telegram, digite uma nova mensagem, após enviá-la o menu que recém criamos será mostrado.

node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot_img-04_

IMPORTANTE: por estarmos tratando de múltiplas condições precisaremos de comandos de condição, no Node-RED usaremos uma opção nativa – o switch, conectando-o ao node de saída.

img-11_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Dê um duplo clique sobre o node switch para abrir a janela de edição, veja a imagem abaixo, trataremos todos os itens do menu como uma string. Acrescente ao payload um .content.

img-12_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Após as primeiras configurações no switch duas saídas foram adicionadas ao node, na primeira opção de saída conecte o node Request que poderá ser localizado no conjunto RedBot do palette. Na janela de edição do Request, em Type escolha a opção “Request user location”; Em Message: escreva “Informe sua localização” e o mesmo texto para o Label.

img-13_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

Após fechar a janela de edição, no Flow conecte o node Request (localização) ao node de saída, como foi feito anteriormente. Dê um Deploy e no Telegram escolha a opção de Localização, o bot mostrará uma opção para o usuário informar a localização. Após clicar sobre a solicitação uma janela popup pedirá a confirmação da operação, clique em ok. Se a opção de localização do smartphone não estiver habilitada, o bot enviará uma solicitação para habilitá-la, ao aceitá-la a localização será enviada. Na área de debug do Node-RED também será mostrado a latitude e a longitude.

node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot_img-05_

No Telegram, como não procedemos com a tratativa para parar o loop, o bot voltará com as opções de menu.

Faça a mesma configuração para as demais opções de menu, Contato (Tel), Áudio e Voice, atentando para o Name, Type, Message e o Label. No node Voice é importante a escolha da língua desejada a partir da opção Language, pois vamos converter o texto digitado para um arquivo de áudio. No node do Audio, atenção na indicação do caminho do arquivo, o que será feito em Filename. Tendo finalizado as configurações dê um Deploy e volte ao Telegram para testa as novas funcionalidades configuradas.

img-14_node-v_node-red_node-js_IoT_MQTT_embarcados_telegram_chatBot

O que objetivamos mostrar nesta postagem são as possibilidades de integrar o Node-RED a cartela de serviços da sua empresa, por exemplo, para isso basta apenas explorar a ferramenta e configurá-la de forma a atender as suas funcionalidades. Buscamos diversificar os tipos de informações do nosso bot para que o leitor pudesse perceber o quão vasta são as possibilidades.

Gostou desta postagem? Então deixa seu comentário, dúvida ou sugestão aí embaixo!

Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop

Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.

Obrigado e até a próxima!

Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.



Postagem anterior:
Próxima postagem:
Postagem feita por

Formada em Engenharia da Computação pela Faculdade Presidente Antônio Carlos, Web Designer, é também colaboradora da plataforma de conteúdo digital Oficina da Net. Tem um livro de ficção publicado como autora independente.