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

सूचनाओं की मदद से, 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 केबीपीएस है और अपलोड करने की रफ़्तार 9.3 केबीपीएस है."
OpenClose action.devices.commands.OpenClose डिवाइस कमांड के लागू होने के बाद, पूरा होने का स्टेटस और स्थिति में बदलाव. उदाहरण के लिए: "सामने का दरवाज़ा खुल गया है" या "सामने का दरवाज़ा नहीं खोला जा सका."

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

क्लाउड-टू-क्लाउड इंटिग्रेशन के लिए सूचनाएं बनाना

इन चरणों में, अपने Cloud-to-cloud इंटिग्रेशन में सूचनाएं जोड़ें:

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

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

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

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

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

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

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

यहां दिए गए स्निपेट में, SYNC रिस्पॉन्स सेट करने का तरीका बताया गया है:

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

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

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

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 एपीआई का इस्तेमाल करके, सूचना पाने का अनुरोध करें. आपके JSON अनुरोध में eventId शामिल होना चाहिए. यह एक यूनीक आईडी है, जिसे आपका प्लैटफ़ॉर्म उस इवेंट के लिए जनरेट करता है जिससे सूचना ट्रिगर होती है. eventId एक रैंडम आईडी होना चाहिए. साथ ही, सूचना भेजने का अनुरोध करते समय, यह आईडी हर बार अलग होना चाहिए.

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

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

बिन मांगे सूचना भेजने के लिए पेलोड भेजना

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

HTTP

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

  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. Google Home Graph एंडपॉइंट पर एचटीटीपी पोस्ट अनुरोध में, 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 APIs Node.js Client, 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 एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  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 फ़ाइल का इस्तेमाल करके, 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. Google Home Graph एंडपॉइंट पर एचटीटीपी पोस्ट अनुरोध में, 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 APIs Node.js Client, 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 एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  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.