发送“失败”状态时 Google Assistant 对“打开所有设备”的响应存在问题

问题描述 投票:0回答:1

当我请求“打开所有设备”时,我遇到了 Google Assistant 问题。即使我为某些设备发送“失败”状态,Google Assistant 也会回复“好的,打开 x 个东西”,而没有任何失败指示。这是我为 action.devices.EXECUTE 操作发送的 JSON 响应:

{
    "requestId": "617XXX27787XXX16813",
    "payload": {
        "devices": {
            "1081614XXX": {
                "on": false,
                "online": true,
                "status": "SUCCESS"
            },
            // ... (other device entries)
            "4153991XXX": {
                "on": false,
                "online": true,
                "status": "FAILED"
            }
        }
    }
}

以下是我的系统工作原理的概述:

  1. 我向 Google Assistant 发出命令以打开/关闭设备。
  2. Google Assistant 触发我的 Lambda 函数。
  3. 我的 Lambda 函数处理请求并调用后端 API。它在 4 秒内处理尽可能多的请求/设备。 4 秒后,它会为所有剩余设备发送“FAILED”状态,并为带有 202 HTTP 状态代码的设备发送“PENDING”状态。这样做是为了在 5 秒的时间限制内响应 Google Home。

我有几个问题:

  1. Google Assistant 是否会对处于“失败”状态的设备(例如“无法打开/关闭设备”)提供否定响应?我没有收到这样的回复。

  2. 我尝试启动默认状态为“待处理”和“失败”的单个设备,但我仍然收到相同的响应(“好的,打开 ”)。为什么会出现这种情况?

  3. 我发送给 Google Assistant 的回复中是否有可能遗漏的内容?

当我在 5 秒的时间限制内要处理超过 20 个设备时,我面临着挑战。目前,我正在为已成功启动但需要时间的设备发送“PENDING”。有没有更好的方法来处理这个问题而不发送“FAILED”?

我感谢任何改善这种情况的见解或建议。谢谢!

actions-on-google google-home google-smart-home
1个回答
0
投票

问题在于

status
键本身,它应该是
ERROR
而不是
FAILED
这是一个例子:

{
    "requestId": "617XXX27787XXX16813",
    "payload": {
        "devices": {
            "1081614XXX": {
                "on": false,
                "online": true,
                "status": "SUCCESS"
            },
            // ... (other device entries)
            "4153991XXX": {
                "on": false,
                "online": true,
                "status": "ERROR",
                "errorCode": "Timeout"
            }
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.