gpt4 book ai didi

javascript - 如何使用 Firestore 在 DialogFlow 实现上显示快照中的值

转载 作者:行者123 更新时间:2023-12-01 01:54:12 25 4
gpt4 key购买 nike

我正在尝试显示存储在 Firestore 上的信息。

这是我的数据库。 enter image description here

我想显示“definicion”值。

这是我对 Js 的意图(使用Nodejs):

    app.intent('my.def.intent', (conv) => {
// Trying to get Data from firestone DB,
var platformRef = db.collection("plataformas").doc("slack");
var getDef = platformRef.get()
.then( snap =>{
var dat = "";
if (snap.exists) {
dat = snap.data("definicion");
}
return dat;
})
.catch( err => {
console.log("error...", err);
});
// This is the response for Actions on Google
conv.ask(new SimpleResponse({
speech:"This is the def: " + getDef,
text:"This is the def: " + getDef,
}));
});

此代码在 ActionsOnGoogle Simulator 上显示如下内容:

这是定义:[objecto Promise]

我不明白这里发生了什么。为什么我无法显示“definiciones”中的信息,而是显示一个[对象 promise ]?我怎样才能显示信息?

谢谢!!!

最佳答案

对 platformRef.get().then( ... ) 的调用是异步的,并返回一个 Promise,因此当您访问 getDef 的值时,它的值是一个 Promise。

要修复此问题,您应该将 conv.ask 代码放入上面的 .then block 中。但是,由于您已经可以访问内部 snap 的值,因此您实际上不需要 getDef 的值,可以直接使用 snap 。最后,您需要从意图函数返回该 promise 的值。将其放在一起给出:

app.intent('my.def.intent', (conv) => {
// Trying to get Data from firestone DB,
var platformRef = db.collection("plataformas").doc("slack");
return platformRef.get()
.then( snap => {
var dat = "";
if (snap.exists) {
dat = snap.data("definicion");
}
// This is the response for Actions on Google
conv.ask(new SimpleResponse({
speech:"This is the def: " + dat,
text:"This is the def: " + dat,
}));
})
.catch( err => {
console.log("error...", err);
});
});

我建议看一下官方示例 - dialogflow-updates-nodejs 。它还使用 Firestore 并可以帮助编码。

关于javascript - 如何使用 Firestore 在 DialogFlow 实现上显示快照中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51162755/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com