【发布时间】:2018-08-21 03:00:50
【问题描述】:
我目前正在使用 actions-on-google 节点 sdk,我正在努力研究如何等待我的中间件中的承诺解决,然后再执行我的意图。我尝试使用async/await 并从我的中间件函数返回promise,但两种方法似乎都不起作用。我知道通常你不会像我在这里所做的那样覆盖意图,但这是为了测试正在发生的事情。
const {dialogflow} = require('actions-on-google');
const functions = require('firebase-functions');
const app = dialogflow({debug: true});
function promiseTest() {
return new Promise((resolve,reject) => {
setTimeout(() => {
resolve('Resolved');
}, 2000)
})
}
app.middleware(async (conv) => {
let r = await promiseTest();
conv.intent = r
})
app.fallback(conv => {
const intent = conv.intent;
conv.ask("hello, you're intent was " + intent );
});
看起来我至少应该能够返回 promise https://actions-on-google.github.io/actions-on-google-nodejs/interfaces/dialogflow.dialogflowmiddleware.html
但我不熟悉打字稿,所以我不确定我是否正确阅读了这些文档。
任何人都可以建议如何正确地做到这一点?例如,现实生活中的示例可能是我需要进行数据库调用并等待它在我的中间件中返回,然后再继续下一步。
我的功能是在谷歌云功能中使用 NodeJS V8 测试版。
此代码的输出是任何实际意图,例如默认的欢迎意图,而不是“已解决”,但没有错误。因此中间件触发,但随后在承诺解决之前转移到回退意图。例如在设置conv.intent = r之前
【问题讨论】:
-
这段代码的输出是什么?
-
@AzaTulepbergenov 已更新。但基本上没有错误,它只是触发后备意图。如果我在 await 承诺语句之前将
conv.intent设置为另一个值,它会设置它,然后在它落入回退意图时正确打印出来
标签: google-cloud-functions dialogflow-es actions-on-google