Skip to content

Instantly share code, notes, and snippets.

@MichaelBarney
Last active October 20, 2023 22:19
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save MichaelBarney/6c5a2b5d0e9eebb8a67e97b268cac1e7 to your computer and use it in GitHub Desktop.
Save MichaelBarney/6c5a2b5d0e9eebb8a67e97b268cac1e7 to your computer and use it in GitHub Desktop.
Exemplo de um 'fufillment' para ser usado no Dialogflow
'use strict';
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
var nodemailer = require('nodemailer');
function enviarEmail(usuario, produto, quantidade){
// Configurações do Email
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'seuemail@gmail.com',
pass: 'suasenha'
// 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 ("nodemailer", por exemplo)
// 5 - Copie a senha gerada e cole aqui no código
}
});
var mailOptions = {
from: 'seuemail@gmail.com',
to: 'emaildestino@gmail.com',
subject: 'Nova Compra!',
text: ('Usuário: ' + usuario + '\n Comprou: \n ' + quantidade + ' - ' + produto)
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
}
// Criação da Função no Firebase
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
// Definição do objeto controlador do 'agent'
const agent = new WebhookClient({ request, response });
// Dicionário de Plural e Artigo
const dict = {
'Antídoto':{
'plural':'Antídotos',
'artigo': 'o'
},
'MonsterBola':{
'plural':'MonsterBolas',
'artigo': 'a'
},
'Poção':{
'plural':'Poções',
'artigo': 'a'
},
}
// 'Handler' para finalizar a compra
function finalizarCompra(agent) {
const quantidade = agent.parameters.quantidade;
const produto = agent.parameters.produto;
const artigo = dict[produto].artigo;
const plural = dict[produto].plural;
// Processar o Singular
if(quantidade == 1){
agent.add('Pronto! ' + artigo + ' ' + produto + ' foi adicionad' + artigo + ' no seu inventório!');
}
// Processar o Plural
else{
agent.add("Pronto! " + artigo + 's ' + quantidade + ' ' + plural + ' foram adicionad' + artigo + 's no seu inventório!');
}
enviarEmail(agent.session, produto, quantidade)
}
// 'Handler' para confirmar a compra
function confirmarCompra(agent){
const quantidade = agent.parameters.quantidade;
const produto = agent.parameters.produto;
const plural = dict[produto].plural;
if (quantidade == 1){
agent.add('Ok, ' + quantidade + ' ' + produto + ', posso confirmar a compra?');
}
else {
agent.add('Ok, ' + quantidade + ' ' + plural + ', posso confirmar a compra?');
}
}
// Executar a função adequada de acordo com a Intent recebida
let intentMap = new Map();
intentMap.set('Finalizar Compra', finalizarCompra);
intentMap.set('Escolha do Produto', confirmarCompra);
try{
agent.handleRequest(intentMap);
}
catch(e){
console.log(e);
}
});
@fleles324
Copy link

muito bom seus videos e cod

@RodrigoMendes07
Copy link

Muito bom me ajudou muito com este tutorial.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment