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