ก่อนตอบกลับคําขอ ตรรกะการดําเนินการตามคําสั่งซื้อควรยืนยันว่าข้อมูลเข้าสู่ระบบโทเค็นนี้ถูกต้อง และระบุบัญชีผู้ใช้ที่เกี่ยวข้อง หากโทเค็นเพื่อการเข้าถึงไม่ถูกต้อง การจําหน่ายของคุณควรแสดงข้อผิดพลาด HTTP 401 Unauthorized
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"inputs": [{
"intent": "action.devices.SYNC"
}]
}
{
"requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
"payload": {
"agentUserId": "1836.15267389",
"devices": [
{
"id": "123",
"type": "action.devices.types.OUTLET",
"traits": [
"action.devices.traits.OnOff"
],
"name": {
"defaultNames": [
"My Outlet 1234"
],
"name": "Night light",
"nicknames": [
"wall plug"
]
},
"willReportState": false,
"roomHint": "kitchen",
"deviceInfo": {
"manufacturer": "lights-out-inc",
"model": "hs1234",
"hwVersion": "3.2",
"swVersion": "11.4"
},
"otherDeviceIds": [
{
"deviceId": "local-device-id"
}
],
"customData": {
"fooValue": 74,
"barValue": true,
"bazValue": "foo"
}
},
{
"id": "456",
"type": "action.devices.types.LIGHT",
"traits": [
"action.devices.traits.OnOff",
"action.devices.traits.Brightness",
"action.devices.traits.ColorSetting"
],
"name": {
"defaultNames": [
"lights out inc. bulb A19 color hyperglow"
],
"name": "lamp1",
"nicknames": [
"reading lamp"
]
},
"willReportState": false,
"roomHint": "office",
"attributes": {
"colorModel": "rgb",
"colorTemperatureRange": {
"temperatureMinK": 2000,
"temperatureMaxK": 9000
},
"commandOnlyColorSetting": false
},
"deviceInfo": {
"manufacturer": "lights out inc.",
"model": "hg11",
"hwVersion": "1.2",
"swVersion": "5.4"
},
"customData": {
"fooValue": 12,
"barValue": false,
"bazValue": "bar"
}
}
]
}
}
const {smarthome} = require('actions-on-google');
const app = smarthome();
// ...
app.onSync((body, headers) => {
// TODO Get devices for user
return {
requestId: body.requestId,
payload: {
agentUserId: "1836.15267389",
devices: [{
id: "123",
type: "action.devices.types.OUTLET",
traits: [
"action.devices.traits.OnOff"
],
name: {
defaultNames: ["My Outlet 1234"],
name: "Night light",
nicknames: ["wall plug"]
},
willReportState: false,
roomHint: "kitchen",
deviceInfo: {
manufacturer: "lights-out-inc",
model: "hs1234",
hwVersion: "3.2",
swVersion: "11.4"
},
otherDeviceIds: [{
deviceId: "local-device-id"
}],
customData: {
fooValue: 74,
barValue: true,
bazValue: "foo"
}
}, {
id: "456",
type: "action.devices.types.LIGHT",
traits: [
"action.devices.traits.OnOff",
"action.devices.traits.Brightness",
"action.devices.traits.ColorSetting"
],
name: {
defaultNames: ["lights out inc. bulb A19 color hyperglow"],
name: "lamp1",
nicknames: ["reading lamp"]
},
willReportState: false,
roomHint: "office",
attributes: {
colorModel: 'rgb',
colorTemperatureRange: {
temperatureMinK: 2000,
temperatureMaxK: 9000
},
commandOnlyColorSetting: false
},
deviceInfo: {
manufacturer: "lights out inc.",
model: "hg11",
hwVersion: "1.2",
swVersion: "5.4"
},
customData: {
fooValue: 12,
barValue: false,
bazValue: "bar"
}
}]
}
};
});
@NotNull
@Override
public SyncResponse onSync(@NotNull SyncRequest syncRequest, @Nullable Map<?, ?> map) {
Payload payload = new Payload();
payload.setAgentUserId("1836.15267389");
payload.setDevices(
new Device[] {
new Device.Builder()
.setId("123")
.setType("action.devices.types.OUTLET")
.addTrait("action.devices.traits.OnOff")
.setName(
Collections.singletonList("My Outlet 1234"),
"Night light",
Collections.singletonList("Wall plug"))
.setWillReportState(true)
.setDeviceInfo("lights-out-inc", "hs1234", "3.2", "11.4")
.setCustomData(
new JSONObject()
.put("fooValue", 74)
.put("barValue", true)
.put("bazValue", "foo"))
.build(),
new Device.Builder()
.setId("456")
.setType("action.devices.types.LIGHT")
.addTrait("action.devices.traits.OnOff")
.addTrait("action.devices.traits.Brightness")
.addTrait("action.devices.traits.ColorTemperature")
.addTrait("action.devices.traits.ColorSpectrum")
.setName(
Collections.singletonList("Lights Out Inc. bulb A19 color hyperglow"),
"Lamp",
Collections.singletonList("Reading lamp"))
.setWillReportState(true)
.setDeviceInfo("Lights Out Inc.", "hg11", "1.2", "5.4")
.setCustomData(
new JSONObject()
.put("fooValue", 12)
.put("barValue", false)
.put("bazValue", "bar"))
.build(),
});
return new SyncResponse(syncRequest.getRequestId(), payload);
}