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

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

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

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

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

Assistant স্মার্ট স্পিকার ও স্মার্ট ডিসপ্লেতে ঘোষণা হিসেবে ব্যবহারকারীদের এইসব বিজ্ঞপ্তি প্রদান করে। অতিসক্রিয় বিজ্ঞপ্তি ডিফল্ট হিসেবে বন্ধ করা থাকে। ব্যবহারকারীরা Google Home app (GHA) থেকে সব অতিসক্রিয় বিজ্ঞপ্তি চালু বা বন্ধ করতে পারবেন।

যেসব ইভেন্টের জন্য বিজ্ঞপ্তি পাঠানো হয়

ডিভাইস ইভেন্ট ঘটলে, আপনার ফুলফিলমেন্ট Google-এর কাছে বিজ্ঞপ্তি পাঠানোর অনুরোধ করে। আপনার 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 এবং বিজ্ঞপ্তি কলের মাধ্যমে স্ট্যাটাস ও বিজ্ঞপ্তি পে-লোড একসাথে পাঠাতে পারবেন।

নিম্নলিখিত বিভাগগুলি এইসব ধাপ আরও বিস্তারিতভাবে কভার করে।

আপনার অ্যাপে বিজ্ঞপ্তি চালু করা আছে কিনা তা উল্লেখ করুন

ব্যবহারকারীরা GHA-এ এই ফিচার চালু করে অতিসক্রিয় বিজ্ঞপ্তি পেতে চান কিনা তা বেছে নিতে পারেন। আপনার smart home ডিভাইসের অ্যাপে, আপনি চাইলে ব্যবহারকারীদের জন্য ডিভাইস থেকে বিজ্ঞপ্তি স্পষ্টভাবে টগল করার ক্ষমতা যোগ করতে পারেন, যেমন, আপনার অ্যাপ সেটিংস থেকে।

আপনার ডিভাইসে বিজ্ঞপ্তি চালু আছে কিনা তা Google-কে জানাতে, সিঙ্ক করার অনুরোধ কল করুন যাতে ডিভাইসের ডেটা আপডেট করা যায়। ব্যবহারকারী আপনার অ্যাপে এই সেটিং পরিবর্তন করলে, আপনাকে এই ধরনের SYNC অনুরোধ পাঠাতে হবে।

আপনার SYNC উত্তরে, এইসব আপডেটের মধ্যে একটি পাঠান:

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

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

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

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

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

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 সহায়তা সাইটে পরিষেবা অ্যাকাউন্টের 'কী' তৈরি ও মুছে ফেলা দেখুন।

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

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

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

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

প্রোঅ্যাক্টিভ বিজ্ঞপ্তি পেলোড পাঠান

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 অনুরোধ তৈরি করুন। 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. Google Home Graph এন্ডপয়েন্টে আপনার 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"
    

gRPC

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

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

Node.js

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

  1. অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. ReportStateAndNotificationRequest-এর সাথে reportStateAndNotification পদ্ধতি কল করুন। এটি Promise রিটার্ন করে ReportStateAndNotificationResponse-এর সাথে।
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
              }
            }
          }
        }
      }
    }
  }
});
    

Java

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

  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 অবশ্যই পাঁচ মিনিটের মধ্যে ব্যবহার করতে হবে।

নিচের স্নিপেটে EXECUTE অনুরোধের পেলোডের উদাহরণ দেখানো হয়েছে যেখানে followUpToken ফিল্ড রয়েছে।

{
  "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"
          }
        }]
      }]
    }
  }]
};

Google followUpToken ব্যবহার করে শুধুমাত্র সেই ডিভাইসে বিজ্ঞপ্তি দেখায় যেটির সাথে ব্যবহারকারী ইন্টার‍্যাক্ট করছিলেন এবং ব্যবহারকারীর সব ডিভাইসে ব্রডকাস্ট করে না।

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 অনুরোধ তৈরি করুন। 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. Google Home Graph এন্ডপয়েন্টে আপনার 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"
    

gRPC

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

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

Node.js

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

  1. অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে google.homegraph পরিষেবা শুরু করুন।
  2. ReportStateAndNotificationRequest-এর সাথে reportStateAndNotification পদ্ধতি কল করুন। এটি Promise ফিরিয়ে দেয়, যার সাথে ReportStateAndNotificationResponse থাকে।
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,
              }
            }
          }
        }
      }
    }
  }
});
    

Java

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

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

লগিং

Cloud-to-cloud-এর জন্য Cloud logging-এ যেমন উল্লেখ করা আছে, বিজ্ঞপ্তি ইভেন্ট লগিংকে সাপোর্ট করে। আপনার অ্যাকশনের মধ্যে বিজ্ঞপ্তির কোয়ালিটি পরীক্ষা ও বজায় রাখার জন্য এইসব লগ উপযোগী।

notificationLog এন্ট্রির স্কিমা নিচে দেওয়া হল:

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

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

স্ট্যাটাসের উদাহরণের মধ্যে রয়েছে:

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

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