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

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

सूचनाएं मिलने पर smart home Action to use Google Assistant to communicate with users about important device-related events or changes. You can implement notifications to alert users to timely device events, for example when someone is at the door, or to report on a requested device state change, such as when a door lock bolt has been successfully engaged or has jammed.

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

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

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

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

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

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

नीचे दी गई जानकारी अपने-आप मिलने वाली सूचनाओं के साथ काम करती है:

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

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

विशेषता इवेंट
आर्म्सड्रम action.devices.commands.ArmDisarm डिवाइस निर्देश लागू होने के बाद, पूरा होने की स्थिति और स्थिति में बदलाव होगा. उदाहरण के लिए: "सुरक्षा सिस्टम चालू कर दिया गया है."
LockLock 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 API. If the device state changed, you can send both a state and notification payload together in your Report State and Notification call. पर कॉल करके सूचना पाने का अनुरोध भेजें

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

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

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

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

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

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

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

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

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

Assistant पर सूचनाएं ट्रिगर करने के लिए, आपकी कार्रवाई Google Home Graph via a Report State and Notification API call. को एक सूचना पेलोड भेजती है

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

  1. Google Cloud Console, go to the HomeGraph API page. में

    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 API का इस्तेमाल करके, सूचना के अनुरोध के लिए कॉल करें. आपके 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 और नोटिफ़िकेशन JSON के साथ-साथ, अपने एचटीटीपी POST के अनुरोध वाले टोकन को जोड़ें. यहां एक उदाहरण के तौर पर 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. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
  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 और नोटिफ़िकेशन JSON के साथ-साथ, अपने एचटीटीपी POST के अनुरोध वाले टोकन को जोड़ें. यहां एक उदाहरण के तौर पर 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. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
  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);
    

लॉग इन हो रहा है

सूचनाएं, इवेंट लॉग करने की सुविधा के साथ काम करती हैं, जैसा कि Cloud Logging से इवेंट लॉग ऐक्सेस करना में बताया गया है. इन लॉग का इस्तेमाल आपके Action में सूचनाओं की क्वालिटी जांचने और उसे बनाए रखने के लिए किया जाता है.

नीचे एक 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).