使用action.devices.EXECUTE意图能否同时执行多条设备控制指令
Execute Intent多设备复合命令执行问题解答
- 首先可以明确:
action.devices.EXECUTEintent完全支持同时执行多条不同的设备控制命令,你提到的「打开电灯并关闭开关」这类复合语音指令场景可正常适配。 - 你当前构造的JSON结构存在错误:你将所有设备和两个相反的
OnOff指令放在同一个commands对象中,平台不会自动匹配设备与对应动作,该结构会导致执行逻辑冲突,无法实现预期效果。 - 正确的请求构造规则:
payload.commands数组中的每个独立元素,对应一组需要执行相同动作的设备,每个元素内的devices字段存储待操作的设备列表,execution字段存储该组设备要执行的所有指令。
你需要将不同动作的设备拆分到不同的commands对象中,参考正确结构如下:
{ "requestId": "6894439706274654516", "inputs": [ { "intent": "action.devices.EXECUTE", "payload": { "commands": [ { "devices": [ { "id": "123", "customData": { "deviceName": "action.devices.types.OUTLET" } }, { "id": "456", "customData": { "deviceName": "action.devices.types.OUTLET" } } ], "execution": [ { "command": "action.devices.commands.OnOff", "params": { "on": true } } ] }, { "devices": [ { "id": "789", "customData": { "deviceName": "action.devices.types.SWITCH" } } ], "execution": [ { "command": "action.devices.commands.OnOff", "params": { "on": false } } ] } ] } } ] }
- 执行逻辑处理规则:后端收到请求后,按顺序遍历
commands数组的每一项即可,每一项内的所有设备统一执行该项下execution定义的所有命令,不同commands项的执行逻辑互不干扰,即可实现打开插座、关闭开关的差异化操作。
内容的提问来源于stack exchange,提问作者Michael Antunes
相关产品推荐
相关产品推荐

