عندما يتفاعل المستخدمون مع 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
، يمكنك الاطّلاع على
التعامل مع الأخطاء والاستثناءات
الأخطاء والاستثناءات لمزيد من الأخطاء
التفاصيل.