Saat pengguna berinteraksi dengan Google Assistant untuk mengkueri saat ini
status perangkat, fulfillment Anda menerima
Intent action.devices.QUERY
yang berisi
daftar ID perangkat (seperti yang diberikan oleh respons SYNC
Anda).
Pemenuhan pesanan Anda menerima
Intent action.devices.EXECUTE
saat pengguna mengirimkan perintah ke Assistant untuk mengontrol
perangkat seluler.
Menangani intent QUERY
Respons QUERY
Anda mencakup kumpulan status lengkap untuk setiap karakteristik
didukung oleh perangkat yang diminta.
{ "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); }
Untuk informasi selengkapnya, lihat intent QUERY
dokumentasi referensi.
Menangani intent EXECUTE
Serupa dengan QUERY
, satu intent dapat menargetkan beberapa ID perangkat. Satu
Intent EXECUTE
juga dapat berisi beberapa perintah berbeda yang diberikan ke grup
perangkat seluler. Misalnya, intent yang dipicu dapat menyetel kecerahan dan warna
pada sekelompok lampu, atau mengatur
beberapa lampu ke warna yang berbeda. Nama
Respons EXECUTE
akan menampilkan status baru perangkat setelah
dalam proses eksekusi.
Gunakan Report State
saat status pengguna perubahan perangkat. Misalnya, karena EXECUTE
atau perubahan status lokal (seperti menyalakan sakelar lampu secara manual).
Tindakan ini membuat Google Home Graph tetap sinkron dengan layanan cloud Anda.
{ "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); }
Untuk informasi selengkapnya, lihat EXECUTE
.
dokumentasi referensi intent.
Respons status
Respons QUERY
dan EXECUTE
Anda menyertakan kolom status
untuk melaporkan
hasil permintaan. Setiap respons status dapat memberikan salah satu hal berikut
nilai-nilai:
SUCCESS
: Permintaan berhasil.OFFLINE
: Perangkat target sedang offline atau tidak dapat dijangkau.EXCEPTIONS
: Ada masalah atau pemberitahuan yang terkait dengan permintaan.ERROR
: Permintaan gagal denganerrorCode
yang sesuai.
Untuk ERROR
dan EXCEPTIONS
, lihat
Menangani error dan pengecualian serta
Error dan pengecualian untuk info selengkapnya
spesifikasi
pendukung.