रिपोर्ट स्थिति

Report State एक अहम सुविधा है. इसकी मदद से, Home ऐक्शन, QUERY इंटेंट के इंतज़ार करने के बजाय, उपयोगकर्ता के डिवाइस की नई स्थिति को Google Home Graph पर वापस रिपोर्ट कर सकता है.

Report State, Google को उपयोगकर्ता के डिवाइसों की स्थितियों की जानकारी देता है. साथ ही, उन डिवाइसों से जुड़े agentUserId की जानकारी भी देता है. यह जानकारी, मूल SYNC अनुरोध में भेजी जाती है. जब Google Assistant को कोई ऐसी कार्रवाई करनी हो जिसके लिए किसी डिवाइस की मौजूदा स्थिति को समझना ज़रूरी हो, तो वह EXECUTE इंटेंट जारी करने से पहले, तीसरे पक्ष के अलग-अलग क्लाउड को QUERY इंटेंट जारी करने के बजाय, Home Graph में स्थिति की जानकारी देख सकता है.

Report State के बिना, लिविंग रूम में कई कंपनियों की लाइटें होने पर, Ok Google, मेरे लिविंग रूम की लाइटें तेज़ करो कमांड के लिए, कई क्लाउड पर भेजे गए कई QUERY इंटेंट को हल करना ज़रूरी है. ऐसा करने के बजाय, पहले से दी गई जानकारी के आधार पर, रोशनी की मौजूदा वैल्यू देखी जा सकती है. बेहतर उपयोगकर्ता अनुभव के लिए, Assistant में डिवाइस की मौजूदा स्थिति होनी चाहिए. इसके लिए, उसे डिवाइस पर वापस भेजने की ज़रूरत नहीं होनी चाहिए.

किसी डिवाइस के लिए शुरुआती SYNC के बाद, प्लैटफ़ॉर्म एक QUERY इंटेंट भेजता है. यह Home Graph को पॉप्युलेट करने के लिए, डिवाइस की स्थिति इकट्ठा करता है. इसके बाद, Home Graph सिर्फ़ उस स्थिति को सेव करता है जो Report State के साथ भेजी जाती है.

Report State को कॉल करते समय, किसी खास ट्रीट के लिए पूरी स्थिति का डेटा देना न भूलें. Home Graph, हर विशेषता के हिसाब से स्थितियों को अपडेट करता है. साथ ही, Report State कॉल किए जाने पर, उस विशेषता के लिए मौजूद सारा डेटा बदल देता है. उदाहरण के लिए, अगर StartStop ट्रैट की स्थिति की रिपोर्टिंग की जा रही है, तो पेलोड में isRunning और isPaused, दोनों की वैल्यू शामिल होनी चाहिए.

अपनी प्रोफ़ाइल बनाना शुरू करें

Report State को लागू करने के लिए, यह तरीका अपनाएं:

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 फ़ाइल डाउनलोड होगी. इसमें आपकी कुंजी मौजूद होगी.

एपीआई को कॉल करें

नीचे दिए गए टैब में से कोई विकल्प चुनें:

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 अनुरोध बनाएं. यहां रिपोर्ट की स्थिति और सूचना के लिए, JSON अनुरोध का सैंपल दिया गया है:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
  6. Google Home Graph एंडपॉइंट के लिए, अपने एचटीटीपी पोस्ट अनुरोध में रिपोर्ट की स्थिति और सूचना के 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 API के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
  2. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए क्लाइंट स्टब जनरेट करने के लिए, gRPC डेवलपर दस्तावेज़ में दिया गया तरीका अपनाएं.
  3. ReportStateAndNotification तरीके को कॉल करें.

Node.js

Google APIs Node.js क्लाइंट, Home Graph API के लिए बाइंडिंग उपलब्ध कराता है.

  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',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

Java

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

  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 state payload.
  Map<?, ?> states = Map.of("on", true);

  // Report device state.
  ReportStateAndNotificationRequest request =
      new ReportStateAndNotificationRequest()
          .setRequestId("PLACEHOLDER-REQUEST-ID")
          .setAgentUserId("PLACEHOLDER-USER-ID")
          .setPayload(
              new StateAndNotificationPayload()
                  .setDevices(
                      new ReportStateAndNotificationDevice()
                          .setStates(Map.of("PLACEHOLDER-DEVICE-ID", states))));
  homegraphService.devices().reportStateAndNotification(request);
}
    

टेस्ट रिपोर्ट की स्थिति

इस टास्क के लिए सुझाए गए टूल

अपनी कार्रवाई को सर्टिफ़िकेट के लिए तैयार करने के लिए, Report State की जांच करना ज़रूरी है.

ऐसा करने के लिए, हमारा सुझाव है कि आप Home Graph व्यूअर टूल का इस्तेमाल करें. यह एक स्टैंडअलोन वेब ऐप्लिकेशन है, जिसे डाउनलोड या डिप्लॉय करने की ज़रूरत नहीं होती.

Report State डैशबोर्ड अब भी उपलब्ध है, लेकिन इसे बंद कर दिया गया है और अब यह काम नहीं करता.

रिपोर्ट स्टेट डैशबोर्ड

ज़रूरी शर्तें

अपनी कार्रवाई की जांच करने से पहले, आपको अपनी सेवा खाते की कुंजी और agentUserId की ज़रूरत पड़ेगी. अगर आपके पास पहले से ही सेवा खाते की कुंजी है और agentUserId Report State डैशबोर्ड को डिप्लॉय करें देखें.

रिपोर्ट स्टेट डैशबोर्ड को डिप्लॉय करना

अपने प्रोजेक्ट के लिए, सेवा खाते की कुंजी और एजेंट उपयोगकर्ता आईडी मिलने के बाद, Report State डैशबोर्ड से नया वर्शन डाउनलोड करें और डिप्लॉय करें. नया वर्शन डाउनलोड करने के बाद, README.MD फ़ाइल में दिए गए निर्देशों का पालन करें.

Report State डैशबोर्ड को डिप्लॉय करने के बाद, इस यूआरएल से डैशबोर्ड को ऐक्सेस करें. इसके लिए, your_project_id की जगह अपना प्रोजेक्ट आईडी डालें:

http://<your-project-id>.appspot.com

डैशबोर्ड पर, ये काम करें:

  • अपनी खाता कुंजी फ़ाइल चुनना
  • अपना agentUserId जोड़ें

इसके बाद, सूची पर क्लिक करें.

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

गड़बड़ी के जवाब

Report State को कॉल करते समय, आपको गड़बड़ी का इनमें से कोई एक जवाब मिल सकता है. ये जवाब, एचटीटीपी स्टेटस कोड के तौर पर मिलते हैं.

  • 400 Bad Request - अमान्य सिंटैक्स की वजह से, सर्वर क्लाइंट से मिले अनुरोध को प्रोसेस नहीं कर सका. आम वजहों में, गलत JSON का इस्तेमाल करना या स्ट्रिंग वैल्यू के लिए "" के बजाय null का इस्तेमाल करना शामिल है.
  • 404 Not Found - आपने जिस संसाधन के लिए अनुरोध किया था वह नहीं मिला. हालांकि, आने वाले समय में वह उपलब्ध हो सकता है. आम तौर पर, इसका मतलब है कि हमें आपका अनुरोध किया गया डिवाइस नहीं मिला. इसका यह भी मतलब हो सकता है कि उपयोगकर्ता का खाता, Google से लिंक न हो या हमें अमान्य agentUserId मिला हो. पक्का करें कि agentUserId, SYNC रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, आपने DISCONNECT इंटेंट को सही तरीके से मैनेज किया हो.