Khi người dùng tương tác với Google Assistant để truy vấn
trạng thái của thiết bị, phương thức thực hiện của bạn sẽ nhận được một
Ý định action.devices.QUERY
chứa
danh sách mã thiết bị (như được cung cấp trong phản hồi SYNC
của bạn).
Phương thức thực hiện đơn hàng của bạn nhận được một
Ý định action.devices.EXECUTE
khi người dùng gửi lệnh đến Assistant để kiểm soát
thiết bị.
Xử lý ý định QUERY
Phản hồi QUERY
của bạn bao gồm một tập hợp đầy đủ các trạng thái cho mỗi đặc điểm
được các thiết bị được yêu cầu hỗ trợ.
{ "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); }
Để biết thêm thông tin, hãy xem ý định QUERY
tài liệu tham khảo.
Xử lý ý định EXECUTE
Tương tự như QUERY
, một ý định duy nhất có thể nhắm đến nhiều mã thiết bị. Một
Ý định EXECUTE
cũng có thể chứa nhiều lệnh riêng biệt được đặt cho một nhóm
của thiết bị. Ví dụ: một ý định được kích hoạt có thể đặt cả độ sáng và màu sắc
trên một nhóm đèn hoặc đặt nhiều đèn thành một màu khác nhau. Thông tin
Phản hồi EXECUTE
sẽ trả về trạng thái mới của thiết bị sau
thực thi.
Sử dụng Report State
khi trạng thái của trang web người dùng các thay đổi về thiết bị. Ví dụ: do EXECUTE
ý định hoặc thay đổi trạng thái cục bộ (chẳng hạn như bật công tắc đèn theo cách thủ công).
Việc này giúp Google Home Graph đồng bộ hoá với dịch vụ đám mây của bạn.
{ "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); }
Để biết thêm thông tin, hãy xem EXECUTE
tài liệu tham khảo về ý định.
Phản hồi trạng thái
Các phản hồi QUERY
và EXECUTE
của bạn có trường status
để báo cáo
kết quả của yêu cầu. Phản hồi của mỗi trạng thái có thể cung cấp một trong những nội dung sau
giá trị:
SUCCESS
: Yêu cầu thành công.OFFLINE
: Thiết bị mục tiêu hiện không có kết nối mạng hoặc không kết nối được.EXCEPTIONS
: Đã xảy ra sự cố hoặc cảnh báo liên quan đến yêu cầu này.ERROR
: Yêu cầu không thành công bằngerrorCode
tương ứng.
Đối với ERROR
và EXCEPTIONS
, hãy xem
Xử lý lỗi và ngoại lệ và
Lỗi và ngoại lệ và các lỗi khác
chi tiết.