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

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

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

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 वेब बनाने के लिए, सेवा खाते की डाउनलोड की गई JSON फ़ाइल का इस्तेमाल करें टोकन (JWT). ज़्यादा जानकारी के लिए, यह देखें सेवा खाते का इस्तेमाल करके पुष्टि करना.
  2. एक OAuth 2.0 ऐक्सेस टोकन पाएं. https://www.googleapis.com/auth/homegraph दायरा इसका इस्तेमाल कर रहा है oauth2l:
  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 डैशबोर्ड पर क्लिक करें. नया वर्शन डाउनलोड करने के बाद, YouTube Studio के 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 करें और आप ठीक हैं डिसकनेक्ट इंटेंट को मैनेज करना.