我想将实体放入 Firebase

I want to put Entities into Firebase

我想将实体放入 Firebase.I 使用 Google 的 Dialogflow。 我想将名称实体放入 Firebase 数据库中。

现在我的Javascript代码是

'use strict';
 
const functions = require('firebase-functions');
const {WebhookClient} = require('dialogflow-fulfillment');

const admin = require('firebase-admin');
admin.initializeApp({
  credential:admin.credential.applicationDefault(),
  databaseURL:'ws://app-name.firebaseio.com/',
});
 
process.env.DEBUG = 'dialogflow:debug'; 
 
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 handleName(agent) {
    const name = agent.parameters.name;
  }
 
  let intentMap = new Map();
  intentMap.set('Default Welcome Intent', welcome);
  intentMap.set('Default Fallback Intent', fallback);

  agent.handleRequest(intentMap);
});

我 运行 我的代码,并向 DialogFlow 写入文字,但没有数据 Firebase.I 认为我的代码有误,但无法理解哪里出了问题。 我应该如何解决这个问题?

您显示的代码至少有两个问题:

  1. 虽然你有一个 handleName() 函数,它看起来是一个 Intent Handler,但你没有在你的 intentMap.[=15= 中将它注册为一个 Handler ]

  2. 您的 handleName() 函数未对名称执行任何操作。特别是,它没有尝试将其保存在 Firebase 中。

地址 1,您需要添加一行

intentMap.set('Name Intent', handleName);

地址 2 取决于您的 firebase 结构,但可能类似于

  function handleName(agent) {
    const name = agent.parameters.name;
    const ref = admin.database().ref('path/to/where/to/store/name');
    return ref.set( name )
      .then( () => {
        agent.add("Data saved. What next?");
    }
  }