स्मार्ट होम ऐक्शन बनाने का तरीका सीखने के लिए, Google Home डेवलपर सेंटर में आपका स्वागत है. ध्यान दें: आप Actions कंसोल में कार्रवाइयां बनाना जारी रखेंगे.

पहचानें और सिंक करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

smart home Action बना लेने के बाद, अगले चरण में स्मार्ट वॉच के इंटेंट को प्रोसेस करने और रिस्पॉन्स देने के लिए, फ़ुलफ़िलमेंट में सुविधा जोड़ें Google Assistant recognizes.

का इस्तेमाल करें

उपयोगकर्ता की पहचान करना

Assistant, Authorization हेडर में आपके OAuth 2.0 सर्वर से मिले ऐक्सेस टोकन की मदद से, आपके smart home ऐक्शन को पूरा करने का अनुरोध करता है.

POST /fulfillment HTTP/1.1
Host: smarthome.example.com
Content-Type: application/json
Authorization: Bearer ACCESS_TOKEN

किसी भी अनुरोध का जवाब देने से पहले, वाहन बेचने के तरीके के आधार पर यह पुष्टि होनी चाहिए कि यह टोकन क्रेडेंशियल मान्य है और यह आपके उपयोगकर्ता खाते से जुड़ा है. अगर ऐक्सेस टोकन गलत है, तो आपकी कार्रवाई पर एचटीटीपी 401 Unauthorized गड़बड़ी दिखेगी.

डिवाइसों और उनकी क्षमताओं की सूची बनाना

इस टास्क के लिए सुझाए गए टूल

Assistant दिए गए उपयोगकर्ता और उनकी क्षमताओं से जुड़े डिवाइस की सूची का अनुरोध करने के लिए, action.devices.SYNC इंटेंट भेजता है. SYNC के जवाब के agentUserId फ़ील्ड में आपको हर उपयोगकर्ता को एक यूनीक आईडी देना होगा. इस क्लाउड सेवा में उपयोगकर्ता को दिखाने के लिए, इस आईडी में कोई बदलाव नहीं होना चाहिए. उपयोगकर्ता को ऐसी सेटिंग के आधार पर ईमेल पते या दूसरे एट्रिब्यूट देने का सुझाव नहीं दिया जाता जिन्हें उपयोगकर्ता बदल सकता है.

आपके SYNC के devices फ़ील्ड में, वे सभी डिवाइस शामिल होते हैं जिन्हें इस्तेमाल करने की अनुमति Assistant ने दी है. यह जानकारी, उनके काम करने के टाइप और विशेषताओं के बारे में बताती है. साथ ही, इसमें वे एट्रिब्यूट भी शामिल होते हैं जो किसी खास डिवाइस पर, इस सुविधा के काम करने के तरीके को कॉन्फ़िगर करने के लिए ज़रूरी हैं.

SYNC लिंक, खाता लिंक करने के दौरान या उपयोगकर्ता के अपने डिवाइस को मैन्युअल रूप से दोबारा सिंक करने पर ट्रिगर होता है. अगर उपयोगकर्ताओं की डिवाइस सूची, काम करने वाले एट्रिब्यूट, या एट्रिब्यूट की वैल्यू में बदलाव होता है, तो नया SYNC इंटेंट ट्रिगर करने के लिए, सिंक करने का अनुरोध करें का इस्तेमाल करें. साथ ही, Google को अपडेट की रिपोर्ट दें.

अनुरोध
{
    "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
    "inputs": [{
      "intent": "action.devices.SYNC"
    }]
}
JSON
{
  "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"
        }
      }
    ]
  }
}
Node.js के बारे में ज़्यादा जानें
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"
        }
      }]
    }
  };
});
Java
@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);
}

ज़्यादा जानकारी के लिए, SYNC इंटेंट रेफ़रंस दस्तावेज़ देखें.