स्मार्ट होम ऐक्शन बनाने का तरीका जानने की नई जगह, Google Home डेवलपर सेंटर में आपका स्वागत है. ध्यान दें: Actions कंसोल में कार्रवाइयां बनाना जारी रहेगा.

स्मार्ट होम ऐक्शन से जुड़ी सूचनाएं

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

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

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

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

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

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

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

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

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

यहां दी गई विशेषताएं, फ़ॉलो-अप में दिए गए जवाबों के साथ काम करती हैं:

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

हर तरह के डिवाइस पर, लागू होने वाली विशेषताओं के लिए सूचनाएं पाने की सुविधा काम करती है.

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

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

  1. अगर आपके smart home डिवाइस में मौजूद ऐप्लिकेशन से सूचनाएं पाने की सुविधा चालू है, तो Google को इसकी जानकारी दें. अगर उपयोगकर्ता आपके ऐप्लिकेशन में सूचनाएं पाने की सुविधा चालू या बंद करते हैं, तो डिवाइस में हुए बदलाव के बारे में 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 और नोटिफ़िकेशन एपीआई कॉल की मदद से, Google Home Graph पर सूचना पेलोड भेजता है.

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

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

    HomeGraph एपीआई पेज पर जाएं
  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 ऑब्जेक्ट में, डिवाइस की विशेषता के हिसाब से अलग-अलग फ़ील्ड शामिल हो सकते हैं.

Home Graph

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

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

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

HTTP

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

  1. JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
  2. oauth2l का इस्तेमाल करके, OAuth 2.0 ऐक्सेस टोकन पाने के लिए, https://www.googleapis.com/auth/homegraph का इस्तेमाल करें:
  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 ग्राफ़ एंडपॉइंट पर, अपने एचटीटीपी 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 एपीआई 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. 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"
          }
        }]
      }]
    }
  }]
};

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

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

HTTP

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

  1. JSON वेब टोकन (JWT) बनाने के लिए, डाउनलोड किए गए सेवा खाते की JSON फ़ाइल का इस्तेमाल करें. ज़्यादा जानकारी के लिए, सेवा खाते का इस्तेमाल करके पुष्टि करना देखें.
  2. oauth2l का इस्तेमाल करके, OAuth 2.0 ऐक्सेस टोकन पाने के लिए, https://www.googleapis.com/auth/homegraph का इस्तेमाल करें:
  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 ग्राफ़ एंडपॉइंट पर, अपने एचटीटीपी 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 एपीआई, 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. 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.