Os códigos abaixo podem ser baixados e ou copiados gratuitamente. Todos os códigos abaixo foram usados em projetos de chatbot para Whatsapp usando o Dialogflow, Fulfillment ou Webhooks.
Siga corretamente as instruções dos vídeos do canal econhecimento no Youtube. Se Inscreva no Canal Clicando Aqui
Quer Ganhar Dinheiro com Chatbots Para Whatsapp? Acesse agora Aqui para fazer o Curso Chatbot Para Whatsapp do Zero ao Profissional.
Código simples para webhook Glitch
Index.js
// server.js
const bodyParser = require("body-parser");
const express = require("express");
const app = express();
const { WebhookClient } = require("dialogflow-fulfillment");
// make all the files in 'public' available
// https://expressjs.com/en/starter/static-files.html
app.use(express.static("public"));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true})
);
// https://expressjs.com/en/starter/basic-routing.html
app.use(express.static("public"));
app.get("/", (request, response) => {
response.sendFile(__dirname + "/views/index.html");
});
//AQUI COMEÇA O SEU CHATBOT
app.post("/NOME", function(request, response) {
const agent = new WebhookClient({request: request, response: response});
//MAPEAMENTO DAS INTENTS
let intentMap = new Map();
intentMap.set('NOME DA INTENT', NOME DA FUNÇÃO);
agent.handleRequest(intentMap);
//CÓDIGO TESTE
function welcome(agent){
agent.add('Seja bem vindos! Teste de Webhook')
}
//FIM DO CÓDIGO TESTE
});
// listen for requests :)
const listener = app.listen(process.env.PORT, () => {
console.log("Your app is listening on port " + listener.address().port);
});
package.json
{
"//1": "describes your app and its dependencies",
"//2": "https://docs.npmjs.com/files/package.json",
"//3": "updating this file will download and update your packages",
"name": "hello-express",
"version": "0.0.1",
"description": "A simple Node app built on Express, instantly up and running.",
"main": "server.js",
"scripts": {
"start": "node server.js"
},
"dependencies": {
"body-parser": "*",
"dialogflow-fulfillment": "*",
"actions-on-google": "*",
"express": "*"
},
"engines": {
"node": "10.x"
},
"repository": {
"url": "https://glitch.com/edit/#!/hello-express"
},
"license": "MIT",
"keywords": [
"node",
"glitch",
"express"
]
}
Código para captura e pesquisa em planilha do Google
Captura
//FUNÇÃO DE CADASTRO DE LEADS
function cadastro(agent) {
const { nome, email, whatsapp } = agent.parameters;
const data = [{Nome: nome, Email: email, Telefone: whatsapp}];
//colocar o link da planilha gerada na API Sheet.Best
axios.post("AQUI VAI A SUA API SHEET", data);
agent.add(? Bacana ${nome}, Muito obrigado por suas informações pessoais.);
}
Código para pesquisa em planilha do Google
// PESQUISAR CLIENTE E EVENTOS
function pesquisa(agent) {
var Telefone = request.body.queryResult.parameters["telefone"];
//colocar o link da planilha gerada na API Sheet.Best
return axios.get("AQUI VAI SUA API SHEET")
.then(res => {
res.data.map(coluna => {
if (coluna.Telefone === Telefone)
response.json({
fulfillmentText:
"Aqui está o Resultado: " +
"\n" +
"*Cliente:* " +
coluna.Nome +
"\n" +
"*Telefone:* " +
coluna.Telefone +
"\n" +
"*Resultado:* " +
coluna.Resultado +
"\n\n" +
"Se eu puder ajudar com mais alguma coisa. Digite *MENU*"
});
});
});
}
Código para Saudação (Welcome)
let date = new Date();
let data = date.toLocaleString('pt-BR', {timeZone: "America/Sao_Paulo", hour: 'numeric', hour12: false });
function welcome(agent) {
if(data >=5 && data <=12)
agent.add('Oi ??? Bom dia!' +'\n'+'\n'+
'Seja muito bem vindo(a) ao nosso chatbot para Whatsapp' +'\n'+'\n'+
'Digite *Iniciar* para se inscrever no *Sorteio*');
else if(data >=13 && data <=18)
agent.add('Oi ??? Boa tarde!' +'\n'+'\n'+
'Seja muito bem vindo(a) ao nosso chatbot para Whatsapp' +'\n'+'\n'+
'Digite *Iniciar* para se inscrever no *Sorteio*');
else
agent.add('Oi ??? Boa noite!' +'\n'+'\n'+
'Seja muito bem vindo(a) ao nosso chatbot para Whatsapp' +'\n'+'\n'+
'Digite *Iniciar* para se inscrever no *Sorteio*');
}
Código para geração de ID’s
function uniqueID(){
function chr4(){
return Math.random().toString(16).slice(-6);
}
return chr4();
}
function welcome(agent){
agent.add(`Olá seu número de registro é, Numero: uniqueID()`);
}
Código para Envio de E-mails [Usado no Dialogflow]
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const nodemailer = require('nodemailer');
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
const agent = new WebhookClient({ request, response });
function sendEmail(agent) {
const Nome = request.body.queryResult.parameters.nome;
const Email = request.body.queryResult.parameters.email;
const Telefone = request.body.queryResult.parameters.telefone;
const Assunto = request.body.queryResult.parameters.assunto;
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: '[email protected]',
pass: 'sua senha'
// Para gerar uma senha no Gmail:
// 1 - Entre na configuração de segurança da conta da Google (https://myaccount.google.com/security)
// 2 - Abra opção "App Passwords"
// 3 - Escolha o App "Mail"
// 4 - Escolha o Dispositivo "Other" e dê um nome desejado ("dialogflow", por exemplo)
// 5 - Copie a senha gerada e cole aqui no código
}
});
var mailOptions = {
from: 'Chatbot Para Whatsapp <[email protected]>',
to: '[email protected]',
subject: 'Nova Mensagem!',
text: ('Usuário: ' + Nome + '\n E-mail: ' + Email + '\n Telefone: ' + Telefone +'\n Assunto: ' + Assunto)
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
agent.add('Ok, suas informações foram enviadas para a nossa equipe!');
}
// Run the proper function handler based on the matched Dialogflow intent name
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('sendEmail', sendEmail);
agent.handleRequest(intentMap);
});
Códigos usados no projeto (package.json)
"nodemailer": "^6.7.2"