actions-on-google - 我的 Action 和 webhook 作为草稿运行良好,但在提交到生产环境后失败
问题描述
我为 Google 创建了一个 Action on Actions。它使用 Dialogflow 处理输入,并由 PHP webhook 提供支持。PHP 脚本由第三方托管服务提供商托管。我正在使用 Dialogflow API 的 v2。
该代理在 Dialogflow 中成功运行,没有任何问题。
最初,在 Google 模拟器上的 Actions 中进行测试时,它运行良好。
提交我的行动草案以供审查后,生产版本不起作用。但是,恢复到草稿版本后,它仍然可以正常工作。因此,我的评论提交被拒绝。
在控制台模拟器的错误选项卡中,它告诉我“必须设置 MalformedResponse 'final_response'”。在“响应”选项卡中,它显示以下响应:
我一直在联系支持人员,他们提供了以下建议:
清除我的缓存并重试
- 毫不奇怪,这没有任何区别
从脚本中删除身份验证
- 服务器身份验证已到位
- 在 Dialogflow 中配置了凭据,并且可以访问 webhook
- 这似乎不是问题,但是我已经从脚本中删除了身份验证并从 Dialogflow 中删除了凭据
Webhook 正在返回一个空响应
- 它不是。上面提供了 JSON 响应的示例(此时它只提供了fulfillmentText)
响应需要包含 Google 有效负载
- 添加了现在将 textToSpeech 和 displayText 作为 simpleResponse 传递的 Google 有效负载
检查您使用的是 API 的 v2
- 我是,这是在 Dialogflow 中设置的
可能是此已知问题的结果
- 但是,根据我收到的混合消息,我不相信是这种情况
是否有人对可能导致该问题的其他原因有任何想法或建议?
解决方案
首先,确保您为所有意图启用了 webhook,并确保如果您的履行有承诺,请确保返回承诺。或者,如果您没有使用履行 webhook,那么您需要确保为这些意图定义了静态默认响应。您可以在Dialogflow 文档中阅读有关所有这些内容的更多信息。
推荐阅读
- gradle - Gradle - 即使设置了最新版本的依赖关系,如何在 Github 上获取最新代码,但没有得到它?
- azure-devops - Azure Devops 单个或多个发布管道
- swiftui - ObservedObject 如何订阅其@Published 成员
- javascript - 我应该在终端中运行什么命令来构建带有反应的 chrome 应用程序?
- java - 我如何正确地将 2 列映射到同一个实体
- javascript - 导出和导入对象库时出现问题
- angular - 理解 Observables、Promises、this 以及 Angular、Typescript 中的传递数据
- dirichlet - numpy.random.dirichlet 做什么?
- flutter - 'package:image/image.dart 中的 Flutter drawImage 抛出错误
- google-sheets - 如何根据谷歌表格中的某个日期是否已过返回某个值