Blog

Chatbot com WhatsApp, Telegram e Inteligência artifical em Maker

Neste artigo vou descrever um sistema simples de fazer e totalmente funcionando capaz de automatizar o atendimento via chat (WhatsApp, Telegram…).

O exemplo aqui descrito é uma versão bem resumida do potencial do uso das ferramentas de chat combinadas com inteligência artifical. Tentei manter esse exemplo o mais simples e didático possível.

Ao final do texto tem o link para os fontes em Maker 3.9, mas podem ser usados em qualquer versão mais recente, desde que funcione em Tomcat 7.0, 8.0, 8.5 ou mais recente.

Resumo do projeto

O projeto consiste em três grandes blocos:

  1. Canais de comunicação (WhatsApp, Telegram, Facebook…);
  2. Robôs de automação (DailogFlow ou IBM Watson);
  3. Conversas que vinculam um número de telefone, ou contato do Facebook a uma sessão no robô.

As mensagens são recebidas no canal, o texto é extraído e então enviado ao robô, que responde de acordo com a programação.

No Maker todos os fluxos estão dentro da pasta “L2MAKER-Chat”

Recursos necessários

  1. Maker 3.6 ou mais recente;
  2. Banco de dados (PostgreSQL, MySQL, MS-SQL, Firebird,…) ;
  3. Número do WhatsApp;
  4. Conta no DialogFlow ou IBM Watson;
  5. Tomcat 7.0, 8.0 ou 8.5 ou mais recente;
  6. Servidor com acesso externo HTTPS (para integração com o Robô).

APIs utilizadas

Banco de dados

Neste exemplo usamos o PostgreSQL 9, mas o sistema em si não utiliza nenhum recurso específico do banco de dados. Assim, ele pode ser portado para diferentes soluções.

Para facilitar a identificacação das tabelas, todas do exemplo são prefixadas com “L2S_CHAT_

  1. L2S_CHAT_CONVERSA;
  2. L2S_CHAT_CANAL;
  3. L2S_CHAT_ROBO_AUTOMACAO.

Canais de comunicação

Os “canais” são os meios de envio e recepção de mensagens. Que podem vir do WhatsApp, Telegram, Facebook, ou mesmo de um chat interno. A nossa API de chat resolve os problemas de comunicação com os principais fornecedores de soluções para WhatsApp. Ela também cuida do processo de pradronização das mensagens. Assim, as mensagens de diferentes fornecedores chegam ao sistema de forma unificada, facilitando a troca de fornecedores.

Fornecedores de WhatsApp

A WhatsApp credenciou alguns fornecedores, os valroes variam muito, e não vamos entrar em detalhes sobre o cada um… Neste exemplo utilizamos o “https://www.webplugin.club/” por além de oferecer uma solução ponto-a-ponto, sem servidores externos, e ter 15 dias de trial, veja como usar essa API no Maker neste tópico específico.

Para testar local utilize o endereço:

ws://127.0.0.1:8039/webrun/wppplugin-ws

Se tiver um endereço seguro HTTPS você pode usar:

wss://exemplo.meuservidor.com.br/webrun/wppplugin-ws

Aqui tem uma ferramente que você pode testar se a instalação da API está funcionando no Webrun.

No campo parametros extras você pode adicionar uma senha para validar dentro do Maker. EX:
{“senha”: “L2MAKER.com.BR”}

Ou deixar sem nada:
{ }

Assim você saberá que a mensagem veio da origem desejada. Após configurar tudo você pode testar a comunicação com o Maker, será enviado uma mensagem como a ilustrada abaixo:

Configurando o canal de comunicação dentro do sistema

No cadastro do sistema basta cadastrar um novo canal;

No provedore escolha a opção WebPlugin.CLUB

No campo telefone informar o número (exatamente como está no WhatsApp, incluindo o prefixo “55” (Brasil).

Passos extras no Maker

Para receber as mensagens o fluxo “L2S-Chat-WEB-ReceberMensagem” deve ser marcado com WEB (botão direito na lista de fluxos). Alguns fornecedores não precisam de callback externo. Então esse passo é opcional.

Processando as mensagens recebidas

As mensagens recebidas são entregues no fluxo “L2S-Chat-ProcessarMensagensRecebidas” (o fluxo é determinado na hora de criar a conexão, no exemplo isso é feito dentro do fluxo “L2S-Chat-ObterConexao“).

No fluxo “L2S-Chat-ProcessarMensagensRecebidas” você pode determinar o que fazer com as mensagens recebidas. Você pode salvar em banco, ou responder na hora, no nosso exemplos vamos enviar para a API de diálogo responder.

Robôs de automação

Após configurar o canal de configuração e enviar e receber a primeira mensagem você receberá uma resposta fixa “Robô de automação não configurado.”

Importante: Deste ponto em diante é necessário acesso via HTTPS externo ao seu servidor. É uma exigência do Google e IBM para garantir o sigilo da informação.

OBS: Se precisar de ajuda para colocar HTTPS no seu Tomcat/Webrun você pode pedir uma proposta com valores ao nosso comercial@l2s.com.br.

IBM Watson Assistant

Apesar de ter uma experiência mais extensa com a ferramenta da Google, neste exemplo adotei o Assistant do Watson.

Na página “Assistant Settings” copie as informações de acesso ao servidor conforme ilustrado na imagem abaixo:

  • Servidor deve ser copiado somente o inicio indicando o servidor.

Após configurar e salvar utilize a aba “Testar” para verificar a comunicação com o servidor da IBM.

Agora você já pode testar via WhatsApp:

DialogFlow

Nesta versão não vamos cobrir a configuração do DialogFlow. Em breve atualizaremos com esta opção tambem. Informações sobre o uso desta API no Maker.

Considerações gerais

O projeto aqui apresentado é muito mais um esboço, do que um sistema funcional. O objeto foi unicamente expor as funcionalidades e parte da capacidade das nossas APIs.

Dicas, melhorias e sugestões

  1. Só está gravando a última mensagem recebida ou enviada, mas pode ser gravado todo o histórico da conversa;
  2. Se você estiver utilizando um canal criptografado ponta-a-ponta você pode passar dados financeiros ou pessoais;
  3. É possível identificar pelo número qual robô irá atender determinada pessoa, mudando o comportamento quando é um cliente ou um funcionário;
  4. Cria um mecanismo que suspende a resposta automática e passa a conversa para uma pessoa;
  5. Algumas coisas podem ser mantidas em sessão global para reduzir as consultas ao banco de dados.

Arquivos

  1. Fontes em Maker (*.FRZ) (atualizado em 07/11/2019);
  2. Script das tabelas em PostgreSQL 9.

Leave a comment