Converse Comigo
  • Workshop - crie seu primeiro App Conversacional
  • Vídeos
  • Agent
  • person_name entity
  • person_skill entity
  • search_terms entity
  • Default Welcome Intent
  • Default Welcome Intent - search
  • Webhook
  • Default Welcome Intent - search - get_name
  • Banco de dados
  • Código final
  • Webhook & Action
  • Mais links
  • Contato, créditos e agradecimentos.
Powered by GitBook
On this page

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.

PreviousBanco de dadosNextWebhook & Action

Last updated 6 years ago

1.Clique em fulfilment no menu esquerdo

2.No Inline Editor(Powered by Cloud Functions for Firebase) você pode adicionar o código abaixo.

3. Clique no botão azul deploy abaixo de todo o código.

IMPORTANTE: certifique-se que você possui o seu proório URL do banco de dados ao invés de:

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);
} );
{ "name": "dialogflowFirebaseFulfillment", "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase", "version": "0.0.1", "private": true, "license": "Apache Version 2.0", "author": "Google Inc.", "engines": { "node": "~6.0" }, "scripts": { "start": "firebase serve --only functions:dialogflowFirebaseFulfillment", "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment" }, "dependencies": { "actions-on-google": "2.0.0-alpha.4", "firebase-admin": "^5.4.2", "firebase-functions": "^0.5.7", "dialogflow": "^0.1.0", "dialogflow-fulfillment": "0.3.0-beta.3" }}

E na aba package.json adicione o seguinte:

package.json
{ "name": "dialogflowFirebaseFulfillment", "description": "This is the default fulfillment for a Dialogflow agents using Cloud Functions for Firebase", "version": "0.0.1", "private": true, "license": "Apache Version 2.0", "author": "Google Inc.", "engines": { "node": "~6.0" }, "scripts": { "start": "firebase serve --only functions:dialogflowFirebaseFulfillment", "deploy": "firebase deploy --only functions:dialogflowFirebaseFulfillment" }, "dependencies": { "actions-on-google": "2.0.0-alpha.4", "firebase-admin": "^5.4.2", "firebase-functions": "^0.5.7", "dialogflow": "^0.1.0", "dialogflow-fulfillment": "0.3.0-beta.3" }}

Explicação

Que maravilha, ao seguir estes passos você utilizou o Firebase Real time Database assim como o firebase inline editor para fazer com que o seus intents comuniquem com o banco de dados e dêem as respostas corretas aos usuários conversando com a sua action!

https://gdg-cloud-fc257.firebaseio.com/