जब उपयोगकर्ता मौजूदा क्वेरी के लिए Google Assistant से इंटरैक्ट करते हैं
डिवाइस की स्थिति है, तो आपके फ़ुलफ़िलमेंट को
action.devices.QUERY
इंटेंट में शामिल है
डिवाइस आईडी की सूची (जैसा कि आपके SYNC
जवाब में बताया गया है).
आपके ऑर्डर को पूरा करने पर,
action.devices.EXECUTE
इंटेंट
जब उपयोगकर्ता आपके डिवाइस को कंट्रोल करने के लिए 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); }
ज़्यादा जानकारी के लिए, QUERY
इंटेंट देखें
देखें.
EXECUTE
इंटेंट हैंडल करें
QUERY
की तरह, एक इंटेंट कई डिवाइस आईडी को टारगेट कर सकता है. सिंगल
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
के लिए, देखें
गड़बड़ियों और अपवादों को मैनेज करना और
अन्य इवेंट के लिए गड़बड़ियां और अपवाद
विवरण.