কীভাবে স্মার্ট হোম অ্যাকশন তৈরি করতে হয় তা শেখার নতুন গন্তব্য Google হোম ডেভেলপার সেন্টারে স্বাগতম। দ্রষ্টব্য: আপনি অ্যাকশন কনসোলে নির্মাণ কাজ চালিয়ে যাবেন।

অনুরোধ সিঙ্ক

সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।

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

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

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

এবার শুরু করা যাক

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

Google HomeGraph API সক্ষম করুন

  1. Google ক্লাউড প্ল্যাটফর্ম কনসোলে, HomeGraph API পৃষ্ঠাতে যান।

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

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

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

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

    পরিষেবা অ্যাকাউন্ট কী পৃষ্ঠায় যান
  2. পরিষেবা অ্যাকাউন্ট তালিকা থেকে, নতুন পরিষেবা অ্যাকাউন্ট নির্বাচন করুন।
  3. পরিষেবা অ্যাকাউন্ট নাম ক্ষেত্রে, একটি নাম লিখুন।
  4. পরিষেবা অ্যাকাউন্ট আইডি ক্ষেত্রে, একটি আইডি লিখুন।
  5. ভূমিকা তালিকা থেকে, পরিষেবা অ্যাকাউন্ট > পরিষেবা অ্যাকাউন্ট টোকেন নির্মাতা নির্বাচন করুন।

  6. কী ধরনের জন্য, JSON বিকল্পটি নির্বাচন করুন।

  7. তৈরি করুন ক্লিক করুন । একটি JSON ফাইল যা আপনার কম্পিউটারে আপনার কী ডাউনলোডগুলি ধারণ করে৷

API কল করুন

HTTP

হোম গ্রাফ 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. অনুরোধ সিঙ্ক JSON এবং আপনার HTTP POST অনুরোধের টোকেন Google Home Graph এন্ডপয়েন্টে একত্রিত করুন। একটি পরীক্ষা হিসাবে 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

হোম গ্রাফ API একটি gRPC শেষ পয়েন্ট প্রদান করে

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

Node.js

Google APIs Node.js ক্লায়েন্ট হোম গ্রাফ 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
  }
});
    

জাভা

জাভার জন্য হোমগ্রাফ API ক্লায়েন্ট লাইব্রেরি হোম গ্রাফ 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);
    

ত্রুটি প্রতিক্রিয়া

অনুরোধ সিঙ্ক কল করার সময় আপনি নিম্নলিখিত ত্রুটি প্রতিক্রিয়াগুলির মধ্যে একটি পেতে পারেন৷ এই প্রতিক্রিয়াগুলি HTTP স্ট্যাটাস কোডের আকারে আসে।

  • 400 Bad Request - অবৈধ সিনট্যাক্সের কারণে সার্ভার ক্লায়েন্টের পাঠানো অনুরোধ প্রক্রিয়া করতে অক্ষম ছিল। সাধারণ কারণগুলির মধ্যে রয়েছে বিকৃত JSON বা স্ট্রিং মানের জন্য "" এর পরিবর্তে null ব্যবহার করা।
  • 403 Forbidden - টোকেন রিফ্রেশ করার সময় একটি ত্রুটির কারণে সার্ভার প্রদত্ত agentUserId এর অনুরোধ প্রক্রিয়া করতে অক্ষম ছিল৷ নিশ্চিত করুন যে আপনার OAuth এন্ডপয়েন্ট সঠিকভাবে টোকেন অনুরোধ রিফ্রেশ করতে এবং ব্যবহারকারীর অ্যাকাউন্ট লিঙ্কিং স্ট্যাটাস চেক করে।
  • 404 Not Found - অনুরোধ করা সম্পদ খুঁজে পাওয়া যায়নি কিন্তু ভবিষ্যতে উপলব্ধ হতে পারে. সাধারণত, এর মানে হল যে ব্যবহারকারীর অ্যাকাউন্টটি Google-এর সাথে লিঙ্ক করা নেই বা আমরা একটি অবৈধ agentUserId পেয়েছি। নিশ্চিত করুন যে agentUserId আপনার SYNC প্রতিক্রিয়াতে প্রদত্ত মানের সাথে মেলে এবং আপনি সঠিকভাবে সংযোগ বিচ্ছিন্ন করার উদ্দেশ্য পরিচালনা করছেন৷
  • 429 Too Many Requests - প্রদত্ত agentUserId এর জন্য সমসাময়িক সিঙ্ক অনুরোধের সর্বাধিক সংখ্যা অতিক্রম করা হয়েছে। async ফ্ল্যাগটি সত্য হিসাবে সেট করা না থাকলে একজন কলার শুধুমাত্র একটি সমসাময়িক সিঙ্ক অনুরোধ জারি করতে পারে।