Actions on google Google智能家居操作:帐户链接成功,由履行发送同步响应,状态代码为200,但Google Home app报告错误

Actions on google Google智能家居操作:帐户链接成功,由履行发送同步响应,状态代码为200,但Google Home app报告错误,actions-on-google,google-home,Actions On Google,Google Home,我正在构建一个Google Smart Home action,其实现作为node.js中的lambda函数托管在AWS上,其中包含Google Smart Home actions的节点实现,通过AWS API网关公开,外部OAuth 2提供程序作为API网关的授权人。我的实现包括同步、查询和执行方法,并返回有效的JSON响应,包括我在文档中看到的所有必需属性。我在Google控制台上设置了所有操作,包括指向AWS API网关上我的方法的实现URL和帐户链接详细信息。之后,我点击“测试”,以使

我正在构建一个Google Smart Home action,其实现作为node.js中的lambda函数托管在AWS上,其中包含Google Smart Home actions的节点实现,通过AWS API网关公开,外部OAuth 2提供程序作为API网关的授权人。我的实现包括同步、查询和执行方法,并返回有效的JSON响应,包括我在文档中看到的所有必需属性。我在Google控制台上设置了所有操作,包括指向AWS API网关上我的方法的实现URL和帐户链接详细信息。之后,我点击“测试”,以使智能家居操作在谷歌Home companion应用程序中可测试

在尝试添加新设备时,我可以在Google Home companion应用程序中看到我的智能家居操作“[test]ACTIONNAME”。当我点击该操作时,我被正确地重定向到我的OAuth 2提供商,登录并被重定向到Google Home应用程序。然后在底部显示一个通知“[test]ist verknüpft”(德语说“[test]ACTIONNAME被链接”)。不久之后,它显示了第二个通知“Ein Fehler ist aufgetreten.bite versuche es noch einmal”(德语说“发生了一个错误,请再试一次)。当我再次单击该操作时,它再次显示“[test]ACTIONNAME get linked”,然后是第二个通知“发生了一个错误,请再试一次”,因此无需再次登录,因为Google Home显然已成功获得令牌

我已经检查了我的AWS Cloud Watch日志,我可以看到,每当我在Google Home companion应用程序的“添加新设备”对话框中单击该操作时,Google都会成功调用我的履行,收到一个带有200个状态码的同步响应,如下所示(匿名):

所以在我看来,Google Home获得了成功授权并收到了同步响应,但不知何故无法处理它。但它应该是正确的,不是吗

我还尝试了使用Google智能家居测试套件,但在执行此操作时,在键入AgentUserId并附加token receiver服务帐户证书后,它会显示一个通知,表明requestSync方法接收到一个404状态代码,并显示消息“请求的实体未找到”。当我尝试通过POST请求调用Homegraph API时,也会发生这种情况,如下所示:

curl -i -s -X POST -H "Content-Type: application/json" -d "{agentUserId: \"1234\", async: true}" "https://homegraph.googleapis.com/v1/devices:requestSync?key=MYAPIKEY"
我猜这是因为Homegraph还不知道AgentUserId为1234的用户拥有哪些设备,因为Google home从未正确处理过同步消息

我很迷茫,不知道如何收集问题所在的进一步信息。有人知道如何解决这个问题吗


编辑:更多信息-我尝试了以下额外的事情:1.我在谷歌项目上用相同的配置创建了一个新的操作-这里有相同的问题,没有帮助。2.我在GCP上查看了智能家居项目的Stackdriver日志,真正奇怪的是,没有资源Googl的日志当我尝试在Google home应用程序中链接smart home操作时,e Assistant通常也没有时间段的日志。它不应该至少记录oauth流(看起来像预期的那样工作)吗除了发送给我的实现的同步请求之外?

我得到了它-简单的解决方案是,Google actions的node.js实现期望AWS API集成是一个lambda代理集成,我没有像问题中所述的同步响应中那样配置它。因此,只需切换到AWS lambdaproxy集成解决了这个问题。

我明白了-简单的解决方案是,Google actions的node.js实现期望AWS API集成是lambdaproxy集成,我没有像问题中所述的同步响应那样配置。因此just切换到AWS lambda代理集成解决了问题

curl -i -s -X POST -H "Content-Type: application/json" -d "{agentUserId: \"1234\", async: true}" "https://homegraph.googleapis.com/v1/devices:requestSync?key=MYAPIKEY"