সনাক্ত করুন এবং সিঙ্ক করুন

একবার আপনি Cloud-to-cloud ইন্টিগ্রেশন তৈরি করলে , পরবর্তী ধাপ হল আপনার পরিপূর্ণতায় কার্যকারিতা যোগ করা যাতে স্মার্ট হোম ইন্টেন্টগুলি প্রক্রিয়া করা যায় এবং Google Assistant যে প্রতিক্রিয়াগুলি স্বীকৃতি দেয় তা ফেরত দেওয়া যায়।

ব্যবহারকারীকে শনাক্ত করুন

Assistant আপনার smart home অ্যাকশনের পরিপূর্ণতার জন্য আপনার OAuth 2.0 সার্ভার দ্বারা Authorization অ্যাক্সেস টোকেন ব্যবহার করে অনুরোধ করে।

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

যেকোনো অনুরোধের উত্তর দেওয়ার আগে, আপনার পূরণের যুক্তিটি যাচাই করা উচিত যে এই টোকেন শংসাপত্রটি বৈধ এবং সংশ্লিষ্ট ব্যবহারকারী অ্যাকাউন্ট নির্ধারণ করা উচিত। যদি অ্যাক্সেস টোকেনটি অবৈধ হয়, তাহলে আপনার পূরণের ফলে একটি HTTP 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"
        }
      }
    ]
  }
}
নোড.জেএস
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);
}

আরও তথ্যের জন্য, SYNC ইন্টেন্ট রেফারেন্স ডকুমেন্টেশন দেখুন।