Como Criar um Bot Utilizando o Api.ai

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”.
apiaitelegram1

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” .

apiaitelegram2

Feito isso, já temos acesso à plataforma.

apiaitelegram3

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.

apiaitelegram4

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:

apiaitelegram5

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.

apiaitelegram7

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.

apiaitelegram6

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.

apiaitelegram11

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:

apiaitelegram8

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.apiaitelegram9

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. =]

 

2 Comment

  1. Luís says: Responder

    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)

    1. Luiz Marcus Luiz Marcus says: Responder

      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.

Deixe uma resposta para Luiz Marcus Cancelar resposta