Códigos para Chatbot

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"

Fique Atualizado, É 100% Gratis!

Gostou deste artigo? Cadastre-se para receber novos conteúdos em primeira mão!


* Anti-SPAM: Seus dados nunca serão vendidos nem repassados para terceiros.

Deixe um comentário