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

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

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

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

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

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

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

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

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

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