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. =]
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!
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 doSendMessage
.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.
Tentei assim, mas não vai :/
Pior que não consigo nem salvar um Log de erro
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!