如何在后端使用promises时在控制台中测试dialogflow应用程序?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在后端使用promises时在控制台中测试dialogflow应用程序?相关的知识,希望对你有一定的参考价值。

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

- >如何实现我可以在本地和对话框流程控制台中测试我的功能而不会破坏谷歌助手的功能?

例:

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中我收到此错误:

(node:1)UnhandledPromiseRejectionWarning:未处理的promise promise(拒绝id:1):TypeError:无法将undefined或null转换为object

并且响应为空。

答案

首先 - 如果你使用的是承诺,那应该没关系。事实上,你应该使用它们,所以你在那里领先一步。

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

部分问题在于您发回的内容是针对Google智能助理的 - 而不是针对Dialogflow测试人员。因此,您发回特定于助理的内容并不奇怪,但通用Dialogflow测试工具无法处理。这可能意味着您正在使用actions-on-google node.js库,这不是问题。

aws-cli的错误表明您没有在测试过程中发送有效请求,因此您的代码(或者更可能是google上的操作库)会因格式错误的输入而瘫痪。要调试它,请检查aws-lambda日志以查看正在引起的错误,并可能记录您在函数中获得的请求。

以上是关于如何在后端使用promises时在控制台中测试dialogflow应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

在后端使用NodeJS的Put方法不更新Angular7中的MongoDB

为啥在使用 Promise 时在类方法中未定义“this”? [复制]

如何对 AngularJS $promise.then 进行单元测试

如何在显示仪表板时在 Grafana 门户上启用 url 加密

如何在后端使用 java 和 Ms 访问获取字符串并添加到下拉列表

Angular 承诺使用多个 http 请求