Google Home Action解锁成功但测试套件失败、助手无响应排查
Google Home Action 解锁成功但提示无响应问题修复方案
核心问题定位
该故障属于响应被Google侧判定无效、触发30秒状态轮询超时的典型场景,结合给出的响应内容,按以下优先级排查即可:
- 修复
agentUserId字段类型错误:当前返回的agentUserId是数字类型11424,Google Smart Home API强制要求该字段为字符串类型。对应故障出现的两个月前节点,Google正好上线了该字段的强校验规则:弱校验阶段数字类型可以正常解析,强校验后会直接丢弃整个响应,不会读取返回的SUCCESS状态和isLocked=false的结果,直到轮询超时拉取到旧的锁状态,就会抛出看到的断言错误。直接将该字段改为字符串格式即可:"agentUserId": "11424"。 - 校验响应HTTP头合规性:确保fulfillment接口返回EXECUTE响应时,状态码为
200 OK,Content-Type头为application/json; charset=UTF-8,不要返回3xx重定向、204无内容、4xx/5xx错误状态码,否则Google会判定未收到有效响应,进入轮询等待流程。 - 排查QUERY接口状态一致性:Google不会完全信任EXECUTE响应中携带的states值,收到SUCCESS响应后会主动发起QUERY请求拉取设备最新状态做二次校验。如果QUERY接口读取的是有延迟的缓存、或者状态同步逻辑有问题,返回了
isLocked=true的旧值,就会直接触发状态不匹配的报错。可以拉取fulfillment服务的全量访问日志,确认报错时间点收到的QUERY请求返回值是否和实际锁状态一致,有延迟的话给锁状态更新加实时同步逻辑即可。 - 校验requestId匹配规则:确保响应中携带的
requestId和Google发来的EXECUTE请求中的requestId完全一致,不要自行生成新的requestId,否则Google无法将响应和原请求关联,会判定请求超时无响应。
验证方法
修复完成后重新跑测试套件:
- 确认EXECUTE请求响应时间保持在4秒左右,所有字段类型、格式符合规范
- 确认Google后续发起的QUERY请求返回的
isLocked值为false - 测试用例不再出现30秒等待后失败的问题
内容的提问来源于stack exchange,提问作者Smart TTLock
相关产品推荐
相关产品推荐

