Aws lambda 当后端使用承诺时,如何在控制台中测试dialogflow应用程序?

Aws lambda 当后端使用承诺时,如何在控制台中测试dialogflow应用程序?,aws-lambda,dialogflow-es,actions-on-google,Aws Lambda,Dialogflow Es,Actions On Google,dialogflow应用程序的后端使用google sdk上的操作。并向另一台服务器发出请求。所以,我不得不回报承诺。它与谷歌助手完美配合,但对话框控制台无法处理它。aws sam cli也无法做到这一点(我的后端是aws lambda函数) -->我如何才能在本地和dialogflow控制台中测试我的功能,而不破坏google助手的功能 例如: return myAsyncTask(conv).then(() => { conv.ask(new SimpleResponse('H

dialogflow应用程序的后端使用google sdk上的操作。并向另一台服务器发出请求。所以,我不得不回报承诺。它与谷歌助手完美配合,但对话框控制台无法处理它。aws sam cli也无法做到这一点(我的后端是aws lambda函数)

-->我如何才能在本地和dialogflow控制台中测试我的功能,而不破坏google助手的功能

例如:

return myAsyncTask(conv).then(() => {
    conv.ask(new SimpleResponse('Hello World');
});
在dialogflow控制台中,响应字段包含“不可用”。 答复如下:

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "MyText",
              "displayText": "MyDisplayText"
            }
          }
        ]
      },
      "userStorage": "{\"data\":{}}"
    }
  },
  "outputContexts": [
    ...
  ]
}
未填写“履行”字段。这也可能是一个错误。但我不知道怎么填

在aws cli中,我遇到以下错误:

(节点:1)未处理的PromisejectionWarning:未处理的承诺拒绝 (拒绝id:1):TypeError:无法将未定义或null转换为 反对


而且响应是空的。

首先,不管你是否使用承诺。事实上,你应该使用它们,所以你在这方面领先了一步

由于它和谷歌模拟器上的操作一起工作,这意味着您的代码可以返回有效且有意义的结果

问题的一部分在于,您返回的内容是针对Google助手的,而不是针对Dialogflow tester的。因此,发送回特定于助手的内容并不奇怪,但通用Dialogflow测试工具无法处理任何内容。这可能意味着您正在使用google node.js库上的操作,这不是问题


aws cli的错误表明,在测试过程中,您没有发送有效的请求,因此您的代码(或者,更有可能是google library上的操作)因格式不正确的输入而出错。若要对此进行调试,请检查aws lambda日志以查看导致了哪些错误,并可能记录您在函数中收到的请求。

您能否给出一个示例,说明使用Dialogflow测试控制台或aws CLI测试时发生的情况?@Captier:当然!我把它添加到我的问题中。