UnparseableJsonResponse 对于一个特定的有效 JSON

UnparseableJsonResponse for one specific, valid JSON

我有一个标准的 Dialogflow 代理,使用 javascript/node.js webhooks。在大多数情况下它工作得很好。我最近遇到了一个让我完全不知所措的问题。我目前正在 conv.data 中保存一些 JSON-对象,以尽量减少我的 webhook 必须进行的外部 API-调用。对于一个特定的 JSON-object,使用 node-fetch 从外部 API 获取,我从我这边发送的响应看起来非常普通。我使用 firebase 并且 firebase 日志不显示任何错误消息或任何可能存在问题的迹象。但是我在 Google 操作控制台中收到此错误:

UnparseableJsonResponse API Version 2: Failed to parse JSON response string with 'INVALID_ARGUMENT' error: "Parsing terminated before end of input. 8,\"3\":12},\"w ^".

并且在 stackdriver 日志中,收到的响应不是以通常的开头

Received response from agent with body: HTTP/1.1 200 OK Server: ... etc

相反,它从外部 API-JSON-文件

的中间开始

Received response from agent with body: 8,\"3\":12},\"winPercentage\":1392}}}}, ... etc

代理从外部 API 获取 JSON 后第一次响应时不会发生这种情况。代理在获取 JSON 后第二次响应时,无论第二次调用是否使用来自 JSON 的信息,一切都会崩溃,而不管任何事情 except 如果 JSON 文件在第一次和第二次调用之间被覆盖。如果文件被覆盖,程序运行完美。所以问题可能是存储 and/or 解析这个特定 JSON 文件的一部分。不幸的是,我在此应用程序中使用的 API 不是 public,并且由于保密协议,我无法授予对 JSON 的任何访问权限,所以我知道您可能无法提供帮助我。不过,我会尽可能多地提供有关 JSON 的信息,并希望一切顺利:

我非常感谢我可能获得的所有帮助,即使这只是我需要提出的问题,或者我下一步可能会尝试进行故障排除的地方。

我怀疑问题是您尝试保存的 JSON 大于他们为 conv.data 分配的缓冲区大小,尽管我找不到任何文档说明有一些特定的限制。

我会检查您在错误 header 中看到的字符串在 JSON 中的位置,并尽量使其保持在该限制范围内。