Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我想把实体放进Firebase_Javascript_Firebase_Dialogflow Es - Fatal编程技术网

Javascript 我想把实体放进Firebase

Javascript 我想把实体放进Firebase,javascript,firebase,dialogflow-es,Javascript,Firebase,Dialogflow Es,我想把实体放进Firebase。我使用谷歌的Dialogflow。 我想将名称实体放入Firebase数据库 现在我的Javascript代码是 'use strict'; const functions = require('firebase-functions'); const {WebhookClient} = require('dialogflow-fulfillment'); const admin = require('firebase-admin'); admin.initi

我想把实体放进Firebase。我使用谷歌的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中没有数据。我认为我的代码是错误的,但无法理解什么是错误的。
如何修复此问题?

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

  • 虽然您有一个
    handleName()
    函数,它似乎是一个意图处理程序,但您没有在
    intentMap
    中将其注册为处理程序

  • 您的
    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?");
        }
      }
    

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

  • 虽然您有一个
    handleName()
    函数,它似乎是一个意图处理程序,但您没有在
    intentMap
    中将其注册为处理程序

  • 您的
    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?");
        }
      }
    

    我能理解你说的话,但我无法编写你所说的代码。你会编写示例代码吗?我已经用一些示例更新了答案,但你所做的完全取决于你正在尝试做什么,而你还没有真正弄清楚这一部分。因此,您可能希望查阅有关如何在Firebase中保存值的文档,并尝试使用它们,如果您仍然有问题,请提出一个新问题,说明您尝试了哪些方法,哪些方法无效。我可以理解您的意思,但我无法编写你所说的代码。你会编写示例代码吗?我已经用一些示例更新了答案,但你所做的事情在很大程度上取决于你正在尝试做什么,而你还没有真正弄清楚这一部分。因此,您可能希望查阅有关如何在Firebase中保存值的文档,并尝试使用它们。如果仍然存在问题,请提出一个新问题,说明您尝试了哪些内容,哪些内容不起作用。