Как сохранить все значения параметра DialogFlow в базе данных Firebase в реальном времени? - PullRequest
0 голосов
/ 18 января 2019

Я делаю действие для Google Home. Речь идет о бронировании ресторана, поэтому я должен получить информацию от таких пользователей, как:

  1. На сколько гостей вы хотите забронировать столик?
  2. На какую дату?
  3. За какое время?

Затем я должен сохранить его в базе данных Firebase в реальном времени. Для параметра guests записывается значение в базу данных , но параметры даты и времени не отображаются в базе данных .

какой будет код для хранения времени и даты с гостями в базе данных?

'use strict';
 
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');
const {Card, Suggestion} = require('dialogflow-fulfillment');
 
 //initialize db connection
 const admin = require('firebase-admin');
 admin.initializeApp();
 
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(`Welcome to my agent!`);
  }
 
  function fallback(agent) {
    agent.add(`I didn't understand`);
    agent.add(`I'm sorry, can you try again?`);
}
  function createBooking(agent) {
      
    let guests = agent.parameters.guests;
    let time = new Date(agent.parameters.time);
    let date = new Date(agent.parameters.date);
    let bookingDate = new Date(date);
    bookingDate.setHours(time.getHours());
    bookingDate.setMinutes(time.getMinutes());
    let now = new Date();
      const guestsParam = agent.parameters.guests;
     
      if (guests < 1){
        agent.add('You need to reserve a table for at least one person. Please try again!');
    } else if (bookingDate < now){
        agent.add(`You can't make a reservation in the past. Please try again!`);
    } else if (bookingDate.getFullYear() > now.getFullYear()) {
        agent.add(`You can't make a reservation for ${bookingDate.getFullYear()} yet. Please choose a date in ${now.getFullYear()}.`);
    } else {
        let timezone = parseInt(agent.parameters.time.toString().slice(19,22));
        bookingDate.setHours(bookingDate.getHours() + timezone);
        agent.add(`You have successfully booked a table for ${guests} guests on ${bookingDate.toString().slice(0,21)}`);
        agent.add('See you at the restaurant!');
    }
     return admin.database().ref('/guests').push({guests: guests}).then((snapshot) => {
    console.log('database write successful: ' + snapshot.ref.toString());
  });
  
        
 }
    
 
  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);
  intentMap.set('restaurant.booking.create', createBooking);
  // intentMap.set('your intent name here', yourFunctionHandler);
  // intentMap.set('your intent name here', googleAssistantHandler);
  agent.handleRequest(intentMap);
});

1 Ответ

0 голосов
/ 18 января 2019

Что ж, простой ответ заключается в том, что вы не видите их в базе данных, потому что не помещаете их туда.

Линия

admin.database().ref('/guests').push({guests: guests})

Просто хранит документ с гостями. Вы ничего не делаете с bookingDate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...