Criando Bot para o Telegram Utilizando o Api.ai

No post anterior, eu demonstrei como utilizar a plataforma Api.ai para criar um bot. Porém, o bot que criamos não foi integrado a nenhuma plataforma de chat. Dessa forma, neste post, eu irei mostrar como é feita a integração entre o Telegram e o agente que criamos no Api.ai. É importante esclarecer também que a linguagem PHP será utilizada na implementação do nosso bot.

Vamos lá!

Errata (10/10/2017): O Api.ai teve seu nome alterado para DialogFlow.

1-Ativando o Fulfillment

Atualmente, quando o bot recebe uma mensagem perguntando, por exemplo, o resultado da Quina, ele não responde com o resultado do jogo. Como resposta, o usuário recebe apenas a mensagem “Um momento, por favor. Irei verificar qual foi o resultado da Quina”. Supondo que queremos usar o parser que desenvolvemos no segundo post  da serie sobre bots para o Telegram para obter o resultado da loteria, precisamos que o bot faça uma requisição ao nosso servidor passando como parâmetro o jogo Quina que foi anteriormente identificado. Para isso, é necessário ativar, no console do Api.ai, a funcionalidade Fulfillment.

apiaitelegram10

Após ativar o Fulfillment, devemos setar o webhook (quem já leu os outros posts sobre bots aqui do blog deve estar acostumado com o termo xD). Sendo assim, na seção Webhook, inserimos a URL do nosso servidor, a qual será responsável por receber a requisição do bot e respondê-la com o resultado da loteria.

apiaitelegram11

Feito isso, o próximo passo é voltar a intenção “exibir.resultados” e, no final da página, marcar a opção “Use webhook“.

apiaitelegram12

2-Processando a Requisição no Webhook

Com o webhook setado, temos que preparar o nosso back-end para receber as requisições que forem feitas pelo bot. Com esse objetivo, primeiramente, devemos entender como o Api.ai enviará a requisição ao back-end. Na documentação do Api.ai, na parte relacionada ao fulfillment, é possível encontrar um modelo de requisição em JSON. Porém, no exemplo abaixo está especificado o JSON enviado pelo Api.ai via POST ao nosso back-end.

Se observarmos o JSON acima, no objeto parameters está localizada a nossa entidade “Jogos” junto com o seu valor “Quina”, o qual foi identificado pelo Api.ai na solicitação do usuário. Então, basicamente, o que temos que fazer é ler o JSON, obter o valor “Quina” e passá-lo como parâmetro para o parser. No trecho de código a seguir, é possível ver esse processo implementado:

Em resumo, o webhook obtém os dados contidos na requisição através do método file_get_contents. Por sua vez, esses dados são lidos como JSON e passados para o método getResult, o qual será responsável por obter o resultado do jogo solicitado e montar o JSON de resposta.

3-Respondendo a Requisição no Webhook

No trecho de código abaixo está exposta a implementação do método getResult. Nela, é possível perceber que após obter o resultado do jogo através do parser da página do G1, o getResult gera um JSON como resposta. Esse JSON é impresso como resposta ao Api.ai.

O formato desse JSON de resposta pode ser encontrado na documentação do Api.ai. Esse JSON possui diversos campos, dentre eles o speech e o displayText. O speech deve ser preenchido com o valor que será usado quando o bot for usar a voz. Por outro lado, o displayText deve ser preenchido com o valor que será impresso pelo bot em um chat. É preciso deixar claro que você pode atribuir o mesmo valor em ambos os campos.

4-Ligando o Api.ai ao Bot no Telegram

Para finalizar o desenvolvimento do bot é necessário ligá-lo ao seu bot no Telegram (estou supondo que você já possui um bot criado no Telegram xD). Para isso, acesse o menu Integrations no console do Api.ai, ative o suporte ao Telegram e insira o token do seu bot.

apiaitelegram13

apiaitelegram14
Feito isso, já podemos testar nosso bot!

5-Testando o Bot

Bom, agora podemos acessar o chat do nosso bot no Telegram e conversarmos com ele. Ao enviarmos mensagens para ele, podemos perceber que ele responde exatamente de acordo com o treinamento feito no Api.ai. =]

apiaitelegram15

Este foi um exemplo bem simples de como usar o Api.ai para desenvolver um bot. Se você comparar a quantidade de código utilizado para criar este bot com a empregada na implementação de outros que já mostrei, irá notar que o uso de uma plataforma de machine learning nos auxilia, principalmente, na redução da codificação necessária para a interpretação das mensagens trocadas entre o bot e o usuário. Além disso, no caso da Api.ai, não precisamos codificar também a integração entre o bot e o Telegram, já que tudo é feito via console. =]

Para testar o bot que acabamos de criar, procure por “loteriasfederaisbot” no Telegram ou acesse o seguinte link: https://telegram.me/loteriasfederaisbot.

Para visualizar o código-fonte do bot que foi desenvolvido neste tutorial, acesse: Telegram Api.ai Bot.

Agora, você já sabe como criar um bot mais amigável e inteligente para o Telegram!

E ai, gostou do tutorial? Ficou com alguma dúvida? Então, deixe um comentário!

Deixe uma resposta