Criando um bot para o Telegram Utilizando o Wit.ai

No decorrer da série de posts sobre o Wit.ai, já demonstrei como criar, treinar e vincular um agente criado no Wit.ai ao Messenger. Por meio desses posts foi possível notar as principais funcionalidades do Wit.ai e entender como a integração a uma plataforma de mensagens pode ser feita.

Partindo do princípio (já virou regra kkkk) de que, aqui no blog, todas as ferramentas para bots são abordadas tanto para o Messenger quanto para o Telegram, neste post, eu apresentarei as etapas necessárias para vincular o agente do Wit.ai criado nos posts anteriores ao Telegram. É importante esclarecer que na parte de implementação deste post iremos fazer uso da linguagem PHP.

Vamos lá!

1-Criar o Bot no Telegram

Como já existe uma série de posts sobre a criação de bots para o Telegram aqui no blog, não detalharei esse tópico.

2-Implementação do Bot

Com o bot para o Telegram devidamente criado, a próxima etapa é integrá-lo ao nosso agente do Wit.ai. Para isso, inicialmente, precisamos acessar o console do Wit.ai e selecionar o menu “Settings”. Nesse menu, como mostra a imagem abaixo, encontraremos a URL da API que utilizaremos para enviar e obter as respostas a partir do nosso agente.

Ao realizarmos uma requisição à API, precisaremos informar, no cabeçalho (header) HTTP, o token do agente para possamos ter acesso às respostas geradas a partir dele. Além disso, a requisição deve ser feita via GET, sendo que a mensagem enviada pelo usuário deve ser atribuída ao parâmetro “q” da URL.

Definida a URL, podemos implementar o método que executará a requisição. Esse método, nomeado de callWitAi, recebe a mensagem do usuário e a envia, via API, para o agente.

Ao receber essa requisição, o agente do Wit.ai irá processá-la de acordo com a base de treinamento e responderá com um JSON semelhante ao abaixo:

Ao receber o JSON, o nosso método callWitAi, faz uso do método checkConfidence para checar a taxa de correspondência entre as informações presentes na mensagem e as entidades treinadas no agente. Assim como no post do sobre o Messenger, foi definido um limiar de 0.8. Dessa forma, acima do limiar, utilizaremos a interpretação do Wit.ai. Caso contrário, o bot informa que não entendeu a mensagem. É importante notar que o nome da loteria que foi identificado é obtido através do atributo value.

De posse do nome da loteria definido após a interpretação, podemos criar o código completo do nosso bot para o Telegram. Esse código é semelhante aos de posts anteriores aqui do blog, sendo acrescido apenas os métodos callWitAi e checkConfidence.  Dessa forma, o funcionamento dele, basicamente, é receber a mensagem do usuário, enviar ao Wit.ai, verificar a taxa de correspondência, utilizar o nome de loteria identificado para obter os resultados da loteria através de um parser da página do G1 e enviar essa resposta ao usuário (Ufa!!!).

A imagem abaixo mostra o funcionamento do bot que implementamos neste post:

Para testar o bot no Telegram acesse: Loteria Wit.ai

O backend do bot desenvolvido neste tutorial foi hospedado na Umbler.

O código completo do bot desenvolvido nesse post pode ser encontrado em: Código Telegram Wit.ai

Bom, é isso! Qualquer dúvida, deixe um comentário. =]

4 comentários em “Criando um bot para o Telegram Utilizando o Wit.ai”

  1. 2 anos depois, eu aqui vindo procurar ajuda, provavelmente nem veja essa mensagem.
    Queria saber como faz para usar o “editmessagetext” no bot para telegram da source daquele em 3 passos usando o php, tô há um bom tempo tentando, e nada 😛
    se puder me ajudar, agradeço!

    Responder
    • Olá, Rivaldo. Vou tentar te ajudar mesmo depois de 2 anos. kkk

      O EditMessage funciona igual ao SendMessage com a diferença que você deve passar como parâmetro adicional o message_id. Esse parâmetro pode ser obtido como resposta da requisição quando a mensagem é enviada através do SendMessage.

      Quando o message_id for obtido, ele pode ser usado da seguinte forma (Estou usando o exemplo do código do bot que está no post):
      sendMessage("editmessagetext", array('message_id'=>'ID_DA_MENSAGEM','chat_id' => $chat_id, "text" => 'Mensagem alterada!'));

      Espero ter ajudado.

      Responder
    • Rivaldo,

      Tenta usar essa três linhas abaixo do file_get_contents que será gerado um arquivo com a mensagem gerada:

      $test = file_get_contents(API_URL.$method, false, $context );
      $fh = fopen("msg.txt", "w+");
      fwrite($fh, $test);
      fclose($fh);

      Infelizmente, não tenho como te ajudar além disso.

      Boa sorte!

      Responder

Deixe um comentário