我在Dialogflow中使用webhook设置了一个动作,该动作使用ngrok隧道指向本地服务器。当使用Dialogflow的“立即测试”功能时,网络挂钩正在运行,请求已发送到网络挂钩,并且正在接收响应,但是在Simulator中进行测试时,它表示“操作现在没有响应”。在ngrok日志中,我可以看到向端点发出的请求与使用“立即测试”时相同。 在模拟器的日志中,它显示“ MalformedResponse:无法将Dialogflow响应解析为AppResponse”。
这是从Dialogflow的诊断信息中看到的实现响应:
{
"payload": {
"google": {
"expectUserResponse": false,
"richResponse": {
"items": {
"simpleResponse": {
"textToSpeech": "test",
"displayText": "test"
}
}
}
}
}
}
答案 0 :(得分:1)
在此评论https://stackoverflow.com/a/55238042/2197296中找到了解决方案,
原来simpleResponse
数组中的items
元素必须包裹在另一个数组中,如下所示:
"webhookPayload": {
"google": {
"richResponse": {
"items": [
{
"simpleResponse": {
"displayText": "test",
"textToSpeech": "test"
}
}
]
},
"expectUserResponse": false
}
},