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

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