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

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

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

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

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

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

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

ডিভাইস ইভেন্ট ঘটলে, আপনার ফুলফিলমেন্ট Google-এ একটি বিজ্ঞপ্তি পাঠানোর অনুরোধ করে। আপনার Cloud-to-cloud ইন্টিগ্রেশন যেসব ডিভাইস ট্রেট সাপোর্ট করে, তা নির্ধারণ করে যে কোন ধরনের বিজ্ঞপ্তি ইভেন্ট উপলভ্য এবং সেইসব বিজ্ঞপ্তিতে আপনি কোন ডেটা যোগ করতে পারবেন।

নিম্নলিখিত বৈশিষ্ট্য প্রোঅ্যাক্টিভ বিজ্ঞপ্তি পাওয়ার ক্ষেত্রে কাজ করে:

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

নিম্নলিখিত trait ফলো-আপ উত্তরকে সমর্থন করে:

বৈশিষ্ট্য ইভেন্ট
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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

  1. google.homegraph পরিষেবা অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল ব্যবহার করে ইনিশিয়ালাইজ করুন।
  2. reportStateAndNotification মেথডকে ReportStateAndNotificationRequest-এর সাথে কল করুন। এটি 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 ক্লায়েন্ট Home Graph API-এর জন্য বাইন্ডিং প্রদান করে।

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