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.
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.)
- Arquivo JSON do seu projeto Google Cloud Platforms Esse arquivo é fundamental para que seja efetuada a comunicação com seu Chatbot do Dialogflow
- Nome do seu projeto Google Cloud Plataforms
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
Caso você não a tenha siga os passos da sessão Configurando o Dialogflow.
É 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.
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
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.
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.
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.
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 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.
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.
Niedson Emanoel – Instagram: @niedsonemanoel – contato@niedsonemanoel.com.br
Distribuído sob a licença MIT. Veja LICENSE
para mais informações.
- Faça o fork do projeto (https://github.com/NiedsonEmanoel/Myzap-Flow/fork)
- Crie uma branch para sua modificação (
git checkout -b feature/fooBar
) - Faça o commit (
git commit -am 'Add some fooBar'
) - Push (
git push origin feature/fooBar
) - Crie um novo Pull Request