Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/niedsonemanoel/myzap
Myzap - Desenvolvimento.
https://github.com/niedsonemanoel/myzap
dialogflow node
Last synced: about 2 months ago
JSON representation
Myzap - Desenvolvimento.
- Host: GitHub
- URL: https://github.com/niedsonemanoel/myzap
- Owner: NiedsonEmanoel
- License: mit
- Created: 2021-01-29T19:03:19.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-01-24T04:55:31.000Z (almost 2 years ago)
- Last Synced: 2023-03-07T11:13:07.943Z (almost 2 years ago)
- Topics: dialogflow, node
- Language: JavaScript
- Homepage:
- Size: 35.4 MB
- Stars: 7
- Watchers: 3
- Forks: 8
- Open Issues: 18
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
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
- Arquivo JSON do seu projeto Google Cloud Platforms
- Nome do seu projeto Google Cloud Plataforms
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
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.
É 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:
```sh
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:
```sh
cd src/
```
```sh
cp .env-example .env
```
#
Linux ou Mac:
```sh
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.
```sh
#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.
![](https://github.com/NiedsonEmanoel/Myzap-Flow/raw/092b418ec28ff35be186d48882812911db965e6a/assets/8.png)
#
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.
![](https://github.com/NiedsonEmanoel/Myzap-Flow/raw/092b418ec28ff35be186d48882812911db965e6a/assets/3.png)
#
Entre no GCP e vá até APIs e serviços e logo após vá em credenciais.
![](https://github.com/NiedsonEmanoel/Myzap-Flow/raw/092b418ec28ff35be186d48882812911db965e6a/assets/4.png)
#
Vá em contas de serviço e clique no primeiro e-mail que aparecer.
![](https://github.com/NiedsonEmanoel/Myzap-Flow/raw/092b418ec28ff35be186d48882812911db965e6a/assets/5.png)
#
Clique em criar chave, nova chave, escolha o formato JSON e faça o download para seu computador.
![](https://github.com/NiedsonEmanoel/Myzap-Flow/raw/092b418ec28ff35be186d48882812911db965e6a/assets/6.png)
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: [@niedsonemanoel](https://instagram.com/niedsonemanoel) – [[email protected]](mailto:[email protected])
Distribuído sob a licença MIT. Veja `LICENSE` para mais informações.
#
## Contribua
1. Faça o _fork_ do projeto ()
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_