执行请求同步时,Google Assistant Smart Home 可能会返回错误 500

问题描述

我正在为我的用户执行请求同步,因为我实现了一种新的设备类型。

对于某些用户它成功了,但对于某些用户,我收到了状态 500 的错误,作为请求同步的响应,如下所示。

{
  "error": {
    "code": 500,"message": "Internal error encountered.","status": "INTERNAL"
  }
}

我注意到有关此错误的以下规则

  1. 如果用户的请求同步中发生错误,如果我之后立即为同一用户尝试相同的操作,也会出现相同的结果。
  2. 但是,如果我在一天后向该用户提出请求,则对该用户的请求可能会成功。

我看了下面的文档,但是没有关于500状态错误的描述。 https://developers.google.com/assistant/smarthome/develop/request-sync

你知道为什么会这样吗?另外,如果您知道解决方案,请告诉我。

于 2021 年 4 月 22 日编辑

脚本如下。它是用 NodeJS 编写的。

const smarthome = require('actions-on-google');
const app = smarthome.smarthome({
    jwt: require('config.json')
});

const agentUserIds = ["xxxxx","yyyyy"];
const sleep = msec => new Promise(resolve => setTimeout(resolve,msec));
const requestSync = async () => {
    for (userId of agentUserIds) {
        await app.requestSync(userId)
            .then(() => {
                console.log("Request sync success");
            })
            .catch(err => {
                console.log("Request sync error");
                console.error(err);
            });
        await sleep(1000);
    }
};

requestSync();

结果,我得到了以下输出。它对某些特定用户成功,对某些特定用户失败。

Request sync error
{
  "error": {
    "code": 500,"status": "INTERNAL"
  }
}

Request sync success

解决方法

您好,您能否检查一下您是否在标题中发送了正确的 API 密钥,与呼叫失败的用户/agenuserId 相关。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...