/Myzap

Myzap - Desenvolvimento.

Primary LanguageJavaScriptMIT LicenseMIT

MyZAP-Flow

MyZAP-Flow é um projeto open source que conecta o Dialogflow ao WhatsApp
dando suporte nativo para o reconhecimento de áudios e permite a conexão
com outras plataformas por meio de sua API REST.

Instalação:

Para esse projeto é recomendado que se utilize o Node v14, pois se trata de uma versão nova e estável, garantindo a execução do código sem maiores problemas.

Antes que seja efetuado o clone desse projeto você tem que ter em mãos os seguintes arquivos e/ou links:

  • Link do seu banco de dados Mongo DB
  • Ele é similar a esse: mongodb://localhost:27017/myzap-db (Onde o myzap-db é o nome do banco, você pode colocar o que quiser.)

    Você pode conseguir um banco de dados mongo com até 512Mb de armazenamento gratuito em:
    https://www.mongodb.com/cloud/atlas/signup (Solução oficial do Mongo)

    Caso você queira rodar localmente indico esse tutorial do Youtube:
    https://www.youtube.com/watch?v=aYRkF7sHrbk

  • Arquivo JSON do seu projeto Google Cloud Platforms
  • Esse arquivo é fundamental para que seja efetuada a comunicação com seu Chatbot do Dialogflow
    Caso você não a tenha siga os passos da sessão Configurando o Dialogflow.

  • Nome do seu projeto Google Cloud Plataforms
  • É o identificador único do seu projeto, geralmente está contido dentro do JSON, mas caso você não saiba na aba Configurando o Dialogflow é mostrado como fazer a coleta deste dado.

Instalação do Projeto

Para clonar o projeto em seu computador local execute o seguinte comando:

git clone https://github.com/NiedsonEmanoel/Myzap-Flow

Logo após o clone do projeto é necessário que você copie o arquivo .env-example para um arquivo .env

Windows:

cd src/
cp .env-example .env

Linux ou Mac:

cd src/ && cp .env-example .env

Com o arquivo .env criado, vamos configura-lo

O arquivo .env configura as variáveis de ambiente de nossa aplicação, configurar ele é um passo obrigatório.

A notação " ./ " se refere a pasta src/ do projeto, então coloque seus arquivos dentro dessa pasta.

#Coloque abaixo o link do seu banco de dados mongo, não se preocupe com a configuração, o myzap configura automaticamente.
MONGO=mongodb://localhost:27017/yourdatabase

#Localização do seu arquivo Json do dialogflow dentro da pasta src/
#A notação abaixo é a mesma coisa de: /Myzap/src/seuarquivo.json
JSON_LOCATION =./seuarquivo.json

#Idioma do BOT
LANGUAGE_CODE=pt-BR

#Porta da aplicação.
PORT=3000

#Você vai utilizar o https? 0-> Não, 1-> Sim
useHTTPS=0

#Localização do Certificado caso você opte pelo HTTPS.
#Mesma regra do JSON: /Myzap/src/cert.pem
CERT_CRT=./cert.pem

#Localização da Chave privada caso você opte pelo HTTPS.
#Mesma regra do JSON: /Myzap/src/cert.key
CERT_KEY=./cert.key

#Será implementado em versões futuras.
#TOKENDialogflow=eb68ebf61f2dc69f3eb084531bb5dc52

#Segredo utilizado na assinatura digital do JWT.
SECRET=86d0f103bf15d37ebb1f5a23a1a4dd06

#Intent que redireciona o usuário para o modo de atendimento ao cliente, onde o BOT passa a ignorar a pessoa, permitindo uma conversação normal.
#Só é ativado esse modo após o match com a intent abaixo, por enquanto não recomendo usar pois não tenho o front para fazer esse controle.
INTENT_SAC=Atendimento

#Limites de caracteres por mensagem. 256 é o limite do dialogflow.
CHAR_LIMIT_PER_MESSAGE=256

#Enviar mensagem de verificação informando que o aparelho está em uma plataforma de automação enviando uma mensagem para o próprio número: 0-> Não, 1-> Sim
SEND_NO_PISHING=0

#Limite de sessões simultâneas
SESSION_LIMIT=16

#HostAplicação
HOST=localhost

#Seviço de NODEMAILER
USER_MAIL=
PASSWORD_MAIL=
SERVICE_MAIL=

#Define qual engine usar: VENOM - WPPCONNECT
ENGINE=VENOM

#COLOQUE O LINK E PORTA DE PRODUÇÃO DA Aplicação
PRODUCTION_LINK=http://10.0.1.103


#Mensagem 01 - User não cadastrado
MESSAGE_ONE_USER_NOT_FOUND=Olá %GREETING%, você ainda não está cadastrado em nosso sistema.

#Mensagem 02 - User não cadastrado
MESSAGE_TWO_USER_NOT_FOUND=Para podermos lhe atender com uma experiência completa, digite seu nome e sobrenome.

Iniciando o projeto

Para iniciar o projeto é bem simples, basta rodar dois comandos (O primeiro só precisa uma vez)

Instalação das dependências, recomendo executar esse comando duas ou três vezes:

npm install

Inicialização do projeto:

npm start

Vai aparecer em sua janela de comando um código QR escaneie ele com seu WhatsApp e o bot entrará em pleno funcionamento.

Informações relevantes

Conhecendo o DialogFlow

O DialogFlow (antigo api.ai) é uma plataforma de criação de chatbots da Google com foco no processamento de linguagem natural. O processamento de linguagem natural é utilizado por diversos recursos de inteligência artificial, o seu objetivo é entender a frase e formar a melhor resposta possível para aquela frase. Ele está dividido em diversas fases. Normalização, Remoção de numerais, Remoção de Stopwords, Correção ortográfica, Stemização e Lematização. Essas etapas fazem, basicamente, a quebra da frase, para que seja possível compreender os significados e assim saber em que contexto devemos encaixar o sentido da frase.

Configurando o DialogFlow

Vá até as configurações do DialogFlow, guarde o nome do projeto e clique no nome dele para acessarmos o painel do GCP.

Entre no GCP e vá até APIs e serviços e logo após vá em credenciais.

Vá em contas de serviço e clique no primeiro e-mail que aparecer.

Clique em criar chave, nova chave, escolha o formato JSON e faça o download para seu computador.

Guarde essa chave dentro da pasta src/ e jamais suba ela no github pois ela é a autenticadora do seu projeto e em mãos erradas pode lhe trazer grandes dores de cabeça.

O que é o Venom?

O Venom Bot é uma biblioteca que consegue integrar o seu número do WhatsApp abrindo por debaixo dos panos o WhatsApp Web. Uma vez que é realizada a autenticação via QR Code diretamente do terminal, você conseguirá manipular via código JavaScript toda e qualquer interação disponível no WhatsApp Web, mais especificamente pelo Node.js.

Conclusão

O uso da API Oficial do WhatsApp é quase insustentável e o venom cumpre bem o seu papel em permitir a manipulação do WhatsApp via código. Se aliando a essa biblioteca temos o DialogFlow que é um serviço da Google poderoso para a criação desses agentes automatizados e utilizar ele junto com o venom nos permite uma liberdade maior do projeto, pois o nosso bot passa a ignorar erros ortográficos e se algum trecho foi escrito em maiúsculo ou não. Ao invés de perdemos tempo e poluirmos o codigo com testes condicionais para verificar se foi escrito por Ex: OI ou Oi ou oi, podemos ser mais objetivos e definirmos todas essas expressões como uma única Intent.

Agradecimentos:

Sobre o autor [META]

Niedson Emanoel – Instagram: @niedsonemanoelcontato@niedsonemanoel.com.br

Distribuído sob a licença MIT. Veja LICENSE para mais informações.

Contribua

  1. Faça o fork do projeto (https://github.com/NiedsonEmanoel/Myzap-Flow/fork)
  2. Crie uma branch para sua modificação (git checkout -b feature/fooBar)
  3. Faça o commit (git commit -am 'Add some fooBar')
  4. Push (git push origin feature/fooBar)
  5. Crie um novo Pull Request