后端使用 promise 时如何在控制台中测试对话流应用程序?



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

--> 我怎样才能在本地和对话流控制台中测试我的函数,而不会为 Google Assistant 破坏它?

例:

return myAsyncTask(conv).then(() => {
conv.ask(new SimpleResponse('Hello World');
});

在对话流控制台中,响应字段包含"不可用"。 回应是这样的:

{
"payload": {
"google": {
"expectUserResponse": true,
"richResponse": {
"items": [
{
"simpleResponse": {
"textToSpeech": "MyText",
"displayText": "MyDisplayText"
}
}
]
},
"userStorage": "{"data":{}}"
}
},
"outputContexts": [
...
]
}

未填写发货字段。这也可能是个错误。但我不知道如何填充它。

在 aws-cli 中,我收到此错误:

(节点:1( 未处理的承诺拒绝警告:未处理的承诺拒绝 (拒绝 ID: 1(: 类型错误: 无法将未定义或空转换为 对象

并且响应为空。

首先 - 你是否使用承诺并不重要。事实上,你应该使用它们,所以你领先一步。

由于它适用于 Google 模拟器上的操作,这意味着您的代码可以发回有效且有意义的结果。

部分问题在于您发回的内容特定于Google Assistant,而不是Dialogflow测试器。因此,您发回特定于 Assistant 的内容也就不足为奇了,但通用 Dialogflow 测试工具无法处理的内容。这可能意味着您正在使用 google 上的操作节点.js库,这不是问题。

aws-cli 的错误更多地表明您没有发送有效的请求作为测试的一部分,因此您的代码(或者更有可能是 google 上的操作库(在格式不正确的输入上绊倒了。要对此进行调试,请检查 aws-lambda 日志以查看导致的错误,并可能记录您在函数中收到的请求。

最新更新