Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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
Actions on google 如何在dialogflow名称通灵节点示例中使用实时数据库?_Actions On Google - Fatal编程技术网

Actions on google 如何在dialogflow名称通灵节点示例中使用实时数据库?

Actions on google 如何在dialogflow名称通灵节点示例中使用实时数据库?,actions-on-google,Actions On Google,这是我在Google、Dialogflow和Firebase上玩动作的第二天,我对Dialogflow名称Psycholic nodejs sample()有点困惑 文档说这是一个使用实时数据库的示例,但我看不到任何使用任何数据库的明确方式。。。用户存储实际上是使用实时数据库的一种隐式方式吗?我想与google上的非actions应用程序共享一些数据(短文本),有没有办法在没有google library上的actions的情况下检索存储在userStorage中的数据?看起来最新版本没有使用实

这是我在Google、Dialogflow和Firebase上玩动作的第二天,我对Dialogflow名称Psycholic nodejs sample()有点困惑


文档说这是一个使用实时数据库的示例,但我看不到任何使用任何数据库的明确方式。。。用户存储实际上是使用实时数据库的一种隐式方式吗?我想与google上的非actions应用程序共享一些数据(短文本),有没有办法在没有google library上的actions的情况下检索存储在userStorage中的数据?

看起来最新版本没有使用实时数据库,因为他们用app对象中的userStorage字段替换了它

如果您查看,您可以看到它如何使用实时数据库存储用户信息。(请注意,一些代码还使用了Google v1 API上的旧操作,因此您需要在不同版本之间切换,以真正了解这些天如何操作。)

但是,简而言之,您有一个初始化firebase管理库的块:

const firebaseAdmin = require('firebase-admin');
firebaseAdmin.initializeApp(functions.config().firebase);
以及另一个试图根据用户id从数据库中的引用中获取值的块。如果有值,则使用该值,否则请求权限:

  firebaseAdmin.database().ref('users/' + encodeAsFirebaseKey(userId))
    .once('value', function (data) {
      if (data && data.val() && data.val()[firebaseKey]) {
        let speechOutput = speechCallback(data.val()[firebaseKey]);
        resolve(app.tell(speechOutput));
      } else {
        resolve(app.askForPermission('To read your mind', permission));
      }
    });
(这段代码有点奇怪,imho.
once()
方法返回一个承诺,因此没有必要用这种方式包装它。我会做如下操作:

return firebaseAdmin.database()
  .ref('users/' + encodeAsFirebaseKey(userId))
  .once('value')
  .then( data => {
    if (data && data.val() && data.val()[firebaseKey]) {
      let speechOutput = speechCallback(data.val()[firebaseKey]);
      return app.tell(speechOutput);
    } else {
      return app.askForPermission('To read your mind', permission);
    }
  });
但我还没有测试过这段代码。)

最后,在稍后的一点上,它根据基于用户ID的引用保存信息:

  // Save [User ID]:[{<name or location>: <data>}] to Firebase
  // Note: Users can reset User ID at any time.
  firebaseAdmin.database().ref('users/' + encodeAsFirebaseKey(userId)).update({
    [firebaseKey]: userData
  });
//将[User ID]:[{:}]保存到Firebase
//注意:用户可以随时重置用户ID。
firebaseAdmin.database().ref('users/'+encodeAsFirebaseKey(userId)).update({
[firebaseKey]:用户数据
});

最新版本似乎没有使用实时数据库,因为他们在app对象中将其替换为userStorage字段

如果您查看,您可以看到它如何使用实时数据库存储用户信息。(请注意,一些代码还使用了Google v1 API上的旧操作,因此您需要在不同版本之间切换,以真正了解这些天如何操作。)

但是,简而言之,您有一个初始化firebase管理库的块:

const firebaseAdmin = require('firebase-admin');
firebaseAdmin.initializeApp(functions.config().firebase);
以及另一个试图根据用户id从数据库中的引用中获取值的块。如果有值,则使用该值,否则请求权限:

  firebaseAdmin.database().ref('users/' + encodeAsFirebaseKey(userId))
    .once('value', function (data) {
      if (data && data.val() && data.val()[firebaseKey]) {
        let speechOutput = speechCallback(data.val()[firebaseKey]);
        resolve(app.tell(speechOutput));
      } else {
        resolve(app.askForPermission('To read your mind', permission));
      }
    });
(这段代码有点奇怪,imho.
once()
方法返回一个承诺,因此没有必要用这种方式包装它。我会做如下操作:

return firebaseAdmin.database()
  .ref('users/' + encodeAsFirebaseKey(userId))
  .once('value')
  .then( data => {
    if (data && data.val() && data.val()[firebaseKey]) {
      let speechOutput = speechCallback(data.val()[firebaseKey]);
      return app.tell(speechOutput);
    } else {
      return app.askForPermission('To read your mind', permission);
    }
  });
但我还没有测试过这段代码。)

最后,在稍后的一点上,它根据基于用户ID的引用保存信息:

  // Save [User ID]:[{<name or location>: <data>}] to Firebase
  // Note: Users can reset User ID at any time.
  firebaseAdmin.database().ref('users/' + encodeAsFirebaseKey(userId)).update({
    [firebaseKey]: userData
  });
//将[User ID]:[{:}]保存到Firebase
//注意:用户可以随时重置用户ID。
firebaseAdmin.database().ref('users/'+encodeAsFirebaseKey(userId)).update({
[firebaseKey]:用户数据
});

您能指定您所说的哪个文档使用实时数据库吗?文档中有什么东西过时了吗?@Nick最后一节的最后一句说“查看使用Firebase实时数据库的示例”。正如囚犯所指出的,这个例子的最新版本不再使用实时数据库了。你能指定你说的哪个文档使用实时数据库吗?文档中有什么东西过时了吗?@Nick最后一节的最后一句说“查看使用Firebase实时数据库的示例”。正如囚犯所指出的,这个例子的最新版本不再使用实时数据库。