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

आपको मेरी यह बात गाँठ बाँध लेनी चाहिए कि आप क्रिएटर हैं, इसलिए आप एक आर्टिस्ट हैं और आर्टिस्ट को इंस्पायर्ड होना चाहिए.

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

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

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 एपीआई चालू करें

  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 फ़ाइल जिसमें आपके कंप्यूटर पर की डाउनलोड की गई फ़ाइलें होती हैं.

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

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

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 अनुरोध बनाएं. रिपोर्ट की स्थिति और सूचना के लिए JSON अनुरोध का एक उदाहरण यहां दिया गया है:
  5. {
      "requestId": "123ABC",
      "agentUserId": "user-123",
      "payload": {
        "devices": {
          "states": {
            "light-123": {
              "on": true
            }
          }
        }
      }
    }
    
  6. रिपोर्ट की स्थिति और सूचना JSON और अपने एचटीटीपी POST अनुरोध में मौजूद टोकन को 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. होम ग्राफ़ एपीआई के लिए प्रोटोकॉल बफ़र सेवा की परिभाषा पाएं.
  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',
    requestId: 'PLACEHOLDER-REQUEST-ID',
    payload: {
      devices: {
        states: {
          "PLACEHOLDER-DEVICE-ID": {
            on: true
          }
        }
      }
    }
  }
});
    

Java

Java के लिए HomeGraph एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  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

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

  • अपने खाते की मुख्य फ़ाइल चुनें
  • अपना एजेंट उपयोगकर्ता आईडी जोड़ें

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

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

जवाब मिलने में गड़बड़ी हुई

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

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