स्मार्ट होम ऐक्शन के लिए सूचनाएं

सूचनाओं की मदद से, smart home Action का इस्तेमाल Google Assistant किया जा सकता है. इससे लोगों को डिवाइस से जुड़े अहम इवेंट या बदलावों के बारे में जानकारी मिलती है. समय पर डिवाइस से जुड़ी गतिविधियों की सूचना देने के लिए, उपयोगकर्ताओं को सूचनाएं दी जा सकती हैं. उदाहरण के लिए, जब कोई व्यक्ति दरवाज़े पर हो या डिवाइस की स्थिति में बदलाव का अनुरोध किया गया हो, जैसे कि दरवाज़े का लॉक बोल्ट पूरा होने या उसके जाम होने पर.

आपकी smart home कार्रवाई, उपयोगकर्ताओं को इस तरह की सूचनाएं भेज सकती है:

  • सक्रिय सूचनाएं: इससे उपयोगकर्ता के डिवाइस पर किसी smart home डिवाइस इवेंट के बारे में सूचना मिलती है. इसके लिए, उपयोगकर्ता के डिवाइस से उसका अनुरोध नहीं किया जाता. जैसे, दरवाज़े की घंटी बजने की सूचना.

  • फ़ॉलो-अप के जवाब: इस बात की पुष्टि करना कि डिवाइस को कोई निर्देश देने का अनुरोध पूरा हुआ या नहीं. उदाहरण के लिए, दरवाज़े को लॉक करते समय. इन अलर्ट का इस्तेमाल डिवाइस के उन निर्देशों के लिए करें जिन्हें पूरा होने में समय लगता है. फ़ॉलो-अप जवाब सिर्फ़ तब काम करते हैं, जब डिवाइस को निर्देश देने के अनुरोध स्मार्ट स्पीकर और स्मार्ट डिसप्ले से भेजे जाते हैं.

Assistant, उपयोगकर्ताओं को ये सूचनाएं स्मार्ट स्पीकर और स्मार्ट डिसप्ले पर, एलान के तौर पर उपलब्ध कराता है. पहले से तैयार सूचनाएं डिफ़ॉल्ट रूप से बंद रहती हैं. उपयोगकर्ता Google Home app (GHA) की ओर से, अपने-आप मिलने वाली सभी सूचनाएं चालू या बंद कर सकते हैं.

सूचनाएं ट्रिगर करने वाले इवेंट

डिवाइस पर कोई इवेंट होने पर, आपकी सेट की गई कार्रवाई को पूरा करने के बाद, Google को इसकी सूचना देने का अनुरोध भेजा जाता है. डिवाइस की खासियत यह है कि आपकी smart home कार्रवाई से यह तय होता है कि किस तरह की सूचना से जुड़े इवेंट उपलब्ध हैं और उन सूचनाओं में कौनसा डेटा शामिल किया जा सकता है.

यहां दी गई सुविधाएं, अपने-आप मिलने वाली सूचनाओं की सुविधा देती हैं:

विशेषता इवेंट
ObjectDetection डिवाइस ने जिन चीज़ों की पहचान की है, जैसे कि दरवाज़े पर किसी चेहरे की पहचान होना. उदाहरण के लिए: "ऐलिस और बॉब सामने के दरवाज़े पर हैं."
RunCycle डिवाइस एक साइकल पूरा करता है. उदाहरण के लिए: "वॉशिंग मशीन का साइकल पूरा हो गया है."
SensorState डिवाइस काम करने वाले सेंसर की स्थिति का पता लगाता है. उदाहरण के लिए: "धुएं का पता लगाने वाले डिवाइस ने धुएं का पता लगाया है."
TemperatureControl डिवाइस, सेट किए गए तापमान तक पहुंच गया है. उदाहरण के लिए: "अवन को पहले से ही 350 डिग्री तक गर्म कर दिया गया है."
ArmDisarm सिस्टम, अलार्म के शुरू होने से पहले की स्थिति में आता है. इसके लिए, एक एंट्री काउंटडाउन शुरू होता है, जो दरवाज़ा खुले होने की वजह से ट्रिगर होता है.
CameraStream डिवाइस को किसी ऑब्जेक्ट या मोशन का पता चलने पर, कैमरे की लाइव स्ट्रीम से लिंक करें.
MotionDetection "1 जुलाई, 2020 को दोपहर 12 बजे मोशन का पता चला."

यहां दिए गए एट्रिब्यूट से फ़ॉलो-अप वाले रिस्पॉन्स मिलते हैं:

विशेषता इवेंट
ArmDisarm action.devices.commands.ArmDisarm डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव. उदाहरण के लिए: "सुरक्षा सिस्टम चालू कर दिया गया है."
LockUnlock action.devices.commands.LockUnlock डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव. उदाहरण के लिए: "सामने का दरवाज़ा बंद हो गया है" या "सामने का दरवाज़ा जाम है."
NetworkControl action.devices.commands.TestNetworkSpeed डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव. उदाहरण के लिए: "आपके नेटवर्क की स्पीड की जांच पूरी हो गई है. फ़िलहाल, ऑफ़िस के राऊटर पर डाउनलोड करने की रफ़्तार 80.2 केबीपीएस है और अपलोड करने की रफ़्तार 9.3 केबीपीएस है."
OpenClose action.devices.commands.OpenClose डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव. उदाहरण के लिए: "सामने का दरवाज़ा खुला है" या "सामने का दरवाज़ा खोला नहीं जा सका."
StartStop action.devices.commands.StartStop डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव. उदाहरण के लिए: " वैक्यूम क्लीनर चालू हो गया था."

सभी डिवाइस टाइप में, ज़रूरी traits से जुड़ी सूचनाएं काम करती हैं.

स्मार्ट होम ऐक्शन के लिए सूचनाएं बनाना

अपनी smart home कार्रवाई में सूचनाएं इन चरणों में जोड़ें:

  1. Google को बताएं कि आपके smart home डिवाइस ऐप्लिकेशन से सूचनाएं पाने की सुविधा चालू है या नहीं. अगर उपयोगकर्ता आपके ऐप्लिकेशन में सूचनाएं पाने की सुविधा चालू या बंद करते हैं, तो Google को डिवाइस में हुए बदलाव की जानकारी देने के लिए SYNC का अनुरोध करें.
  2. अगर डिवाइस पर कोई ऐसा इवेंट या स्थिति में बदलाव होता है जिसकी वजह से कोई सूचना ट्रिगर होती है, तो Report State reportStateAndNotification एपीआई को कॉल करके सूचना का अनुरोध भेजें. डिवाइस की स्थिति में बदलाव होने पर, Report State और सूचना कॉल में स्थिति और नोटिफ़िकेशन पेलोड, दोनों को एक साथ भेजा जा सकता है.

इन सेक्शन में इन चरणों के बारे में ज़्यादा जानकारी दी गई है.

बताएं कि आपके ऐप्लिकेशन में सूचनाएं पाने की सुविधा चालू है या नहीं

GHA में इस सुविधा को चालू करके, उपयोगकर्ता यह चुन सकते हैं कि उन्हें अपने-आप मिलने वाली सूचनाएं चाहिए या नहीं. अपने smart home डिवाइस के ऐप्लिकेशन में, उपयोगकर्ताओं के लिए डिवाइस की सूचनाओं को साफ़ तौर पर टॉगल करने की सुविधा भी जोड़ी जा सकती है. उदाहरण के लिए, आपके ऐप्लिकेशन की सेटिंग से.

डिवाइस डेटा अपडेट करने के लिए सिंक करने का अनुरोध करें कॉल करें और Google को बताएं कि आपके डिवाइस पर सूचनाएं पाने की सुविधा चालू है. जब भी लोग आपके ऐप्लिकेशन में इस सेटिंग को बदलें, तो आपको इस तरह का SYNC अनुरोध भेजना चाहिए.

अपने SYNC जवाब में, इनमें से कोई एक अपडेट भेजें:

  • अगर उपयोगकर्ता ने आपके डिवाइस ऐप्लिकेशन में, सूचनाएं पाने की सुविधा को चालू किया है या टॉगल करने का विकल्प नहीं दिया है, तो devices.notificationSupportedByAgent प्रॉपर्टी को true पर सेट करें.
  • अगर उपयोगकर्ता ने आपके डिवाइस ऐप्लिकेशन में, सूचनाओं को बंद कर दिया है, तो devices.notificationSupportedByAgent प्रॉपर्टी को false पर सेट करें.

नीचे दिया गया स्निपेट, सिंक का जवाब सेट करने का तरीका दिखाता है:

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

Google को सूचना के अनुरोध भेजें

Assistant पर सूचनाएं ट्रिगर करने के लिए, आपका फ़ुलफ़िलमेंट Report State और Notification API कॉल के ज़रिए, Google Home Graph को सूचना पेलोड भेजता है.

Google HomeGraph एपीआई को चालू करें

  1. Google Cloud Console में, HomeGraph एपीआई पेज पर जाएं.

    HomeGraph API पेज पर जाएं
  2. वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मेल खाता हो.
  3. चालू करें पर क्लिक करें.

सेवा खाता कुंजी बनाएं

Google Cloud Console से सेवा खाता कुंजी जनरेट करने के लिए, इन निर्देशों का पालन करें:

ध्यान दें: यह पक्का करें कि इन चरणों को पूरा करते समय, सही GCP प्रोजेक्ट का इस्तेमाल किया जा रहा हो. यह प्रोजेक्ट आपके smart home प्रोजेक्ट आईडी से मेल खाता है.
  1. Google Cloud Console में, सेवा खाता कुंजी बनाएं पेज पर जाएं.

    'सेवा खाता बनाएं' पेज पर जाएं
  2. सेवा खाते की सूची से, नया सेवा खाता चुनें.
  3. सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
  4. सेवा खाता आईडी फ़ील्ड में, कोई आईडी डालें.
  5. भूमिका की सूची में, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.

  6. कुंजी टाइप के लिए, JSON विकल्प चुनें.

  7. बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड किए गए पासकोड होते हैं.

सूचना भेजें

devices.reportStateAndNotification एपीआई का इस्तेमाल करके, सूचना का अनुरोध करें. आपके JSON अनुरोध में eventId शामिल होना चाहिए. यह एक यूनीक आईडी है, जिसे आपके प्लैटफ़ॉर्म से सूचना ट्रिगर करने वाले इवेंट के लिए जनरेट किया जाता है. eventId, एक रैंडम आईडी होना चाहिए, जो हर बार सूचना का अनुरोध भेजने पर अलग-अलग हो.

एपीआई कॉल में पास किए जाने वाले notifications ऑब्जेक्ट में, priority की वैल्यू शामिल करें. इससे तय होता है कि सूचना को कैसे प्रज़ेंट किया जाए. आपके notifications ऑब्जेक्ट में, डिवाइस की विशेषता के आधार पर अलग-अलग फ़ील्ड हो सकते हैं.

पेलोड सेट करने और एपीआई को कॉल करने के लिए, इनमें से किसी एक पाथ का पालन करें:

अपने-आप मिलने वाली सूचना पेलोड भेजें

एपीआई को कॉल करने के लिए, इनमें से किसी एक टैब से कोई विकल्प चुनें:

HTTP

Home Graph एपीआई, एक एचटीटीपी एंडपॉइंट उपलब्ध कराता है

  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 ग्राफ़ के एंडपॉइंट में, 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"
    

gRPC

Home Graph एपीआई एक gRPC एंडपॉइंट उपलब्ध कराता है

  1. Home Graph एपीआई के लिए, प्रोटोकॉल बफ़र की सेवा की परिभाषा जानें.
  2. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ का पालन करें.
  3. ReportStateAndNotification वाले तरीके को कॉल करें.

Node.js

Google API Node.js क्लाइंट 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
              }
            }
          }
        }
      }
    }
  }
});
    

Java

Java के लिए HomeGraph एपीआई क्लाइंट लाइब्रेरी, Home Graph एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, HomeGraphApiService को शुरू करें.
  2. reportStateAndNotification वाले तरीके को ReportStateAndNotificationRequest से कॉल करें. यह 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"
          }
        }]
      }]
    }
  }]
};

Google, followUpToken का इस्तेमाल सिर्फ़ उसी डिवाइस पर सूचना भेजने के लिए करता है जिस पर उपयोगकर्ता मूल रूप से इंटरैक्ट कर रहा था. यह सूचना लोगों के सभी डिवाइसों पर ब्रॉडकास्ट नहीं की जाती.

एपीआई को कॉल करने के लिए, इनमें से किसी एक टैब से कोई विकल्प चुनें:

HTTP

Home Graph एपीआई, एक एचटीटीपी एंडपॉइंट उपलब्ध कराता है

  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 ग्राफ़ के एंडपॉइंट में, 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"
    

gRPC

Home Graph एपीआई, एक gRPC एंडपॉइंट उपलब्ध कराता है

  1. Home Graph एपीआई के लिए, प्रोटोकॉल बफ़र की सेवा की परिभाषा जानें.
  2. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ का पालन करें.
  3. ReportStateAndNotification वाले तरीके को कॉल करें.

Node.js

Google API Node.js क्लाइंट 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,
              }
            }
          }
        }
      }
    }
  }
});
    

Java

Java के लिए HomeGraph एपीआई क्लाइंट लाइब्रेरी, Home Graph एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, HomeGraphApiService को शुरू करें
  2. reportStateAndNotification वाले तरीके को ReportStateAndNotificationRequest से कॉल करें. यह 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 प्रॉपर्टी 'गलत है' पर सेट है.
NOTIFICATION_ENABLED_BY_USER_FALSE इससे पता चलता है कि उपयोगकर्ता ने GHA में, सूचना देने वाले डिवाइस पर सूचनाएं पाने की सुविधा चालू नहीं की है. यह स्थिति सिर्फ़ उन कार्रवाइयों पर उपलब्ध होती है जिन्हें प्रोडक्शन के लिए लॉन्च नहीं किया गया है.
NOTIFYING_DEVICE_NOT_IN_STRUCTURE इससे पता चलता है कि उपयोगकर्ता ने सूचना देने वाला डिवाइस, होम/स्ट्रक्चर को असाइन नहीं किया है. यह स्थिति सिर्फ़ उन कार्रवाइयों पर उपलब्ध होती है जिन्हें प्रोडक्शन के लिए लॉन्च नहीं किया गया है.

सभी सूचनाओं पर लागू हो सकने वाली इन सामान्य स्थितियों के अलावा, status फ़ील्ड में trait से जुड़ी खास स्थितियां भी शामिल हो सकती हैं. ऐसा जहां भी लागू हो (जैसे, OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING).