【问题标题】:dialogflow returning an empty response, despite having the data对话流返回一个空响应,尽管有数据
【发布时间】:2020-06-11 16:32:57
【问题描述】:

我正在尝试在 DialogFlow 中创建一个聊天机器人来检查您的保险索赔状态。

我已经设置了对外部 API(模拟)的调用,并且我使用了一个 Promise 来等待响应然后返回它。但是,尽管从模拟 API 获得了正确的数据,但我始终从 DF 获得[empty response]。只是时间太长了吗?

下面是相关代码:


    var callClaimsApi = new Promise((resolve, reject)=>{
      try{
        https.get('https://MOCKAPIURL.COM', (res) => {
            res.setEncoding('utf8');
            let rawData = '';
            res.on('data', (chunk) => { rawData += chunk; });
            res.on('end', () => {
            resolve(JSON.parse(rawData));   
      });
    });} catch(e){reject(e.message);}
  }); 

  function checkClaims(agent){ 
    callClaimsApi
      .then(function(fulfillment){
        console.log("fulfillment name: " + fulfillment.name);
        agent.add("It looks like you want to find a claim for " + fulfillment.name);
      })
      .catch(function(error){console.log(error);});
  }

intentMap.set('checkClaims', checkClaims);    

这是日志的输出:

【问题讨论】:

  • 我认为问题在于 API 调用花费的时间太长,而 DialogFlow 想要回答而不是等待。所以,我想我要么需要加快我的通话速度,要么找到一种方法让 DialogFlow 等待,无论是在代码中还是在设置中,如果可能的话......

标签: javascript node.js promise dialogflow-es dialogflow-es-fulfillment


【解决方案1】:

问题在于,尽管您通过 Promise 进行所有处理,但您并没有在 Handler 中返回该 Promise。库需要 Promise,因此它知道正在进行异步操作,并且它应该等到该操作完成后再发送回复。

幸运的是,在您的情况下,您可以通过在 callClaimsApi 之前添加 return 语句来做到这一点。

您可能还希望考虑使用诸如 axios 之类的库来执行 http 调用,因为它内置了承诺支持。

【讨论】:

  • 太好了,我将在本周末对其进行测试,并让您知道它是否有效。谢谢!
  • 我在发布此问题之后和您回复之前尝试过 Axios,但这不起作用,但您上面的解决方案符合我的要求。
  • 重要的部分是返回上下文。 Axios 只是让在基于 Promise 的环境中进行 http 调用更容易。很高兴它有帮助!
  • 我必须检查我的历史记录,我想知道我是否应该返回 axios.call(XYZ).then(doThing).catch()
【解决方案2】:

根据文档,Dialogflow 的等待时间是 5 秒。如果您可以优化您的代码,那就太棒了。有一些技巧可以让 DF 等待更长的时间,使用后续事件或使用一个意图来请求 -> 用一些确认来响应用户(例如,你能等待 3 秒吗?是/否) -> 到这个时候请求将可用,因此您可以在下一条消息中发送它。
你可以查看his post for me info

【讨论】:

  • 看起来通话需要 2 - 3 秒,所以还不到 5 秒的等待时间,不知道为什么会失败
猜你喜欢
  • 1970-01-01
  • 2020-07-25
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多