Como mencionei no post sobre otimização de bots, existem ferramentas que auxiliam o desenvolvedor na criação de um bot. Dentre essas ferramentas está a Api.ai, a qual faz uso de Machine Learning para processar as mensagens e tornar a conversa entre o bot e o usuário mais agradável.
Neste post, irei demonstrar como utilizar a plataforma Api.ai para criar um bot. O exemplo a ser criado neste post será baseado no bot desenvolvido no primeiro post sobre bots para o Telegram que publiquei aqui no blog. Na ocasião, criamos um bot que, quando solicitado, envia os resultados da loteria ao usuário. Sendo assim, o bot a ser desenvolvido neste post terá o mesmo comportamento.
A Api.ai possui uma documentação bem explicativa sobre todos os seus recursos. Dessa forma, nesse post, não irei ser muito detalhista.
Vamos lá!
Errata (10/10/2017): O Api.ai teve seu nome alterado para DialogFlow.
1- Criando uma Conta no Api.ai
O primeiro passo antes de iniciarmos a construção do bot é a criação da conta no Api.ai. Esse procedimento é bem simples. Basta acessar o site https://api.ai e clicar em “Ir para o console”.
A criação da conta é feita através do login com o Google (já que a plataforma foi comprada pelo Google xD). Sendo assim, clicamos no botão “Sign in with Google” .
Feito isso, já temos acesso à plataforma.
2- Criando um Agente (Agent)
Agora que já temos acesso à plataforma, o próximo passo, na construção do nosso bot, é criarmos um agente. Um agente é a representação do nosso bot na plataforma. É nele que vamos introduzir os comportamentos e funções que desejamos que nosso bot execute.
Para criar um agente, acessamos o menu “Create Agent” e preenchemos os campos solicitados. Uma observação importante é que o título não pode conter espaços em branco. Além disso, ao clicar em “Save“, junto com o agente, será criado um projeto Google. Esse projeto Google conterá todas as API necessárias para que o agente funcione.
3-Definição das Entidades (Entities)
Com o agente criado, a próxima etapa é a definição das entidades. Uma entidade (entity) é um objeto usado para extrair valores a partir das mensagens em linguagem natural. Qualquer dado que seja necessário interpretar deve ser especificado como entidade.
Como o nosso bot deverá interpretar as mensagens enviadas por usuários relacionadas a jogos de loteria, podemos criar uma entidade chamada “Jogos”. Essa entidade será responsável por agregar todos os nomes e sinônimos dos jogos de loterias. A imagem abaixo mostra ficou a definição da entidade:
4-Definição das Intenções (Intents)
Após definir a entidade, podemos seguir para a definição das intenções. Uma intenção (intent) representa o mapeamento entre o que o usuário diz e qual ação deve ser tomada pelo bot.
Como é possível ver na imagem abaixo, a Api.ai já possui duas intenções pré-definidas:
- Default Fallback Intent: possui algumas mensagens preestabelecidas que serão enviadas ao usuário caso o bot não reconheça a solicitação recebida. Frases como “Lamento, mas não compreendi.” e “Infelizmente, não captei o que deseja.” são utilizadas como resposta. É possível adicionar mais frases além das preestabelecidas.
- Default Welcome Intent: possui mensagens de boas vindas que são mostradas ao usuário quando ele inicia a interação com o bot. Frases como “Ola!” e “Oi!” são utilizadas como resposta. É possível adicionar mais frases além das preestabelecidas.
Além das intenções pré-definidas, precisamos criar uma nova intenção. A intenção irá, ao receber a mensagem do usuário, interpretar qual jogo de loteria ele deseja saber o resultado e enviar a resposta. Para criá-la, primeiramente, é necessário definir um título. Em seguida, no campo “User says” definimos as frases que o bot deverá interpretar caso as receba.
Na imagem a seguir é possível ver que foram definidas várias frases. Na frase “Resultado da mega-sena”, a palavra “mega-sena” faz parte do conjunto de nomes de jogos que declaramos anteriormente na entidade Jogos. Para informar essa relação ao bot, selecionamos a palavra “mega-sena” e, no menu, escolhemos a entidade @Jogos. Ao fazer isso, mesmo que o usuário digite a frase “Resultado da quina”, o bot saberá que “quina” refere-se a um jogo de loteria.
Com as frases que o bot pode vir a interpretar já definidas, devemos configurar uma resposta a ser enviada por ele ao usuário quando recebê-las. Essas respostas são especificadas no campo “Text Response“. No caso exposto na imagem abaixo, a frase “Um momento, por favor. Irei verificar qual foi o resultado da $Jogos” foi a resposta escolhida e no lugar da variável $Jogos, o bot utilizará o nome do jogo de loteria obtido na mensagem do usuário.
5-Testando o Bot
Agora que o agente já possui entidade e intenção definidas, podemos testar o bot para verificar se tudo está funcionando como pensamos. Para isso, é preciso digitar alguma mensagem no campo de texto ao lado direito da tela, como mostra a imagem abaixo:
No caso da imagem acima, a mensagem digitada foi “teste” e o bot respondeu “Desculpe, não compreendi”, uma vez que a palavra “teste” não faz parte da entidade Jogos. Porém, se a frase digitada for “mega”, o bot responde com a mensagem “Um momento, por favor. Irei verificar qual foi o resultado da Mega-Sena“, ou seja, ele reconhece que o jogo citado pelo usuário foi a Mega-Sena.
Hoje, irei parar por aqui para não alongar o post. Este post servirá como base para implementarmos as integrações do bot que acabamos de criar ao Telegram e ao Facebook Messenger. Junto com essa integração, no próximo post, vou mostrar também como fazer para o bot mostrar o resultado da loteria ao invés da frase “Um momento, por favor. Irei verificar qual foi o resultado da …“. Sendo assim, no próximo post, já vai ter código!
Espero que este post e os próximos ajudem você a notar as diferenças entre implementar um bot com e sem o auxilio de uma plataforma de machine learning como é a Api.ai.
Qualquer dúvida, deixa um comentário. =]
Boa noite. Estou ansioso para seu próximo post, tem previsão de quando sai? Sabe qual será a linguagem que você vai programar? (Um exemplo em Python seria maravilhoso de ver)
E ae chará, blz? kkkk
Vou tentar disponibilizar a segunda parte do post ainda essa semana. Se você assinar a newsletter, assim que eu publicar, o aviso da postagem chega no seu email. =]
Como em todos os posts sobre bots aqui do blog eu venho usando PHP, vou manter o padrão. Mas não se preocupe, o código que eu vou mostrar não é complexo e acho que será tranquilo converter para Python.
Obrigado pelo interesse.
Ola Luiz,
Gostaria de entrar em contato com você, poderia me enviar um e-mail?
[email protected]
Fico no aguardo, Abs!