เมื่อผู้ใช้โต้ตอบกับ Google Assistant เพื่อค้นหาเหตุการณ์ปัจจุบัน
สถานะของอุปกรณ์ การดำเนินการตามคำสั่งซื้อจะได้รับ
action.devices.QUERY
ที่มี
รายการรหัสอุปกรณ์ (ตามที่ระบุไว้ในคำตอบ SYNC
)
การดำเนินการตามคำสั่งซื้อของคุณได้รับการดำเนินการ
Intent action.devices.EXECUTE
เมื่อผู้ใช้ส่งคำสั่งไปยัง Assistant เพื่อควบคุม
อุปกรณ์
จัดการ Intent QUERY
การตอบกลับ QUERY
ของคุณจะมีสถานะแบบเต็มสำหรับลักษณะแต่ละอย่าง
รองรับโดยอุปกรณ์ที่ขอ
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.QUERY", "payload": { "devices": [{ "id": "123", "customData": { "fooValue": 74, "barValue": true, "bazValue": "foo" } }, { "id": "456", "customData": { "fooValue": 12, "barValue": false, "bazValue": "bar" } }] } }] }
JSON
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "devices": { "123": { "on": true, "online": true }, "456": { "on": true, "online": true, "brightness": 80, "color": { "name": "cerulean", "spectrumRGB": 31655 } } } } }
Node.js
const {smarthome} = require('actions-on-google'); const app = smarthome(); // ... app.onQuery((body, headers) => { // TODO Get device state return { requestId: body.requestId, payload: { devices: { 123: { on: true, online: true }, 456: { on: true, online: true, brightness: 80, color: { name: "cerulean", spectrumRGB: 31655 } } } } }; });
Java
@NotNull @Override public QueryResponse onQuery(@NotNull QueryRequest queryRequest, @Nullable Map<?, ?> map) { QueryResponse.Payload payload = new QueryResponse.Payload(); payload.setDevices( new HashMap<String, Map<String, Object>>() { { put( "123", new HashMap<String, Object>() { { put("on", true); put("online", true); } }); put( "456", new HashMap<String, Object>() { { put("on", true); put("online", true); put("brightness", 80); put( "color", new HashMap<String, Object>() { { put("name", "cerulean"); put("spectrumRGB", 31655); } }); } }); } }); return new QueryResponse(queryRequest.getRequestId(), payload); }
ดูข้อมูลเพิ่มเติมได้จาก Intent QUERY
เอกสารอ้างอิง
จัดการ Intent EXECUTE
Intent เดียวสามารถกำหนดเป้าหมายรหัสอุปกรณ์หลายรหัสได้เช่นเดียวกับ QUERY
คำขอ
Intent EXECUTE
อาจมีคำสั่งที่แตกต่างกันหลายรายการที่กำหนดให้กับกลุ่มได้ด้วย
ทั้งหมด ตัวอย่างเช่น ความตั้งใจที่เรียกใช้อาจตั้งค่าทั้งความสว่างและสี
กลุ่มหลอดไฟ หรือตั้งค่าไฟหลายดวงให้มีสีต่างกัน บัญชี
การตอบสนองของ EXECUTE
ควรคืนค่าสถานะใหม่ของอุปกรณ์หลังจาก
ใช้ Report State
เมื่อสถานะของผู้ใช้ การเปลี่ยนแปลงอุปกรณ์ ตัวอย่างเช่น เนื่องจากEXECUTE
ความตั้งใจหรือสถานะของท้องถิ่นที่เปลี่ยนไป (เช่น พลิกสวิตช์ไฟด้วยตนเอง)
การดำเนินการนี้จะทำให้ Google Home Graph ซิงค์กับบริการระบบคลาวด์ของคุณอยู่เสมอ
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "inputs": [{ "intent": "action.devices.EXECUTE", "payload": { "commands": [{ "devices": [{ "id": "123", "customData": { "fooValue": 74, "barValue": true, "bazValue": "sheepdip" } }, { "id": "456", "customData": { "fooValue": 36, "barValue": false, "bazValue": "moarsheep" } }], "execution": [{ "command": "action.devices.commands.OnOff", "params": { "on": true } }] }] } }] }
JSON
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "123" ], "status": "SUCCESS", "states": { "on": true, "online": true } }, { "ids": [ "456" ], "status": "ERROR", "errorCode": "deviceTurnedOff" } ] } }
Node.js
const {smarthome} = require('actions-on-google'); const app = smarthome(); // ... app.onExecute((body, headers) => { // TODO Send command to device return { requestId: body.requestId, payload: { commands: [{ ids: ["123"], status: "SUCCESS", states: { on: true, online: true } }, { ids: ["456"], status: "ERROR", errorCode: "deviceTurnedOff" }] } }; });
Java
@NotNull @Override public ExecuteResponse onExecute( @NotNull ExecuteRequest executeRequest, @Nullable Map<?, ?> map) { ExecuteResponse.Payload payload = new ExecuteResponse.Payload(); payload.setCommands( new Commands[] { new Commands( new String[] {"123"}, "SUCCESS", new HashMap<String, Object>() { { put("on", true); put("online", true); } }, null, null), new Commands(new String[] {"456"}, "ERROR", null, "deviceTurnedOff", null) }); return new ExecuteResponse(executeRequest.getRequestId(), payload); }
ดูข้อมูลเพิ่มเติมได้ที่EXECUTE
เอกสารอ้างอิงความตั้งใจ
การตอบกลับสถานะ
คําตอบ QUERY
และ EXECUTE
มีช่อง status
สําหรับรายงาน
ผลลัพธ์คำขอ การตอบกลับสถานะแต่ละรายการสามารถแสดงอย่างใดอย่างหนึ่งต่อไปนี้
มีดังนี้
SUCCESS
: คำขอสำเร็จแล้วOFFLINE
: อุปกรณ์เป้าหมายออฟไลน์อยู่หรือเข้าถึงไม่ได้EXCEPTIONS
: มีปัญหาหรือการแจ้งเตือนที่เชื่อมโยงกับคำขอERROR
: คำขอล้มเหลวโดยมีerrorCode
ที่เกี่ยวข้อง
สำหรับ ERROR
และ EXCEPTIONS
โปรดดู
จัดการข้อผิดพลาดและข้อยกเว้น และ
ข้อผิดพลาดและข้อยกเว้น สำหรับข้อมูลเพิ่มเติม
รายละเอียด