我正在为谷歌家庭开发一个智能家居应用来控制智能设备。 我使用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'。
这是谷歌的问题吗?
答案 0 :(得分:2)
Google的JSON处理通常将camelCaseNaming和underscore_naming视为等效。在这种情况下,deviceControl
和device_control
引用相同的内容。
操作包中的Action的当前(截至2017年5月18日)规范不包括deviceControl
作为有效字段。我可以找到deviceControl
的{{3}}是关于操作包的描述性文档,但它同样留空并且没有在那里描述。
您可以安全地删除此条目。
答案 1 :(得分:0)
删除它:
&#34; deviceControl&#34;:{ },
在您的操作包中,它将起作用。
我刚认证这种方式有效。