{"id":1472,"date":"2019-10-11T13:33:47","date_gmt":"2019-10-11T16:33:47","guid":{"rendered":"http:\/\/www.l2maker.com.br\/documentacao\/?p=1472"},"modified":"2019-11-07T11:46:14","modified_gmt":"2019-11-07T14:46:14","slug":"chatbot-com-whatsapp-telegram-e-inteligencia-artifical-em-maker","status":"publish","type":"post","link":"https:\/\/www.l2maker.com.br\/documentacao\/2019\/10\/chatbot-com-whatsapp-telegram-e-inteligencia-artifical-em-maker\/","title":{"rendered":"Chatbot com WhatsApp, Telegram e Intelig\u00eancia artifical em Maker"},"content":{"rendered":"<p>Neste artigo vou descrever um sistema simples de fazer e totalmente funcionando capaz de automatizar o atendimento via chat (WhatsApp, Telegram&#8230;).<\/p>\n<p>O exemplo aqui descrito \u00e9 uma vers\u00e3o bem resumida do potencial do uso das ferramentas de chat combinadas com intelig\u00eancia artifical. Tentei manter esse exemplo o mais simples e did\u00e1tico poss\u00edvel.<\/p>\n<p>Ao final do texto tem o link para os fontes em Maker 3.9, mas podem ser usados em qualquer vers\u00e3o mais recente, desde que funcione em <strong>Tomcat 7.0, 8.0, 8.5<\/strong>\u00a0ou mais recente.<\/p>\n<h1>Resumo do projeto<\/h1>\n<p>O projeto consiste em tr\u00eas grandes blocos:<\/p>\n<ol>\n<li><strong>Canais<\/strong> de comunica\u00e7\u00e3o (WhatsApp, Telegram, Facebook&#8230;);<\/li>\n<li><strong>Rob\u00f4s<\/strong> de automa\u00e7\u00e3o (DailogFlow ou IBM Watson);<\/li>\n<li><strong>Conversas<\/strong> que vinculam um n\u00famero de telefone, ou contato do Facebook a uma sess\u00e3o no rob\u00f4.<\/li>\n<\/ol>\n<p>As mensagens s\u00e3o recebidas no canal, o texto \u00e9 extra\u00eddo e ent\u00e3o enviado ao rob\u00f4, que responde de acordo com a programa\u00e7\u00e3o.<\/p>\n<p>No Maker todos os fluxos est\u00e3o dentro da pasta &#8220;L2MAKER-Chat&#8221;<\/p>\n<h3>Recursos necess\u00e1rios<\/h3>\n<ol>\n<li>Maker 3.6 ou mais recente;<\/li>\n<li>Banco de dados (PostgreSQL, MySQL, MS-SQL, Firebird,&#8230;) ;<\/li>\n<li>N\u00famero do WhatsApp;<\/li>\n<li>Conta no DialogFlow ou IBM Watson;<\/li>\n<li>Tomcat 7.0, 8.0 ou 8.5 ou mais recente;<\/li>\n<li>Servidor com acesso externo HTTPS (para integra\u00e7\u00e3o com o Rob\u00f4).<\/li>\n<\/ol>\n<h3>APIs utilizadas<\/h3>\n<ul>\n<li><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/api-whatsapp\/\">Chat \/ WhatsApp \/ Telegram<\/a>;<\/li>\n<li><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/api-de-integracao-com-ibm-watson-assistant-e-google-dialogflow\/\">Dialog <\/a>\/ <a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2018\/12\/usando-a-api-de-dialogos-com-o-dialogflow-do-google\/\">Google DialogFlow<\/a> e IBM Watson Assistant;<\/li>\n<\/ul>\n<h1>Banco de dados<\/h1>\n<p>Neste exemplo usamos o PostgreSQL 9, mas o sistema em si n\u00e3o utiliza nenhum recurso espec\u00edfico do banco de dados. Assim, ele pode ser portado para diferentes solu\u00e7\u00f5es.<\/p>\n<p>Para facilitar a identificaca\u00e7\u00e3o das tabelas, todas do exemplo s\u00e3o prefixadas com &#8220;<strong>L2S_CHAT_<\/strong>&#8220;<\/p>\n<ol>\n<li>L2S_CHAT_CONVERSA;<\/li>\n<li>L2S_CHAT_CANAL;<\/li>\n<li>L2S_CHAT_ROBO_AUTOMACAO.<\/li>\n<\/ol>\n<h1>Canais de comunica\u00e7\u00e3o<\/h1>\n<p>Os &#8220;canais&#8221; s\u00e3o os meios de envio e recep\u00e7\u00e3o 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\u00e7\u00e3o com os principais fornecedores de solu\u00e7\u00f5es para WhatsApp. Ela tamb\u00e9m cuida do processo de pradroniza\u00e7\u00e3o das mensagens. Assim, as mensagens de diferentes fornecedores chegam ao sistema de forma unificada, facilitando a troca de fornecedores.<\/p>\n<h3>Fornecedores de WhatsApp<\/h3>\n<p>A WhatsApp credenciou alguns fornecedores, os valroes variam muito, e n\u00e3o vamos entrar em detalhes sobre o cada um&#8230; Neste exemplo utilizamos o &#8220;<a href=\"http:\/\/www.webplugin.club\/\"><strong>https:\/\/www.webplugin.club\/<\/strong><\/a>&#8221; por al\u00e9m de oferecer uma solu\u00e7\u00e3o ponto-a-ponto, sem servidores externos, e ter 15 dias de trial, <a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2019\/10\/adicionado-o-webplugin-club-para-comunicacao-via-whatsapp-no-maker\/\">veja como usar essa API no Maker neste t\u00f3pico espec\u00edfico<\/a>.<\/p>\n<p>Para testar local utilize o endere\u00e7o:<\/p>\n<p><strong>ws<\/strong>:\/\/127.0.0.1:<strong>8039<\/strong>\/<strong>webrun<\/strong>\/<strong>wppplugin-ws<\/strong><\/p>\n<p>Se tiver um endere\u00e7o seguro HTTPS voc\u00ea pode usar:<\/p>\n<p><strong>wss<\/strong>:\/\/exemplo.meuservidor.com.br\/<strong>webrun<\/strong>\/<strong>wppplugin-ws<\/strong><\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2019\/11\/testando-a-comunicacao-com-o-websocket\/\">Aqui tem uma ferramente que voc\u00ea pode testar se a instala\u00e7\u00e3o <\/a><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2019\/11\/testando-a-comunicacao-com-o-websocket\/\">da API<\/a><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2019\/11\/testando-a-comunicacao-com-o-websocket\/\">\u00a0est\u00e1 funcionando no Webrun.<\/a><\/p>\n<p>No campo parametros extras voc\u00ea pode adicionar uma senha para validar dentro do Maker. EX:<br \/>{&#8220;senha&#8221;: &#8220;L2MAKER.com.BR&#8221;}<\/p>\n<p>Ou deixar sem nada:<br \/>{ }<\/p>\n<p>Assim voc\u00ea saber\u00e1 que a mensagem veio da origem desejada. Ap\u00f3s configurar tudo voc\u00ea pode testar a comunica\u00e7\u00e3o com o Maker, ser\u00e1 enviado uma mensagem como a ilustrada abaixo:<\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1495\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP.png\" alt=\"\" width=\"1168\" height=\"706\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP.png 1168w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP-300x181.png 300w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP-768x464.png 768w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-WPP-1024x619.png 1024w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/a><\/p>\n<h4>Configurando o canal de comunica\u00e7\u00e3o dentro do sistema<\/h4>\n<p>No cadastro do sistema basta cadastrar um novo canal;<\/p>\n<p>No provedore escolha a op\u00e7\u00e3o WebPlugin.CLUB<\/p>\n<p>No campo telefone informar o n\u00famero (exatamente como est\u00e1 no WhatsApp, incluindo o prefixo &#8220;55&#8221; (Brasil).<\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/cancal_configuracao.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1572\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/cancal_configuracao.png\" alt=\"\" width=\"735\" height=\"538\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/cancal_configuracao.png 735w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/cancal_configuracao-300x220.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><\/a><\/p>\n<h4>Passos extras no Maker<\/h4>\n<p>Para receber as mensagens o fluxo &#8220;<strong>L2S-Chat-WEB-ReceberMensagem<\/strong>&#8221; deve ser marcado com WEB (bot\u00e3o direito na lista de fluxos). Alguns fornecedores n\u00e3o precisam de callback externo. Ent\u00e3o esse passo \u00e9 opcional.<\/p>\n<h4>Processando as mensagens recebidas<\/h4>\n<p>As mensagens recebidas s\u00e3o entregues no fluxo &#8220;<strong>L2S-Chat-ProcessarMensagensRecebidas<\/strong>&#8221; (o fluxo \u00e9 determinado na hora de criar a conex\u00e3o, no exemplo isso \u00e9 feito dentro do fluxo &#8220;<strong>L2S-Chat-ObterConexao<\/strong>&#8220;).<\/p>\n<p>No fluxo &#8220;<strong>L2S-Chat-ProcessarMensagensRecebidas<\/strong>&#8221; voc\u00ea pode determinar o que fazer com as mensagens recebidas. Voc\u00ea pode salvar em banco, ou responder na hora, no nosso exemplos vamos enviar para a API de di\u00e1logo responder.<\/p>\n<h1>Rob\u00f4s de automa\u00e7\u00e3o<\/h1>\n<p>Ap\u00f3s configurar o canal de configura\u00e7\u00e3o e enviar e receber a primeira mensagem voc\u00ea receber\u00e1 uma resposta fixa &#8220;Rob\u00f4 de automa\u00e7\u00e3o n\u00e3o configurado.&#8221;<\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1481\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo1.png\" alt=\"\" width=\"649\" height=\"551\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo1.png 649w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo1-300x255.png 300w\" sizes=\"auto, (max-width: 649px) 100vw, 649px\" \/><\/a><\/p>\n<p>Importante: Deste ponto em diante \u00e9 necess\u00e1rio acesso via HTTPS externo ao seu servidor. \u00c9 uma exig\u00eancia do Google e IBM para garantir o sigilo da informa\u00e7\u00e3o.<\/p>\n<p>OBS: Se precisar de ajuda para colocar HTTPS no seu Tomcat\/Webrun voc\u00ea pode pedir uma proposta com valores ao nosso comercial@l2s.com.br.<\/p>\n<h3>IBM Watson Assistant<\/h3>\n<p>Apesar de ter uma experi\u00eancia mais extensa com a ferramenta da Google, neste exemplo adotei o Assistant do Watson.<\/p>\n<p>Na p\u00e1gina &#8220;<strong>Assistant Settings<\/strong>&#8221; copie as informa\u00e7\u00f5es de acesso ao servidor conforme ilustrado na imagem abaixo:<\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1493\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure.png\" alt=\"\" width=\"1687\" height=\"591\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure.png 1687w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure-300x105.png 300w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure-768x269.png 768w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Passo-Watson-Configure-1024x359.png 1024w\" sizes=\"auto, (max-width: 1687px) 100vw, 1687px\" \/><\/a><\/p>\n<ul>\n<li>Servidor deve ser copiado somente o inicio indicando o servidor.<\/li>\n<\/ul>\n<p>Ap\u00f3s configurar e salvar utilize a aba &#8220;Testar&#8221; para verificar a comunica\u00e7\u00e3o com o servidor da IBM.<\/p>\n<h3><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1498\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM.png\" alt=\"\" width=\"796\" height=\"593\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM.png 796w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-300x223.png 300w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-768x572.png 768w\" sizes=\"auto, (max-width: 796px) 100vw, 796px\" \/><\/a><\/h3>\n<p>Agora voc\u00ea j\u00e1 pode testar via WhatsApp:<\/p>\n<p><a href=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1500\" src=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-2.png\" alt=\"\" width=\"1024\" height=\"669\" srcset=\"https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-2.png 1024w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-2-300x196.png 300w, https:\/\/www.l2maker.com.br\/documentacao\/wp-content\/uploads\/2019\/10\/Teste-IBM-2-768x502.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<h3>DialogFlow<\/h3>\n<p>Nesta vers\u00e3o n\u00e3o vamos cobrir a configura\u00e7\u00e3o do DialogFlow. Em breve atualizaremos com esta op\u00e7\u00e3o tambem. <a href=\"https:\/\/www.l2maker.com.br\/documentacao\/2018\/12\/usando-a-api-de-dialogos-com-o-dialogflow-do-google\/\">Informa\u00e7\u00f5es sobre o uso desta API no Maker.<\/a><\/p>\n<h1>Considera\u00e7\u00f5es gerais<\/h1>\n<p>O projeto aqui apresentado \u00e9 muito mais um esbo\u00e7o, do que um sistema funcional. O objeto foi unicamente expor as funcionalidades e parte da capacidade das nossas APIs.<\/p>\n<h1>Dicas, melhorias e sugest\u00f5es<\/h1>\n<ol>\n<li>S\u00f3 est\u00e1 gravando a \u00faltima mensagem recebida ou enviada, mas pode ser gravado todo o hist\u00f3rico da conversa;<\/li>\n<li>Se voc\u00ea estiver utilizando um canal criptografado ponta-a-ponta voc\u00ea pode passar dados financeiros ou pessoais;<\/li>\n<li>\u00c9 poss\u00edvel identificar pelo n\u00famero qual rob\u00f4 ir\u00e1 atender determinada pessoa, mudando o comportamento quando \u00e9 um cliente ou um funcion\u00e1rio;<\/li>\n<li>Cria um mecanismo que suspende a resposta autom\u00e1tica e passa a conversa para uma pessoa;<\/li>\n<li>Algumas coisas podem ser mantidas em sess\u00e3o global para reduzir as consultas ao banco de dados.<\/li>\n<\/ol>\n<h1>Arquivos<\/h1>\n<ol>\n<li><a href=\"https:\/\/www.l2maker.com.br\/publico\/apis\/exemplos\/ai\/l2maker-2019-11-07-exemplo1.zip\">Fontes em Maker (*.FRZ) (atualizado em 07\/11\/2019)<\/a>;<\/li>\n<li><a href=\"https:\/\/www.l2maker.com.br\/publico\/apis\/exemplos\/ai\/l2maker-2019-10-21-exemplo1.SQL\">Script das tabelas em PostgreSQL 9<\/a>.<\/li>\n<\/ol>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neste artigo vou descrever um sistema simples de fazer e totalmente funcionando capaz de automatizar o atendimento via chat (WhatsApp, Telegram&#8230;). O exemplo aqui descrito \u00e9 uma vers\u00e3o bem resumida do potencial do uso das ferramentas de chat combinadas com intelig\u00eancia artifical. Tentei manter esse exemplo o mais simples e did\u00e1tico poss\u00edvel. Ao final do [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[132,180,177],"tags":[],"class_list":["post-1472","post","type-post","status-publish","format-standard","hentry","category-documentacao-telegram","category-api-de-dialogos-como-usar","category-api-whatsapp-dicas-uso"],"_links":{"self":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/1472","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/comments?post=1472"}],"version-history":[{"count":38,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/1472\/revisions"}],"predecessor-version":[{"id":1591,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/posts\/1472\/revisions\/1591"}],"wp:attachment":[{"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/media?parent=1472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/categories?post=1472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.l2maker.com.br\/documentacao\/wp-json\/wp\/v2\/tags?post=1472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}