সিঙ্ক করার অনুরোধ করা

সিঙ্ক করার অনুরোধ করলে, আপনার ফুলফিলমেন্টে SYNC অনুরোধ করা হয়, এটি সেইসব Google ব্যবহারকারীর জন্য করা হয় যাদের ডিভাইসে নির্দিষ্ট agentUserId যুক্ত আছে (যা আপনি মূল SYNC অনুরোধে পাঠিয়েছিলেন)। এর ফলে, ব্যবহারকারীর অ্যাকাউন্ট আনলিঙ্ক ও আবার লিঙ্ক না করেই আপনি তার ডিভাইস আপডেট করতে পারবেন। এই আইডেন্টিফায়ারের সাথে লিঙ্ক করা সব ব্যবহারকারী একটি SYNC অনুরোধ পাবেন।

আপনাকে অবশ্যই একটি SYNC অনুরোধ ট্রিগার করতে হবে:

  • ব্যবহারকারী নতুন ডিভাইস যোগ করলে।
  • ব্যবহারকারী আগে থেকেই থাকা ডিভাইস সরিয়ে দিলে।
  • ব্যবহারকারী আগে থেকেই থাকা কোনও ডিভাইসের নাম পরিবর্তন করলে।
  • আপনি যদি নতুন ধরনের ডিভাইস, ট্রেড প্রয়োগ করেন বা নতুন ডিভাইস ফিচার যোগ করেন।

শুরু করুন

'সিঙ্ক করার অনুরোধ' ফিচার প্রয়োগ করতে, এইসব ধাপ অনুসরণ করুন:

Google HomeGraph API চালু করুন

  1. Google Cloud Console-এ গিয়ে HomeGraph API পৃষ্ঠায় যান।

    HomeGraph API পৃষ্ঠায় যান
  2. আপনার smart home প্রোজেক্ট আইডির সাথে ম্যাচ করে এমন প্রোজেক্ট বেছে নিন।
  3. চালু করুন বিকল্পে ক্লিক করুন।

পরিষেবা অ্যাকাউন্টের কী তৈরি করা

Google Cloud Console থেকে পরিষেবা অ্যাকাউন্টের কী তৈরি করতে এইসব নির্দেশাবলী অনুসরণ করুন:

মনে রাখবেন: এইসব ধাপগুলি অনুসরণ করার সময় আপনি সঠিক GCP প্রোজেক্ট ব্যবহার করছেন কিনা তা নিশ্চিত করুন। এটি সেই প্রোজেক্ট যা আপনার smart home প্রোজেক্ট আইডির সাথে ম্যাচ করে।
  1. Google Cloud Console-এ, পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান।

    পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যান।

    পরিষেবা অ্যাকাউন্ট পৃষ্ঠায় যাওয়ার আগে আপনাকে কোনও প্রোজেক্ট বেছে নিতে হতে পারে।

  2. পরিষেবা অ্যাকাউন্ট তৈরি করুন বিকল্পে ক্লিক করুন।

  3. পরিষেবা অ্যাকাউন্টের নাম ফিল্ডে, একটি নাম লিখুন।

  4. পরিষেবা অ্যাকাউন্ট আইডি ফিল্ডে, একটি আইডি লিখুন।

  5. পরিষেবা অ্যাকাউন্টের বিবরণ ফিল্ডে, একটি বিবরণ লিখুন।

  6. তৈরি করুন ও চালিয়ে যান বিকল্পে ক্লিক করুন।

  7. ভূমিকা ড্রপডাউন থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট OpenID Connect আইডেন্টিটি টোকেন ক্রিয়েটর বিকল্প বেছে নিন।

  8. চালিয়ে যান বিকল্পে ক্লিক করুন।

  9. হয়ে গেছে বিকল্পে ক্লিক করুন।

  10. পরিষেবা অ্যাকাউন্টের তালিকা থেকে আপনি যে পরিষেবা অ্যাকাউন্টটি তৈরি করেছেন সেটি বেছে নিন এবং অ্যাকশন মেনু থেকে কী ম্যানেজ করুন বিকল্প বেছে নিন।

  11. কী যোগ করুন > নতুন কী তৈরি করুন বিকল্প বেছে নিন।

  12. কীয়ের ধরন হিসেবে, JSON বিকল্প বেছে নিন।

  13. তৈরি করুন বিকল্পে ক্লিক করুন। আপনার কম্পিউটারে একটি JSON ফাইল ডাউনলোড করা হয় যাতে আপনার কী থাকে ।

পরিষেবা অ্যাকাউন্ট কী তৈরি করা সম্পর্কিত বিস্তারিত নির্দেশাবলী ও তথ্যের জন্য, Google Cloud Console সহায়তা সাইটে পরিষেবা অ্যাকাউন্ট কী তৈরি ও মুছে দিন দেখুন।

API কল করা

HTTP

Home Graph API একটি HTTP এন্ডপয়েন্ট প্রদান করে

  1. JSON ওয়েব টোকেন (JWT) তৈরি করতে ডাউনলোড করা পরিষেবা অ্যাকাউন্ট JSON ফাইল ব্যবহার করুন। আরও তথ্যের জন্য, সার্ভিস অ্যাকাউন্ট ব্যবহার করে যাচাইকরণ দেখুন।
  2. oauth2l ব্যবহার করে https://www.googleapis.com/auth/homegraph স্কোপ সহ একটি OAuth 2.0 অ্যাক্সেস টোকেন পান:
  3. oauth2l fetch --credentials service-account.json \
      --scope https://www.googleapis.com/auth/homegraph
    
  4. agentUserId সহ JSON অনুরোধ তৈরি করুন। অনুরোধ সিঙ্কের জন্য এখানে JSON অনুরোধের নমুনা দেওয়া হল:
  5. {
      "agentUserId": "user-123"
    }
  6. Google Home Graph এন্ডপয়েন্টে আপনার HTTP POST অনুরোধে 'সিঙ্ক করার অনুরোধ' JSON ও টোকেন একত্রিত করুন। curl ব্যবহার করে কমান্ড লাইনে কীভাবে অনুরোধ করতে হয়, তার একটি উদাহরণ এখানে দেওয়া হল। এটি একটি পরীক্ষা:
  7. curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
      -H "Content-Type: application/json" \
      -d @request-body.json \
      "https://homegraph.googleapis.com/v1/devices:requestSync"
    

gRPC

Home Graph API একটি gRPC এন্ডপয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবা সংজ্ঞা পান।
  2. কাজ করে এমন ভাষাগুলির মধ্যে একটির জন্য ক্লায়েন্ট স্টাব তৈরি করতে, gRPC ডেভেলপার ডকুমেন্টেশন অনুসরণ করুন।
  3. RequestSync মেথড কল করুন।

Node.js

Google APIs Node.js ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে google.homegraph পরিষেবা ইনিশিয়ালাইজ করুন।
  2. RequestSyncDevicesRequest-এর সাথে requestSync মেথড কল করুন। এটি খালি RequestSyncDevicesResponse সহ একটি Promise রিটার্ন করে।
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

Java

Java-র জন্য HomeGraph API ক্লায়েন্ট লাইব্রেরি Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে HomeGraphApiService ইনিশিয়ালাইজ করুন।
  2. RequestSyncDevicesRequest-এর সাথে requestSync মেথড কল করুন। এটি একটি খালি ReportStateAndNotificationResponse রিটার্ন করে।
// Get Application Default credentials.
GoogleCredentials credentials =
    GoogleCredentials.getApplicationDefault()
        .createScoped(List.of("https://www.googleapis.com/auth/homegraph"));

// Create Home Graph service client.
HomeGraphService homegraphService =
    new HomeGraphService.Builder(
            GoogleNetHttpTransport.newTrustedTransport(),
            GsonFactory.getDefaultInstance(),
            new HttpCredentialsAdapter(credentials))
        .setApplicationName("HomeGraphExample/1.0")
        .build();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

সমস্যা সংক্রান্ত উত্তর

Request Sync-এ কল করার সময় আপনি নিম্নলিখিত সমস্যার উত্তরগুলির মধ্যে একটি পেতে পারেন। এইসব উত্তর HTTP স্ট্যাটাস কোডের মাধ্যমে আসে।

  • 400 Bad Request - The server was unable to process the request sent by the client due to invalid syntax. সাধারণ কারণগুলির মধ্যে JSON-এর গঠন ঠিক না থাকা বা স্ট্রিং ভ্যালুর জন্য ""-এর পরিবর্তে null ব্যবহার করা অন্তর্ভুক্ত।
  • 403 Forbidden - টোকেন রিফ্রেশ করার সময় সমস্যা হওয়ায়, প্রদত্ত agentUserId-এর অনুরোধ সার্ভার প্রসেস করতে পারেনি। রিফ্রেশ টোকেনের অনুরোধের সঠিক উত্তর দিতে এবং ব্যবহারকারীর অ্যাকাউন্ট লিঙ্ক করার স্ট্যাটাস চেক করতে আপনার OAuth এন্ডপয়েন্টকে নিশ্চিত করুন।
  • 404 Not Found - অনুরোধ করা রিসোর্সটি খুঁজে পাওয়া যায়নি, তবে ভবিষ্যতে উপলভ্য হতে পারে। সাধারণত, এর অর্থ হল যে ব্যবহারকারীর অ্যাকাউন্ট Google-এর সাথে লিঙ্ক করা নেই অথবা আমরা একটি ভুল agentUserId পেয়েছি। agentUserId-এর মান যেন আপনার SYNC উত্তরে দেওয়া মানের সাথে ম্যাচ করে এবং আপনি যেন DISCONNECT ইনটেন্ট সঠিকভাবে হ্যান্ডেল করেন, তা নিশ্চিত করুন।
  • 429 Too Many Requests - প্রদত্ত agentUserId-এর জন্য একই সাথে সিঙ্ক করার সর্বাধিক সংখ্যক অনুরোধের সীমা অতিক্রম করা হয়েছে। async ফ্ল্যাগ true হিসেবে সেট করা না থাকলে, কলার একসাথে শুধুমাত্র একটি সিঙ্ক করার অনুরোধ করতে পারেন।