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

বিজ্ঞপ্তিগুলি আপনার 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 ​​ডিভাইস কমান্ড কার্যকর করার পরে সমাপ্তির স্থিতি এবং অবস্থা পরিবর্তন হয়। উদাহরণস্বরূপ: "আপনার নেটওয়ার্ক গতি পরীক্ষা সম্পন্ন হয়েছে। অফিস রাউটারে ডাউনলোডের গতি বর্তমানে 80.2 Kbps, এবং আপলোডের গতি 9.3 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 ডিভাইসের জন্য অ্যাপে, আপনি ঐচ্ছিকভাবে ব্যবহারকারীদের ডিভাইস থেকে স্পষ্টভাবে বিজ্ঞপ্তি টগল করার ক্ষমতাও যোগ করতে পারেন, উদাহরণস্বরূপ, আপনার অ্যাপ সেটিংস থেকে।

ডিভাইস ডেটা আপডেট করার জন্য একটি অনুরোধ SYNC কল করে Google-কে জানান যে আপনার ডিভাইসের জন্য বিজ্ঞপ্তিগুলি সক্ষম করা আছে। ব্যবহারকারীরা যখনই আপনার অ্যাপে এই সেটিং পরিবর্তন করবেন তখন আপনার এই ধরণের একটি SYNC অনুরোধ পাঠানো উচিত।

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

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

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

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

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

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

গুগল হোমগ্রাফ এপিআই সক্ষম করুন

  1. Google Cloud Console , হোমগ্রাফ এপিআই পৃষ্ঠায় যান।

    হোমগ্রাফ এপিআই পৃষ্ঠায় যান।
  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. পরিষেবা অ্যাকাউন্টের তালিকা থেকে আপনার তৈরি করা পরিষেবা অ্যাকাউন্টটি নির্বাচন করুন এবং অ্যাকশন মেনু থেকে Manage keys নির্বাচন করুন।

  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 ফাইলটি ব্যবহার করে একটি 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 অনুরোধের টোকেনটি Google Home Graph এন্ডপয়েন্টে Report State এবং Notification 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 এপিআই একটি জিআরপিসি এন্ডপয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবার সংজ্ঞা পান।
  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 ব্যবহার করে শুধুমাত্র সেই ডিভাইসেই বিজ্ঞপ্তি আউটপুট করে যেটির সাথে ব্যবহারকারী মূলত ইন্টারঅ্যাক্ট করছিলেন, এবং সমস্ত ব্যবহারকারীর ডিভাইসে সম্প্রচারিত হয় না।

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

HTTP সম্পর্কে

Home Graph API একটি 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 অনুরোধের টোকেনটি Google Home Graph এন্ডপয়েন্টে Report State এবং Notification 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 এপিআই একটি জিআরপিসি এন্ডপয়েন্ট প্রদান করে

  1. Home Graph API-এর জন্য প্রোটোকল বাফার পরিষেবার সংজ্ঞা পান।
  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 বিজ্ঞপ্তি কাঠামোর নাম, যেমন "অবজেক্ট ডিটেকশন"।
status বিজ্ঞপ্তির অবস্থা নির্দেশ করে।

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

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

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

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