Na série de posts que publiquei sobre como utilizar o DialogFlow como plataforma de auxílio ao desenvolvimento de bots foi possível notar (se ainda não leu, corre lá!) como o processo de treinamento ficou simples. Imagina o tempo que levaria para você modelar e implementar uma machine learning para que seu bot entendesse as mensagens enviadas pelos seus usuários!
Agora que você está consciente do poder desse tipo de plataforma, que tal aprendermos a usar mais uma?
Quanto mais plataformas aprendermos, mais opções teremos quando precisarmos criar algum bot, não é mesmo? xD
Sendo assim, neste post, eu irei demonstrar como criar um bot na plataforma Wit.ai. Como já é de costume (não é preguiça de pensar, é que fica mais fácil de comparar os projetos =p), vou demonstrar o uso da Wit.ai no desenvolvimento de um bot que, quando solicitado, envia os resultados da loteria ao usuário.
A Wit.ai possui uma documentação bem detalhada sobre todos os seus recursos, por isso não irei ser muito detalhista. Sendo assim, neste post, irei apenas explicar como criar uma conta no Wit.ai e treinar um bot. Esse bot servirá como base para a integração com aplicativos de mensagens como o Telegram e o Facebook Messenger (aguarde as cenas dos próximos capítulos kkk).
Vamos lá!
1- Criando uma Conta no Wit.ai
O primeiro passo antes de iniciarmos a construção do bot é a criação da conta no Wit.ai. Para isso, basta acessar o site https://wit.ai e clicar no botão “Log in with GitHub” ou “Log in with Facebook”.
Após realizar o login, será exibida uma tela semelhante a que está abaixo. Nessa tela, para criarmos um novo app, clicamos no botão “+” no canto superior direito.
Na tela de criação do app, devemos preencher o nome do app e a descrição. Além disso, precisamos definir o idioma da nossa aplicação, ou seja, o idioma no qual a interação com o bot e o seu treinamento serão realizados (no nosso caso, Português). Feito isso, marcamos o compartilhamento de dados como “Private” (isso serve para não deixar os dados do app públicos) e clicamos em “Create App”.
A tela abaixo será exibida após o app ser criado.
2 – Treinando o App
Com o app criado, podemos partir para o treinamento. Esse treinamento irá “ensinar” ao app sobre o que o usuário quis dizer com a mensagem que foi enviada. Sendo assim, quanto mais frases usarmos no treinamento, mais eficiente nosso app ficará.
A lógica de treinamento no Wit.ai é baseada em entidades (entities). Uma entidade representa a informação que você gostaria de detectar na mensagem do usuário. O Wit.ai já conta com algumas entidades já prontas (conhecidas como built-in expressions), ou seja, treinadas para identificar frases sobre temperatura, duração de tempo, localização, expressões matemáticas, entre outras.
Como nosso objetivo é treinar o app para entender frases relacionadas a loterias e essa entidade não existe, precisaremos criar uma nova. Para isso, informamos uma frase como “Qual foi o resultado da mega?” e inserimos um nome para a nova entidade, neste caso, “loteria”. Essa entidade será do tipo trait, ou seja, irá interpretar a frase inteira para tentar inferir o significado. Junto com a entidade precisamos inserir um valor, o qual nomeamos “resultados”. Esse valor serve para rotular as frases dentro da entidade “loteria”, onde poderíamos ter frases associadas a resultados e outras a localização de lotéricas, por exemplo.
Na etapa acima, a entidade “loteria” será vinculada quando o contexto da mensagem recebida for relacionado a resultados de loterias. Porém, precisamos extrair também qual o jogo de loteria o usuário quer saber o resultado. Isso pode ser feito, por exemplo, passando a frase “Qual foi o resultado da lotofacil?” e selecionando a palavra “lotofacil”. Feito isso, criamos uma nova entidade chamada “nome_loteria”, a qual servirá para identificar os nomes dos jogos (serão nossas keywords) na frase.
Em resumo, o treinamento consistirá em informar mais frases como “Resultado da mega”, “Qual resultado da quina?”, “Lotofacil” e “Gostaria de saber o resultado da lotomania”, atribuindo a elas a entidade “loteria” no valor “resultados” e selecionando o nome do jogo para a entidade “nome_loteria”. Quanto mais exemplos forem submetidos ao app, mais eficiente ele vai ficar. Para medir essa eficiência, basta observar os números verdes ao lado das entidades durante o treinamento. Esse números representam a taxa de correspondência entre a sentença passada e a entidade associada.
É importante observar que, logo abaixo da “zona de treinamento”, é exiba uma tabela onde é exposto um pequeno resumo das entidades criadas e seus respectivos valores. Essa tabela ajuda a acompanhar o processo de construção das entidades durante o treinamento.
3-Testando o App
Após o treinamento, a próxima etapa é testar o app. Com esse objetivo, o Wit.ai disponibiliza vários tipos de integração, porém utilizaremos apenas a via HTTP (por ser independente de linguagem). Para ver o modelo que a requisição HTTP deve seguir, basta acessar o menu “Settings”.
Na tela das “Settings” é apresentada a requisição HTTP contendo o token do seu app e a URL como os parâmetros as serem passados. Essa requisição deve ser feita via GET e o parâmetro “q” deve conter a frase que deve ser interpretada.
Para testar a requisição utilizaremos o Postman, uma extensão do Chrome serve para trabalhar com requisições a APIs (você pode executar a requisição onde achar melhor, essa extensão é só um exemplo). Ao abrir a extensão, passamos a URL no método GET, atribuindo ao parâmetro “q” a frase “Qual foi o resultado da mega?”. Além disso, na aba “Headers” da extensão, precisamos inserir nosso token na chave Authorization do cabeçalho HTTP. Feito isso, basta clicar em “Send”.
Como resposta para a requisição, o app envia um JSON contendo a frase informada, a entidades associadas e a taxa de correspondência (confidence) de cada uma. Com a interpretação da mensagem presente nesse JSON, é possível implementar no código fonte do seu bot uma resposta para o usuário.
Bom, é isso! Eu espero ter te ajudado a entender como a Wit.ai funciona e pode te auxiliar no desenvolvimento dos seus bots. Para o post não ficar muito longo deixarei as integrações com o Telegram e o Messenger para outros posts.
Qualquer dúvida, deixa um comentário. =]
Olá tudo bem?
Parabéns pelo artigo.
Segui os passos, Tentei usar no Postman, criei com minha credencial do WitAi, tentei com e sem versão, usando as urls do manual que são as mesmas que vc passou…
Mas tudo que eu passo dá “Bad Request” :-\
Sabe o que pode ser?
Grato
Carlos Eduardo
whats 14 99195-4605
E ae Carlos, blz?
Acho que você deve estar errando nos parâmetros e cabeçalhos a serem usados no Postman para a requisição HTTP.
O método a ser utilizado deve ser o GET e a URL “https://api.wit.ai/message?v=20191203&q=”, onde o “q” é a sua frase.
Antes de executar a requisição, você precisa inserir, no HEADER, a chave Authorization com o valor “Bearer BC63BK….” (você encontra no menu Settings o seu token).
Ao executar o GET, você receberá a resposta processada pelo wit.ai.
A imagem de exemplo que eu coloquei no post resume esses passos:
https://luizmarcus.com/wp-content/uploads/2018/05/10.png
Testa e vê se funciona.
Espero ter ajudado.