【问题标题】:Google Assistant - Report state returns 200 but Test suite and report state dashboard failsGoogle 助理 - 报告状态返回 200,但测试套件和报告状态仪表板失败
【发布时间】:2020-07-09 01:14:11
【问题描述】:

我正在实现一个具有 OnOff 和 Volume 特征的媒体远程设备。 报告状态负载如下所示:

{
    "requestId": "947aa603-1bfe-4bff-bac0-a50101da419d",
    "agentUserId": "13",
    "payload": {
        "devices": {
            "states": {
                "71dbbc93-73c6-46d1-80b0-d988dd8b0835_1": {
                    "on": true,
                    "online": true,
                    "currentVolume": 25,
                    "isMuted": false
                }
            }
        }
    }
}

响应为 200 OK,此数据:{"requestId": "947aa603-1bfe-4bff-bac0-a50101da419d"}

willReportState 在 SYNC 响应中也设置为 true。 requestSync 工作正常。

我遇到以下问题:

  • 报告状态仪表板有一个用于我的设备的空状态缓存。
  • 测试套件返回以下错误,表明没有状态:“AssertionError:预期包含的状态:{“currentVolume”:5},实际状态:{}:预期的假为真”

有人知道这里出了什么问题吗?

【问题讨论】:

  • payload 看起来是正确的,所以如果你得到一个成功的响应,你应该能够在 Home Graph 中看到内容。您能否确认在每个场景(报告状态调用、报告状态仪表板、测试套件)中使用的服务帐户凭据是否相同?
  • @Devunwired 是的,服务帐户凭据和 agentUserId 相同。我对那个测试套件并不完全清楚,仪表板都正确地找到了设备,只是状态丢失了。
  • 原来我们只有在开发帐户是 G Suite 帐户时才会遇到这个问题。使用标准的 Gmail 帐户状态报告可以正常工作。是否需要为 G Suite 帐号设置一组权限?
  • 你能澄清你的意思吗?您的意思是您链接到 agentUserId 的用户帐户是 Gmail 帐户,还是该 Gmail 帐户用于创建 HomeGraph API 凭据?
  • 用于创建 HomeGraph API 凭据的帐户是 GSuite 帐户。

标签: state actions-on-google google-home google-smart-home assistant


【解决方案1】:

根据 cmets 中的讨论,应使用 Service Account 创建 Home Graph API 凭据,该凭据对您的 Actions 项目具有适当的服务帐户令牌创建者权限。这些凭据不应来自项目用户的 OAuth 凭据。

【讨论】:

    【解决方案2】:

    我解决了在 SYNC 响应中将“commandOnlyOnOff”设置为 false:

    "attributes": {
       "commandOnlyOnOff": false
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-04
      • 2014-03-27
      • 1970-01-01
      相关资源
      最近更新 更多