Eu tenho certeza que você já fez um projeto básico…
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.
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.
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.
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, o 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.
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.
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.
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.
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”.
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.
Agora observe o que acontecerá quando configurarmos o Template, vamos configurá-lo como mostra a imagem abaixo:
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.
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’.
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.
Dê um Deploy e volte ao Telegram, digite uma nova mensagem, após enviá-la o menu que recém criamos será mostrado.
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.
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.
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.
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.
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.
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: Como usar com Arduino – Sensor (Medidor) de Umidade do Solo (Higrômetro)