כשמשתמשים יוצרים אינטראקציה עם Google Assistant כדי לשלוח שאילתה על
במכשיר, מילוי הבקשה מקבל
Intent של action.devices.QUERY
שמכיל
רשימה של מזהי מכשירים (כפי שסופקה בתשובתך SYNC
).
מילוי ההזמנה מקבל
action.devices.EXECUTE
Intent
כשמשתמשים שולחים פקודות אל Assistant כדי לשלוט
במכשיר.
טיפול ב-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
מסמכי עזר.
טיפול ב-EXECUTE
כוונות
בדומה ל-QUERY
, כוונת רכישה יחידה יכולה לטרגט כמה מזהי מכשירים. סינגל
אובייקט ה-Intent EXECUTE
עשוי גם להכיל מספר פקודות ייחודיות שניתנו לקבוצה
של מכשירים. לדוגמה, כשמפעילים Intent, המערכת יכולה להגדיר גם בהירות וגם צבע.
על קבוצת מנורות, או להגדיר כמה מנורות לצבע אחר. שלך
תגובת 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
.
מסמכי עזר של Intent.
תגובות בסטטוס
התשובות שלך ב-QUERY
וב-EXECUTE
כוללות שדה status
לדיווח על
כתוצאה מהבקשה. כל תגובה לסטטוס יכולה לכלול את הפרטים הבאים:
ערכים:
SUCCESS
: הבקשה הצליחה.OFFLINE
: מכשיר היעד לא מחובר לאינטרנט או שלא ניתן לגשת אליו מסיבה אחרת.EXCEPTIONS
: יש בעיה או התראה שמשויכות לבקשה.ERROR
: הבקשה נכשלה עםerrorCode
התואם.
מידע על ERROR
ו-EXCEPTIONS
זמין בכתובת
טיפול בשגיאות ובחריגים וגם
שגיאות וחריגים למידע נוסף
פרטים.