首页 > 解决方案 > 使用 DialogFlow“恢复代理”API 时出错

问题描述

在使用 DialogFlow“恢复代理”API时,我们突然开始遇到错误。调用失败并出现以下错误:

400 com.google.apps.framework.request.BadRequestException:代理 zip 无效。缺少必需的 json 文件 agent.json

奇怪的是,它似乎只发生在新创建的 DialogFlow 代理上,而不是旧的/现有的。我们正在使用这个 API,以便我们可以使用我们自己的意图/实体以编程方式创建自定义代理。这段代码在过去两年里一直有效,我们这边没有任何变化。我们正在使用 Python 的官方 DialogFlow 客户端库。我们一直在 0.2.0 版本上,我尝试更新到最新版本(0.8.0),但没有任何变化。

我尝试更改我们的代码以包含 agent.json 文件(通过使用“导出代理”API 并从那里获取 agent.json 文件)。在这种情况下,我不再收到上述错误,并且还原似乎成功。但是,代理似乎在某种程度上是腐败的。当试图点击任何意图时——或在 DialogFlow 控制台中的各种其他操作——我收到错误:

无法获取训练短语 Errorid=xxx

(其中 xxx 似乎是每次都会更改的 UUID)

尝试以该状态导出代理也会显示错误:

下载代理时出错

有时,即使包括上面的 agent.json,恢复仍然会失败,但会返回错误:

500 遇到内部错误。

我很感激任何关于我们如何让它再次工作的想法。谢谢!

标签: google-cloud-platformdialogflow-es

解决方案


经过大量的试验和错误,我找到了解决方案。这是以防其他人遇到这种情况。最近 DialogFlow 在“恢复代理”操作期间处理 zip 上传的方式肯定发生了一些变化——

1) agent.json 文件现在在 zip 文件中是必需的,而之前它是可选的

2) 我们发现 _usersays 文件中用于各种意图的一些“id”元素不是有效的 UUID。以前这不会导致任何错误,但现在代理最终处于无效状态(“无法获得训练短语”错误,等等,如上所述)。


推荐阅读