Google智能家居应用测试中的操作失败

时间:2017-05-26 01:58:13

标签: actions-on-google

我正在为谷歌家庭开发一个智能家居应用来控制智能设备。 我使用gactions来推送我的应用程序进行测试:

gactions test --action_package action.json --project <project-name>

一切正常,直到今天,测试命令返回错误:

Pushing the app for the Assistant for testing...
ERROR: Failed to test the app for the Assistant
ERROR: Invalid JSON payload received. Unknown name "device_control" at 'preview_
action_package.action_package.actions[0]': Cannot find field.
Field Violations:
#  Field                                             Description
1  preview_action_package.action_package.actions[0]  Invalid JSON payload receiv
ed. Unknown name "device_control" at 'preview_action_package.action_package.acti
ons[0]': Cannot find field.
2017/05/26 09:39:10 Server did not return HTTP 200

这是我的action.json,自创建以来它没有改变:

{
    "actions": [{
    "name": "actions.devices",
    "deviceControl": {
    },
    "fulfillment": {
      "conversationName": "automation"
    }
  }],
    "conversations": {
      "automation": {
        "name": "automation",
        "url": "<my web endpoint>"
      }
    }
}

我的action.json中没有device_control。 经过一番尝试,似乎解析器将'C'视为'_c'。

这是谷歌的问题吗?

2 个答案:

答案 0 :(得分:2)

Google的JSON处理通常将camelCaseNaming和underscore_naming视为等效。在这种情况下,deviceControldevice_control引用相同的内容。

操作包中的Action的当前(截至2017年5月18日)规范不包括deviceControl作为有效字段。我可以找到deviceControl的{​​{3}}是关于操作包的描述性文档,但它同样留空并且没有在那里描述。

您可以安全地删除此条目。

答案 1 :(得分:0)

删除它:

&#34; deviceControl&#34;:{  },

在您的操作包中,它将起作用。

我刚认证这种方式有效。