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

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

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

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

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

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

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

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

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

विशेषता इवेंट
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 डिवाइस निर्देश के चलने के बाद, पूरा होने की स्थिति और स्थिति बदल जाएगी. उदाहरण के लिए: " वैक्यूम क्लीनर चालू हो गया था."

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

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

अपनी 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 और 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. कुंजी टाइप के लिए, JSON विकल्प चुनें.

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

सूचना भेजें

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

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

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

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

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

HTTP

Home Graph एपीआई, एचटीटीपी एंडपॉइंट देता है

  1. JSON Web Token (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. अपने एचटीटीपी पोस्ट अनुरोध में Report State और सूचना JSON और टोकन को Google Home ग्राफ़ के एंडपॉइंट से जोड़ें. यहां एक उदाहरण में बताया गया है कि टेस्ट के तौर पर, 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. reportStateAndNotification मेथड को ReportStateAndNotificationRequest का इस्तेमाल करके कॉल करें. यह 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 का इस्तेमाल सिर्फ़ उस डिवाइस पर सूचना दिखाने के लिए करता है जिसके साथ उपयोगकर्ता असल में इंटरैक्ट कर रहा था. इसे सभी डिवाइसों पर ब्रॉडकास्ट नहीं किया जाता.

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

HTTP

Home Graph एपीआई, एचटीटीपी एंडपॉइंट देता है

  1. JSON Web Token (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. अपने एचटीटीपी पोस्ट अनुरोध में Report State और सूचना JSON और टोकन को Google Home ग्राफ़ के एंडपॉइंट से जोड़ें. यहां एक उदाहरण में बताया गया है कि टेस्ट के तौर पर, 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. reportStateAndNotification मेथड को ReportStateAndNotificationRequest का इस्तेमाल करके कॉल करें. यह 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 सूचना के स्ट्रक्चर का नाम, जैसे कि "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 फ़ील्ड में लक्षण की खास स्थितियां भी शामिल हो सकती हैं. उदाहरण के लिए, OBJECT_DETECTION_DETECTION_TIMESTAMP_MISSING.