Código final
Respostas fictícias são ótimas, mas queremos buscar nossos dados a partir de um banco de dados, já que não podemos adicionar todos aos valores da entity.
const functions = require(firebase-functions);
const { WebhookClient } = require(dialogflow-fulfillment);
const { Card, Suggestion } = require(dialogflow-fulfillment);
process.env.DEBUG = 'dialogflow:debug';
// enables lib debugging statements
var admin = require(firebase-admin);
admin.initializeApp({ databaseURL: `https://gdg-cloud-fc257.firebaseio.com/`
});
var db = admin.database();
process.env.DEBUG = "dialogflow:debug"; // enables lib debugging statements
exports.dialogflowFirebaseFulfillment = functions.https.onRequest( (request, response) => { const agent = new WebhookClient({ request, response }); console.log( "Dialogflow Request headers: " + JSON.stringify(request.headers) ); console.log("Dialogflow Request body: " + JSON.stringify(request.body));
function welcome(agent) {
agent.add(
`Olá, bem vindo ao app de conversação GDG Cloud. Você gostaria de procurar um organizador por 1.Name ou 2.Skill?`
);
}
function fallback(agent) {
agent.add(`Eu não entendi`);
agent.add(`Desculpe, poderia falar novamente?`);
}
function getSearchTerm(agent) {
if (agent.parameters.search_terms == 1) {
agent.add(`Qual o nome do organizador do GDG Cloud?`);
} else {
agent.add(`Qual skill você está procurando?`);
}
}
function searchName(agent) {
var results = db.ref("myDatabase");
results
.orderByChild("Name")
.startAt(agent.parameters.person_name)
.endAt(`${agent.parameters.person_name}~`)
.on("value", function(snapshot) {
snapshot.forEach(function(data) {
console.log(`The GDG Cloud lead's email is ${data.val().Email}`);
agent.add(`The GDG Cloud lead's email is ${data.val().Email}`);
});
});
}
function searchSkill(agent) {
var scoresRef = db.ref("myDatabase");
scoresRef
.orderByChild("Skill")
.equalTo(agent.parameters.person_skill)
.on("value", function(snapshot) {
snapshot.forEach(function(data) {
agent.add(
"The GDG Cloud lead expert at " +
data.val().Skill +
" is " +
data.val().Name
);
});
});
}
let intentMap = new Map();
intentMap.set('Default Welcome Intent', welcome);
intentMap.set('Default Fallback Intent', fallback);
intentMap.set("Default Welcome Intent - search", getSearchTerm);
intentMap.set("Default Welcome Intent - search - get_name", searchName);
intentMap.set("Default Welcome Intent - search - get_skill", searchSkill);
agent.handleRequest(intentMap);
} );Explicação
Last updated