Google Action测试套件Turn off执行与查询报错问题排查咨询
Google Action 关闭指令校验失败问题说明
我们的项目在Google Action测试套件中,「开启」指令的执行与查询校验均已通过,但「关闭」指令的执行和查询全部失败,目前暂未定位到我方侧问题。我方处理「关闭」执行请求时已经返回on属性值为false,但报错提示实际状态为{"on":true,"online":true},以下为完整交互数据及报错详情:
1. Google Action 执行请求
{"inputs":[{"context":{"locale_country":"US","locale_language":"en"},"intent":"action.devices.EXECUTE","payload":{"commands":[{"devices":[{"id":"eg_cam_87901"}],"execution":[{"command":"action.devices.commands.OnOff","params":{"on":false}}]}]}}],"requestId":"960820806239759768"}
2. 我方执行响应
{"requestId":"960820806239759768","payload":{"commands":[{"ids":["eg_cam_87901"],"status":"SUCCESS","state":{"online":false,"on":false,"currentToggleSettings":null}}]}}
3. Google Action 执行报错
Turn off the bedroom AssertionError: Expected state to include: {"on":false}, actual state: {"on":true,"online":true}: expected false to be true
4. Google Action 查询请求
{"inputs":[{"intent":"action.devices.QUERY","payload":{"devices":[{"id":"eg_cam_87901"}]}}],"requestId":"4409204964431192716"}
5. 我方查询响应
{"requestId":"4409204964431192716","payload":{"devices":{"eg_cam_87901":{"online":false,"status":"SUCCESS","on":false,"currentToggleSettings":null}}}}
6. Google Action 查询报错
Query after 'Turn off the bedroom' Error: the string "Error from HA: deviceOffline" was thrown, throw an Error :) at new f (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18143:10) at Runner.fail (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:4491:11) at js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:4802:18 at done (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:4189:5) at js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:4236:11 at w.Ic (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18137:24) at r.run (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18129:169) at js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18171:310 at w.Jl (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18137:454) at r.Ms (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18130:301) at h (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18126:375) at y.Jl [as Ic] (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18139:326) at q (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18167:89) at e (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18158:235) at XMLHttpRequest.w (js/app_compiled.js?f77b3b67-f1c5-4a38-8a20-fe5eafbc2c40:18167:241)
问题排查与修复方案
核心冲突点
两个异常直接导致校验失败:
- 你在关闭指令的执行响应中直接标记设备为
online: false,Google测试套件无法拉取最新的开关状态,只会使用之前缓存的on: true状态做校验,触发断言错误 - 未声明
Toggles特征的前提下返回currentToggleSettings: null,多余空字段会触发平台侧解析异常
修复步骤
- 调整执行响应逻辑:执行开关指令后必须保持设备
online: true至少10秒,供测试套件完成状态校验,不要执行完关闭指令就立即标记设备离线。 - 移除多余字段:如果设备在SYNC阶段没有声明
action.devices.traits.Toggles特征,删除所有响应里的currentToggleSettings字段。 - 标准响应格式参考:
{ "requestId": "960820806239759768", "payload": { "commands": [ { "ids": ["eg_cam_87901"], "status": "SUCCESS", "state": { "online": true, "on": false } } ] } }
- 查询响应同步调整:前两次查询请求均返回
online: true,校验完成后再根据设备实际状态更新离线标记。
内容的提问来源于stack exchange,提问作者moonsung jang
相关产品推荐
相关产品推荐

