স্মার্ট হোম অ্যাকশনের জন্য বিজ্ঞপ্তি

নোটিফিকেশন আপনার Cloud-to-cloud ইন্টিগ্রেশনকে Google Assistant ব্যবহার করে ডিভাইস-সম্পর্কিত গুরুত্বপূর্ণ ঘটনা বা পরিবর্তন সম্পর্কে ব্যবহারকারীদের সাথে যোগাযোগ করতে সাহায্য করে। আপনি সময়োপযোগী ডিভাইস ইভেন্ট সম্পর্কে ব্যবহারকারীদের সতর্ক করতে নোটিফিকেশন প্রয়োগ করতে পারেন, যেমন—যখন কেউ দরজায় আসে, অথবা ডিভাইসের অনুরোধ করা অবস্থার পরিবর্তন সম্পর্কে জানাতে পারেন, যেমন—যখন দরজার লকের খিল সফলভাবে লাগানো হয় বা আটকে যায়।

আপনার Cloud-to-cloud ইন্টিগ্রেশন ব্যবহারকারীদের কাছে নিম্নলিখিত ধরনের নোটিফিকেশন পাঠাতে পারে:

  • সক্রিয় বিজ্ঞপ্তি : ব্যবহারকারীর ডিভাইসে কোনো পূর্ববর্তী অনুরোধ ছাড়াই, যেমন ডোরবেল বাজার মতো, smart home ডিভাইসের কোনো ঘটনা সম্পর্কে ব্যবহারকারীকে সতর্ক করে।

  • ফলো-আপ প্রতিক্রিয়া : একটি ডিভাইস কমান্ড অনুরোধ সফল হয়েছে নাকি ব্যর্থ হয়েছে তার একটি নিশ্চিতকরণ, উদাহরণস্বরূপ, দরজা লক করার সময়। যে ডিভাইস কমান্ডগুলো সম্পন্ন হতে সময় নেয়, সেগুলোর জন্য এই অ্যালার্টগুলো ব্যবহার করুন। ফলো-আপ প্রতিক্রিয়া শুধুমাত্র তখনই সমর্থিত হয় যখন স্মার্ট স্পিকার এবং স্মার্ট ডিসপ্লে থেকে ডিভাইস কমান্ড অনুরোধ পাঠানো হয়।

Assistant এই নোটিফিকেশনগুলো স্মার্ট স্পিকার এবং স্মার্ট ডিসপ্লেতে ঘোষণা হিসেবে ব্যবহারকারীদের কাছে পৌঁছে দেয়। প্রোঅ্যাকটিভ নোটিফিকেশনগুলো ডিফল্টরূপে বন্ধ থাকে। ব্যবহারকারীরা Google Home app (GHA) থেকে সমস্ত প্রোঅ্যাকটিভ নোটিফিকেশন চালু বা বন্ধ করতে পারেন।

যে ইভেন্টগুলি বিজ্ঞপ্তি ট্রিগার করে

যখন ডিভাইসে কোনো ইভেন্ট ঘটে, তখন আপনার সিস্টেম গুগলকে একটি নোটিফিকেশন অনুরোধ পাঠায়। আপনার Cloud-to-cloud ইন্টিগ্রেশন যে ডিভাইসের বৈশিষ্ট্যগুলো সমর্থন করে, তা নির্ধারণ করে দেয় যে কী ধরনের নোটিফিকেশন ইভেন্ট পাওয়া যাবে এবং সেই নোটিফিকেশনগুলোতে আপনি কোন ডেটা অন্তর্ভুক্ত করতে পারবেন।

নিম্নলিখিত বৈশিষ্ট্যগুলি সক্রিয় বিজ্ঞপ্তি সমর্থন করে:

বৈশিষ্ট্য ইভেন্টগুলি
ObjectDetection ডিভাইস দ্বারা শনাক্ত করা বস্তু, যেমন দরজায় কোনো পরিচিত মুখ শনাক্ত হলে। উদাহরণস্বরূপ: "অ্যালিস এবং বব সামনের দরজায় আছেন।"
RunCycle ডিভাইসটি একটি চক্র সম্পন্ন করে। উদাহরণস্বরূপ: "ওয়াশিং মেশিনের চক্রটি সম্পন্ন হয়েছে।"
SensorState ডিভাইসটি একটি সমর্থিত সেন্সর অবস্থা শনাক্ত করে। উদাহরণস্বরূপ: "ধোঁয়া শনাক্তকারী যন্ত্রটি ধোঁয়া শনাক্ত করেছে।"

নিম্নলিখিত বৈশিষ্ট্যগুলি পরবর্তী প্রতিক্রিয়া সমর্থন করে:

বৈশিষ্ট্য ইভেন্টগুলি
LockUnlock action.devices.commands.LockUnlock ডিভাইস কমান্ডটি কার্যকর হওয়ার পর সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজাটি লক করা হয়েছে" অথবা "সামনের দরজাটি আটকে গেছে।"
NetworkControl action.devices.commands.TestNetworkSpeed ডিভাইস কমান্ডটি কার্যকর হওয়ার পর সমাপ্তির স্ট্যাটাস এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "আপনার নেটওয়ার্ক স্পিড টেস্ট শেষ হয়েছে। অফিস রাউটারে বর্তমান ডাউনলোড স্পিড ৮০.২ Kbps এবং আপলোড স্পিড ৯.৩ Kbps।"
OpenClose action.devices.commands.OpenClose ডিভাইস কমান্ডটি কার্যকর হওয়ার পর সমাপ্তির স্থিতি এবং অবস্থার পরিবর্তন। উদাহরণস্বরূপ: "সামনের দরজাটি খোলা হয়েছে" অথবা "সামনের দরজাটি খোলা যায়নি।"

সকল ধরনের ডিভাইস প্রযোজ্য বৈশিষ্ট্যগুলোর জন্য নোটিফিকেশন সমর্থন করে।

আপনার ক্লাউড-টু-ক্লাউড ইন্টিগ্রেশনের জন্য নোটিফিকেশন তৈরি করুন

এই পর্যায়গুলিতে আপনার Cloud-to-cloud ইন্টিগ্রেশনে নোটিফিকেশন যোগ করুন:

  1. আপনার smart home ডিভাইস অ্যাপ থেকে নোটিফিকেশন চালু করা থাকলে Google-কে জানান। ব্যবহারকারীরা আপনার অ্যাপে নোটিফিকেশন চালু বা বন্ধ করলে, ডিভাইস পরিবর্তনের বিষয়টি Google-কে জানাতে একটি SYNC রিকোয়েস্ট পাঠান।
  2. যখন কোনো প্রাসঙ্গিক ডিভাইস ইভেন্ট বা অবস্থার পরিবর্তন ঘটে যা একটি নোটিফিকেশন ট্রিগার করে, তখন Report State reportStateAndNotification API কল করে একটি নোটিফিকেশন অনুরোধ পাঠান। যদি ডিভাইসের অবস্থা পরিবর্তিত হয়ে থাকে, তাহলে আপনি আপনার Report State and Notification কলে স্টেট এবং নোটিফিকেশন পেলোড উভয়ই একসাথে পাঠাতে পারেন।

পরবর্তী বিভাগগুলিতে এই ধাপগুলি আরও বিস্তারিতভাবে আলোচনা করা হয়েছে।

আপনার অ্যাপে নোটিফিকেশন চালু আছে কিনা তা নির্দেশ করুন।

ব্যবহারকারীরা GHA তে এই ফিচারটি চালু করার মাধ্যমে প্রোঅ্যাকটিভ নোটিফিকেশন পেতে চান কিনা তা বেছে নিতে পারেন। আপনার smart home ডিভাইসের অ্যাপে, আপনি ঐচ্ছিকভাবে ব্যবহারকারীদের জন্য ডিভাইস থেকে নোটিফিকেশন স্পষ্টভাবে টগল করার সুবিধাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।

আপনার ডিভাইসের জন্য নোটিফিকেশন চালু আছে তা গুগলকে জানানোর জন্য, ডিভাইসের ডেটা আপডেট করতে একটি রিকোয়েস্ট সিঙ্ক (Request SYNC) কল করুন। যখনই ব্যবহারকারীরা আপনার অ্যাপে এই সেটিংটি পরিবর্তন করবেন, তখনই আপনার এই ধরনের একটি সিঙ্ক SYNC রিকোয়েস্ট পাঠানো উচিত।

আপনার SYNC প্রতিক্রিয়ায়, এই আপডেটগুলোর মধ্যে একটি পাঠান:

  • যদি ব্যবহারকারী আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন চালু করে থাকেন, অথবা যদি আপনি কোনো টগল অপশন না দেন, তাহলে devices.notificationSupportedByAgent প্রপার্টিটির মান true সেট করুন।
  • যদি ব্যবহারকারী আপনার ডিভাইস অ্যাপে স্পষ্টভাবে নোটিফিকেশন বন্ধ করে থাকেন, তাহলে devices.notificationSupportedByAgent প্রপার্টিটির মান false সেট করুন।

নিচের কোড স্নিপেটটিতে আপনার SYNC রেসপন্স কীভাবে সেট করতে হয় তার একটি উদাহরণ দেখানো হয়েছে:

devices: [{
   id: 'device123',
   ...
   notificationSupportedByAgent: true,
}]

Google-কে বিজ্ঞপ্তি অনুরোধ পাঠান

Assistant -এ নোটিফিকেশন চালু করতে, আপনার ফুলফিলমেন্ট একটি Report State এবং নোটিফিকেশন এপিআই কলের মাধ্যমে Google Home Graph এ একটি নোটিফিকেশন পেলোড পাঠায়।

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” অংশটি দেখুন।

বিজ্ঞপ্তি পাঠান

devices.reportStateAndNotification API ব্যবহার করে নোটিফিকেশন রিকোয়েস্ট কলটি করুন। আপনার JSON রিকোয়েস্টে অবশ্যই একটি eventId অন্তর্ভুক্ত থাকতে হবে, যা হলো নোটিফিকেশন ট্রিগারকারী ইভেন্টের জন্য আপনার প্ল্যাটফর্ম দ্বারা তৈরি একটি অনন্য আইডি। eventId একটি র‍্যান্ডম আইডি হওয়া উচিত যা প্রতিবার নোটিফিকেশন রিকোয়েস্ট পাঠানোর সময় ভিন্ন হয়।

আপনার এপিআই কলে পাঠানো notifications অবজেক্টটিতে একটি priority ভ্যালু অন্তর্ভুক্ত করুন, যা নির্ধারণ করবে নোটিফিকেশনটি কীভাবে প্রদর্শিত হবে। ডিভাইস ট্রেইটের উপর নির্ভর করে আপনার notifications অবজেক্টে বিভিন্ন ফিল্ড থাকতে পারে।

পেলোড সেট করতে এবং এপিআই কল করতে এই পথগুলোর মধ্যে যেকোনো একটি অনুসরণ করুন:

একটি সক্রিয় বিজ্ঞপ্তি পেলোড পাঠান

এপিআই কল করতে, এই ট্যাবগুলো থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph এপিআই একটি 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 রিকোয়েস্টটি তৈরি করুন। নিচে Report State এবং নোটিফিকেশনের জন্য একটি নমুনা JSON রিকোয়েস্ট দেওয়া হলো:
  5. {
      "agentUserId": "PLACEHOLDER-USER-ID",
      "eventId": "PLACEHOLDER-EVENT-ID",
      "requestId": "PLACEHOLDER-REQUEST-ID",
      "payload": {
        "devices": {
          "notifications": {
            "PLACEHOLDER-DEVICE-ID": {
              "ObjectDetection": {
                "priority": 0,
                "detectionTimestamp": 1534875126750,
                "objects": {
                  "named": [
                    "Alice"
                  ],
                  "unclassified": 2
                }
              }
            }
          }
        }
      }
    }
  6. গুগল হোম গ্রাফ এন্ডপয়েন্টে আপনার HTTP POST অনুরোধে Report State ও নোটিফিকেশন 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:reportStateAndNotification"
    

জিআরপিসি

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

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

নোড.জেএস

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

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

const res = await homegraphClient.devices.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    eventId: 'PLACEHOLDER-EVENT-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        notifications: {
          'PLACEHOLDER-DEVICE-ID': {
            ObjectDetection: {
              priority: 0,
              detectionTimestamp: 1534875126750,
              objects: {
                named: ['Alice'],
                unclassified: 2
              }
            }
          }
        }
      }
    }
  }
});
    

জাভা

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

  1. অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে HomeGraphApiService টি ইনিশিয়ালাইজ করুন।
  2. ReportStateAndNotificationRequest সহ reportStateAndNotification মেথডটি কল করুন। এটি একটি 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();

// Build device notification payload.
Map<?, ?> notifications =
    Map.of(
        "ObjectDetection",
        Map.of(
            "priority", 0,
            "detectionTimestamp", 1534875126,
            "objects", Map.of("named", List.of("Alice"), "unclassifed", 2)));

// Send notification.
ReportStateAndNotificationRequest request =
    new ReportStateAndNotificationRequest()
        .setRequestId("PLACEHOLDER-REQUEST-ID")
        .setAgentUserId("PLACEHOLDER-USER-ID")
        .setEventId("PLACEHOLDER-EVENT-ID")
        .setPayload(
            new StateAndNotificationPayload()
                .setDevices(
                    new ReportStateAndNotificationDevice()
                        .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", notifications))));
homegraphService.devices().reportStateAndNotification(request);
    
একটি ফলো-আপ প্রতিক্রিয়া পেলোড পাঠান

একটি ফলো-আপ প্রতিক্রিয়ার পেলোডে অনুরোধের স্ট্যাটাস, ইভেন্ট ব্যর্থতার জন্য ত্রুটি কোড (যদি প্রযোজ্য হয়), এবং EXECUTE ইন্টেন্ট অনুরোধের সময় প্রদত্ত বৈধ followUpToken অন্তর্ভুক্ত থাকে। followUpToken বৈধ থাকতে এবং প্রতিক্রিয়াটিকে মূল অনুরোধের সাথে সঠিকভাবে সংযুক্ত করতে অবশ্যই পাঁচ মিনিটের মধ্যে ব্যবহার করতে হবে।

নিম্নলিখিত কোড স্নিপেটে followUpToken ফিল্ড সহ একটি EXECUTE রিকোয়েস্ট পেলোডের উদাহরণ দেখানো হয়েছে।

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123",
        }],
        "execution": [{
          "command": "action.devices.commands.TestNetworkSpeed",
          "params": {
            "testDownloadSpeed": true,
            "testUploadSpeed": false,
            "followUpToken": "PLACEHOLDER"
          }
        }]
      }]
    }
  }]
};

গুগল followUpToken ব্যবহার করে ব্যবহারকারীর সমস্ত ডিভাইসে নোটিফিকেশনটি সম্প্রচার না করে, শুধুমাত্র সেই ডিভাইসেই তা পাঠায়, যেটি দিয়ে ব্যবহারকারী প্রাথমিকভাবে ইন্টারঅ্যাক্ট করছিলেন।

এপিআই কল করতে, এই ট্যাবগুলো থেকে একটি বিকল্প নির্বাচন করুন:

HTTP

Home Graph এপিআই একটি 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 রিকোয়েস্টটি তৈরি করুন। নিচে Report State এবং নোটিফিকেশনের জন্য একটি নমুনা JSON রিকোয়েস্ট দেওয়া হলো:
  5. {
      "agentUserId": "PLACEHOLDER-USER-ID",
      "eventId": "PLACEHOLDER-EVENT-ID",
      "requestId": "PLACEHOLDER-REQUEST-ID",
      "payload": {
        "devices": {
          "notifications": {
            "PLACEHOLDER-DEVICE-ID": {
              "NetworkControl": {
                "priority": 0,
                "followUpResponse": {
                  "status": "SUCCESS",
                  "followUpToken": "PLACEHOLDER",
                  "networkDownloadSpeedMbps": 23.3,
                  "networkUploadSpeedMbps": 10.2
                }
              }
            }
          }
        }
      }
    }
  6. গুগল হোম গ্রাফ এন্ডপয়েন্টে আপনার HTTP POST অনুরোধে Report State ও নোটিফিকেশন 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:reportStateAndNotification"
    

জিআরপিসি

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

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

নোড.জেএস

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

  1. অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে google.homegraph সার্ভিসটি ইনিশিয়ালাইজ করুন।
  2. ReportStateAndNotificationRequest দিয়ে reportStateAndNotification মেথডটি কল করুন। এটি ReportStateAndNotificationResponse সহ একটি Promise রিটার্ন করে।
const followUpToken = executionRequest.inputs[0].payload.commands[0].execution[0].params.followUpToken;

const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.reportStateAndNotification({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    eventId: 'PLACEHOLDER-EVENT-ID',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        notifications: {
          'PLACEHOLDER-DEVICE-ID': {
            NetworkControl: {
              priority: 0,
              followUpResponse: {
                status: 'SUCCESS',
                followUpToken,
                networkDownloadSpeedMbps: 23.3,
                networkUploadSpeedMbps: 10.2,
              }
            }
          }
        }
      }
    }
  }
});
    

জাভা

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

  1. অ্যাপ্লিকেশনের ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে HomeGraphApiService চালু করুন
  2. ReportStateAndNotificationRequest সহ reportStateAndNotification মেথডটি কল করুন। এটি একটি 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();

// Extract follow-up token.
ExecuteRequest.Inputs executeInputs = (Inputs) executeRequest.getInputs()[0];
String followUpToken =
    (String)
        executeInputs
            .getPayload()
            .getCommands()[0]
            .getExecution()[0]
            .getParams()
            .get("followUpToken");

// Build device follow-up response payload.
Map<?, ?> followUpResponse =
    Map.of(
        "NetworkControl",
        Map.of(
            "priority",
            0,
            "followUpResponse",
            Map.of(
                "status",
                "SUCCESS",
                "followUpToken",
                followUpToken,
                "networkDownloadSpeedMbps",
                23.3,
                "networkUploadSpeedMbps",
                10.2)));

// Send follow-up response.
ReportStateAndNotificationRequest request =
    new ReportStateAndNotificationRequest()
        .setRequestId("PLACEHOLDER-REQUEST-ID")
        .setAgentUserId("PLACEHOLDER-USER-ID")
        .setEventId("PLACEHOLDER-EVENT-ID")
        .setPayload(
            new StateAndNotificationPayload()
                .setDevices(
                    new ReportStateAndNotificationDevice()
                        .setNotifications(Map.of("PLACEHOLDER-DEVICE-ID", followUpResponse))));
homegraphService.devices().reportStateAndNotification(request);
    

লগিং

ক্লাউড-টু-ক্লাউড ক্লাউড লগিং- এ বর্ণিত পদ্ধতি অনুযায়ী নোটিফিকেশন ইভেন্ট লগিং সমর্থন করে। আপনার অ্যাকশনের মধ্যে নোটিফিকেশনের মান পরীক্ষা ও বজায় রাখার জন্য এই লগগুলো উপযোগী।

নিম্নলিখিতটি একটি notificationLog এন্ট্রির স্কিমা:

সম্পত্তি বর্ণনা
requestId বিজ্ঞপ্তি অনুরোধ আইডি।
structName নোটিফিকেশন স্ট্রাকচারের নাম, যেমন "ObjectDetection"।
status বিজ্ঞপ্তিটির অবস্থা নির্দেশ করে।

status ফিল্ডটিতে বিভিন্ন স্ট্যাটাস অন্তর্ভুক্ত থাকে যা নোটিফিকেশন পেলোডে ত্রুটি নির্দেশ করতে পারে। এর মধ্যে কয়েকটি শুধুমাত্র সেইসব অ্যাকশনের ক্ষেত্রেই উপলব্ধ হতে পারে যেগুলো প্রোডাকশনে চালু করা হয়নি।

উদাহরণস্বরূপ স্ট্যাটাসগুলো হলো:

অবস্থা বর্ণনা
EVENT_ID_MISSING এটি নির্দেশ করে যে প্রয়োজনীয় eventId ফিল্ডটি অনুপস্থিত।
PRIORITY_MISSING এটি নির্দেশ করে যে একটি priority ক্ষেত্র অনুপস্থিত।
NOTIFICATION_SUPPORTED_BY_AGENT_FALSE এটি নির্দেশ করে যে, SYNC এ প্রদত্ত নোটিফাইং ডিভাইসের notificationSupportedByAgent প্রপার্টিটি false।
NOTIFICATION_ENABLED_BY_USER_FALSE এটি নির্দেশ করে যে ব্যবহারকারী GHA তে নোটিফাইং ডিভাইসে নোটিফিকেশন চালু করেননি। এই স্ট্যাটাসটি শুধুমাত্র সেইসব ইন্টিগ্রেশনের জন্য উপলব্ধ যেগুলো এখনো প্রোডাকশনে লঞ্চ করা হয়নি।
NOTIFYING_DEVICE_NOT_IN_STRUCTURE এটি নির্দেশ করে যে ব্যবহারকারী নোটিফাইং ডিভাইসটিকে কোনো বাড়ি/কাঠামোর সাথে সংযুক্ত করেননি। এই স্ট্যাটাসটি শুধুমাত্র সেইসব ইন্টিগ্রেশনের ক্ষেত্রে উপলব্ধ, যেগুলো এখনো প্রোডাকশনে চালু করা হয়নি।

সকল নোটিফিকেশনের ক্ষেত্রে প্রযোজ্য এই সাধারণ স্ট্যাটাসগুলো ছাড়াও, প্রযোজ্য ক্ষেত্রে status ফিল্ডে বৈশিষ্ট্য-নির্দিষ্ট স্ট্যাটাসও অন্তর্ভুক্ত থাকতে পারে (উদাহরণস্বরূপ, OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING )।