测试版通知在测试环境是否可用?推送未发布Action遇400用户ID错误
先给你明确答案:Beta阶段的通知功能在测试环境是可以正常使用的,你遇到的"Invalid user id for target"错误,大概率是几个常见的配置或流程问题导致的,结合你的情况,给你梳理几个排查方向:
测试用户未加入Beta白名单:就算模拟器里的userId看起来完全对,但如果这个测试账号没被添加到你Action的Beta测试人员列表里,推送时就会触发这个错误。你得去Google Actions Console的「测试」页面,把你模拟器用的账号加进去,还要确保这个账号已经接收并同意了Beta邀请——别漏了这步,很多人加了名单但没处理邀请,照样用不了。
用错了userId类型:模拟器请求页里可能会显示好几个ID,比如
user.id和user.userId,但通知API认的是和你的Action绑定的那个user.userId,不是其他类型的用户ID。你得再核对下序列化通知里的ID是不是这个值,别搞混了。用户没授予通知权限:推送通知前必须让用户授权!你得在Action流程里通过
UpdatePermission意图向用户请求通知权限,只有用户明确同意后,这个userId才是有效的推送目标。没授权的话,哪怕ID对,也会返回错误。Action没真正发布到Beta:确认你的Action已经提交了Beta版本,状态显示「已发布到Beta」。要是还停留在草稿阶段,哪怕加了测试用户,通知功能也跑不起来。
另外,你说userId和模拟器一致,建议再仔细核对一遍:
序列化后的通知里的userId,是不是和用户授权通知时返回的
userId完全匹配?有时候可能因为大小写、隐形空格或者编码问题,看起来一样但实际不匹配,这种坑很容易踩。
最后分享个调试小技巧:用Google的Actions API测试工具直接调用推送接口,能拿到更详细的错误日志,帮你更快定位问题。
内容的提问来源于stack exchange,提问作者William DePalo

