最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Dialogflow:是否在异步调用中使用

网站源码admin27浏览0评论

Dialogflow:是否在异步调用中使用

Dialogflow:是否在异步调用中使用

我是javascript世界的新手,并且一直在Google上对Actions进行修改。我有一个先前在运行的操作,但是在尝试简化代码后,我遇到了一个新错误,似乎无法弄清楚。该代码应该调用数据库,并根据用户选择的日期将信息返回给用户。

问题:该代码应该调用数据库,并根据用户选择的日期将信息返回给用户。当我使用axios调用URL时,意图似乎破裂了。当我测试功能时,我从Google Cloud Platform收到以下错误:“错误:未设置任何响应。这是否在未作为对意图处理程序的承诺返回的异步调用中使用?”

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/search?Date=${dateSlice}`);
  }
  return getData().then(res => {
    res.data.map(con => {
      conv.ask(`On X date there will be a ${con.Object1}`);
    });
  });
});
回答如下:

可以与承诺有关,但是您似乎正确地处理了它们。

  • axios.get()的呼叫正在返回一个承诺...
  • ...您要在getData() ...中返回的内容>
  • ...在[Moon] Intent处理程序中作为getData().then()块的一部分返回。
  • 我更怀疑这是一个逻辑问题。如果res.data是一个空数组,那么将不会有任何对conv.ask()的调用,因此您最终将不询问任何内容。

res.data有两个以上的项目,也有问题。在这种情况下,您将产生一个错误,因为您已回复了两个以上的“简单”响应。

两种方式-您可能希望登录res和/或res.data以确保您恢复了所想的内容。

发布评论

评论列表(0)

  1. 暂无评论