Dialogflow:这是在异步调用中使用的吗
Dialogflow: Is this being used in an async call
我是 javascript 世界的新手,一直在修补 Google 上的操作。我有一个以前 运行ning 的操作,但在尝试简化我的代码之后,我 运行ning 遇到了一个我似乎无法弄清楚的新错误。该代码应该调用数据库并根据用户选择的日期 return 向用户提供信息。
问题:
该代码应该根据用户选择的日期调用数据库并向用户提供 return 信息。当我使用 axios 调用 URL 时,意图似乎崩溃了。当我测试我的功能时,我从 Google 云平台收到以下错误:"Error: No response has been set. Is this being used in an async call that was not returned as a promise to the intent handler?"
app.intent('Moon', (conv, {date}) => {
// Sets date to today if none given
if (!date) {
date = new Date().toISOString();
}
// Slices date string to match date format in database
const dateSlice = date.slice(5, 9);
// Call to row in dabase for the given date
function getData() {
return axios.get(`example.com/search?Date=${dateSlice}`);
}
return getData().then(res => {
res.data.map(con => {
conv.ask(`On X date there will be a ${con.Object1}`);
});
});
});
我不太了解 Promise 和 await 但这似乎是问题所在。我不确定在没有这些对象的情况下如何将我的代码设置为 运行。我试图在我的 return 之前插入一个 Promise 对象,但它使函数的其余部分无法访问。我还检查了 Axios 是否有任何更新,但没有,我使用的是最新版本。该错误是否与 return 之一有关?
它可能与 Promises 相关,但您似乎正确地处理了它们。
- 对
axios.get()
的调用正在返回一个 Promise...
- ...您将在
getData()
... 中返回
- ... 作为
getData().then()
块的一部分在 'Moon' 意图处理程序中返回。
我更怀疑这是逻辑问题。如果 res.data
是一个空数组,那么将不会调用 conv.ask()
,所以你最终什么都不问。
如果 res.data
有两个以上的项目,也会有问题。在这种情况下,您将生成一个错误,因为您回复了两个以上 "simple" 回复。
无论哪种方式 - 您可能希望记录 res
and/or res.data
以确保您得到了您的想法。
我是 javascript 世界的新手,一直在修补 Google 上的操作。我有一个以前 运行ning 的操作,但在尝试简化我的代码之后,我 运行ning 遇到了一个我似乎无法弄清楚的新错误。该代码应该调用数据库并根据用户选择的日期 return 向用户提供信息。
问题: 该代码应该根据用户选择的日期调用数据库并向用户提供 return 信息。当我使用 axios 调用 URL 时,意图似乎崩溃了。当我测试我的功能时,我从 Google 云平台收到以下错误:"Error: No response has been set. Is this being used in an async call that was not returned as a promise to the intent handler?"
app.intent('Moon', (conv, {date}) => {
// Sets date to today if none given
if (!date) {
date = new Date().toISOString();
}
// Slices date string to match date format in database
const dateSlice = date.slice(5, 9);
// Call to row in dabase for the given date
function getData() {
return axios.get(`example.com/search?Date=${dateSlice}`);
}
return getData().then(res => {
res.data.map(con => {
conv.ask(`On X date there will be a ${con.Object1}`);
});
});
});
我不太了解 Promise 和 await 但这似乎是问题所在。我不确定在没有这些对象的情况下如何将我的代码设置为 运行。我试图在我的 return 之前插入一个 Promise 对象,但它使函数的其余部分无法访问。我还检查了 Axios 是否有任何更新,但没有,我使用的是最新版本。该错误是否与 return 之一有关?
它可能与 Promises 相关,但您似乎正确地处理了它们。
- 对
axios.get()
的调用正在返回一个 Promise... - ...您将在
getData()
... 中返回
- ... 作为
getData().then()
块的一部分在 'Moon' 意图处理程序中返回。
我更怀疑这是逻辑问题。如果 res.data
是一个空数组,那么将不会调用 conv.ask()
,所以你最终什么都不问。
如果 res.data
有两个以上的项目,也会有问题。在这种情况下,您将生成一个错误,因为您回复了两个以上 "simple" 回复。
无论哪种方式 - 您可能希望记录 res
and/or res.data
以确保您得到了您的想法。