Kullanıcılar mevcut bilgileri sorgulamak için Google Assistant ile
durumu hakkında daha fazla bilgi
action.devices.QUERY
amacı şunu içerir:
cihaz kimliklerinin listesi (SYNC
yanıtınızda belirtildiği şekilde).
Sipariş karşılama işleminiz bir
action.devices.EXECUTE
amacı
kullanıcılar, ayarlarınızı kontrol etmek için Assistant adresine komut gönderdiğinde
olanak tanır.
QUERY
niyetini işleyin
QUERY
yanıtınız, özelliklerin her biri için tam bir durum grubu içerir
desteklenen cihazlardır.
{ "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); }
Daha fazla bilgi için QUERY
amacına bakın
referans belgeler.
EXECUTE
niyetini işleyin
QUERY
özelliğine benzer şekilde, tek bir amaç da birden fazla cihaz kimliğini hedefleyebilir. Tek
EXECUTE
intent, bir gruba verilen birden fazla farklı komut da içerebilir
cihazlar. Örneğin, tetiklenen bir amaç hem parlaklığı hem de rengi ayarlayabilir.
ya da birden fazla ışığı farklı renklere ayarlayabilirsiniz. Sizin
EXECUTE
yanıtı, şu süreden sonra cihazın yeni durumunu döndürecektir:
birkaç adım var.
Report State kullanın
kullanıcının durumu, Cihaz değişiklikleri. Örneğin, EXECUTE
nedeniyle
amaç veya yerel durum değişikliği (ör. bir ışık anahtarını manuel olarak çevirmek).
Böylece Google Home Graph, bulut hizmetinizle senkronize edilir.
{ "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); }
Daha fazla bilgi için EXECUTE
başlıklı makaleyi inceleyin.
intent referans belgelerine bakın.
Durum yanıtları
QUERY
ve EXECUTE
yanıtlarınızdastatus
karar vermemiz gerekir. Her durum yanıtı aşağıdakilerden birini sağlayabilir
değerleri:
SUCCESS
: İstek başarılı oldu.OFFLINE
: Hedef cihaz çevrimdışı veya başka bir şekilde erişilemez durumda.EXCEPTIONS
: İstekle ilişkili bir sorun veya uyarı var.ERROR
: İstek, ilgilierrorCode
ile başarısız oldu.
ERROR
ve EXCEPTIONS
için şuraya bakın:
Hataları ve istisnaları ele alma ve
Daha fazla bilgi için hatalar ve istisnalar
bolca fırsat sunuyor.