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

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

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

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

শুরু করুন

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

Google HomeGraph API সক্রিয় করুন

  1. Google Cloud Console , HomeGraph API পৃষ্ঠায় যান।

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

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

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

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

    সার্ভিস অ্যাকাউন্টস পৃষ্ঠায় যান

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

  2. সার্ভিস অ্যাকাউন্ট তৈরি করতে ক্লিক করুন।

  3. সার্ভিস অ্যাকাউন্ট নেম ফিল্ডে একটি নাম লিখুন।

  4. সার্ভিস অ্যাকাউন্ট আইডি ফিল্ডে একটি আইডি প্রবেশ করান।

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

  6. তৈরি করুন-এ ক্লিক করুন এবং চালিয়ে যান

  7. Role ড্রপডাউন থেকে, Service Accounts > Service Account OpenID Connect Identity Token Creator নির্বাচন করুন।

  8. চালিয়ে যান-এ ক্লিক করুন।

  9. সম্পন্ন ক্লিক করুন।

  10. সার্ভিস অ্যাকাউন্টগুলির তালিকা থেকে আপনার এইমাত্র তৈরি করা সার্ভিস অ্যাকাউন্টটি নির্বাচন করুন এবং Actions মেনু থেকে Manage keys নির্বাচন করুন।

  11. অ্যাড কী > ক্রিয়েট নিউ কী নির্বাচন করুন।

  12. Key type- এর জন্য JSON অপশনটি নির্বাচন করুন।

  13. Create-এ ক্লিক করুন। আপনার কম্পিউটারে আপনার কী (key) সম্বলিত একটি JSON ফাইল ডাউনলোড হবে।

সার্ভিস অ্যাকাউন্ট কী তৈরি করার বিষয়ে বিস্তারিত নির্দেশাবলী ও তথ্যের জন্য, গুগল ক্লাউড কনসোল হেল্প সাইটে “Create and delete service account keys” অংশটি দেখুন।

এপিআই কল করুন

HTTP

হোম গ্রাফ এপিআই একটি HTTP এন্ডপয়েন্ট প্রদান করে।

  1. ডাউনলোড করা সার্ভিস অ্যাকাউন্ট JSON ফাইলটি ব্যবহার করে একটি JSON ওয়েব টোকেন (JWT) তৈরি করুন। আরও তথ্যের জন্য, “সার্ভিস অ্যাকাউন্ট ব্যবহার করে প্রমাণীকরণ” দেখুন।
  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 অনুরোধে Request Sync 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 এন্ডপয়েন্ট প্রদান করে।

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

নোড.জেএস

গুগল এপিআই নোড.জেএস ক্লায়েন্ট হোম গ্রাফ এপিআই-এর জন্য বাইন্ডিং প্রদান করে।

  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
  }
});
    

জাভা

জাভার জন্য হোমগ্রাফ এপিআই ক্লায়েন্ট লাইব্রেরিটি হোম গ্রাফ এপিআই-এর জন্য বাইন্ডিং প্রদান করে।

  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 - ভুল সিনট্যাক্সের কারণে সার্ভার ক্লায়েন্ট কর্তৃক প্রেরিত অনুরোধটি প্রসেস করতে পারেনি। এর সাধারণ কারণগুলোর মধ্যে রয়েছে ত্রুটিপূর্ণ JSON অথবা স্ট্রিং ভ্যালুর জন্য ''' এর পরিবর্তে null ব্যবহার করা।
  • 403 Forbidden - টোকেন রিফ্রেশ করার সময় একটি ত্রুটির কারণে সার্ভার প্রদত্ত agentUserId জন্য অনুরোধটি প্রক্রিয়া করতে পারেনি। নিশ্চিত করুন যে আপনার OAuth এন্ডপয়েন্ট টোকেন রিফ্রেশ অনুরোধে সঠিকভাবে সাড়া দিচ্ছে এবং ব্যবহারকারীর অ্যাকাউন্ট লিঙ্কিং স্ট্যাটাস পরীক্ষা করুন।
  • 404 Not Found - অনুরোধ করা রিসোর্সটি খুঁজে পাওয়া যায়নি, তবে ভবিষ্যতে এটি উপলব্ধ হতে পারে। সাধারণত, এর মানে হলো ব্যবহারকারীর অ্যাকাউন্টটি গুগলের সাথে লিঙ্ক করা নেই অথবা আমরা একটি অবৈধ agentUserId পেয়েছি। নিশ্চিত করুন যে agentUserId টি আপনার SYNC রেসপন্সে দেওয়া মানের সাথে মেলে এবং আপনি DISCONNECT ইন্টেন্টগুলো সঠিকভাবে হ্যান্ডেল করছেন।
  • 429 Too Many Requests - প্রদত্ত agentUserId জন্য একযোগে সর্বোচ্চ সংখ্যক সিঙ্ক অনুরোধ অতিক্রম করা হয়েছে। async ফ্ল্যাগটি true সেট করা না থাকলে, একজন কলার একযোগে শুধুমাত্র একটি সিঙ্ক অনুরোধ জারি করতে পারে।