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

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

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 को कॉल करते समय, दिए गए Trait के लिए पूरा डेटा देना न भूलें. Home Graph हर एट्रिब्यूट के आधार पर अपडेट बताता है. साथ ही, जब Report State कॉल किया जाता है, तो उस एट्रिब्यूट के लिए पूरा डेटा ओवरराइट हो जाता है. उदाहरण के लिए, अगर आपको StartStop trait की स्थिति की जानकारी देनी है, तो पेलोड में isRunning और isPaused, दोनों के लिए वैल्यू शामिल होनी चाहिए.

शुरू करें

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

Google HomeGraph एपीआई को चालू करें

  1. Google Cloud Console में, HomeGraph एपीआई पेज पर जाएं.

    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 ग्राफ़ के एंडपॉइंट में, रिपोर्ट की स्थिति और सूचना 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. होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र सेवा की परिभाषा जानें.
  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. reportStateAndNotification वाले तरीके को ReportStateAndNotificationRequest से कॉल करें. यह 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 - अमान्य सिंटैक्स की वजह से सर्वर, क्लाइंट के भेजे गए अनुरोध को प्रोसेस नहीं कर सका. इसकी सामान्य वजहों में, गलत JSON या किसी स्ट्रिंग की वैल्यू के लिए "" के बजाय, null का इस्तेमाल करना शामिल है.
  • 404 Not Found - अनुरोध किया गया संसाधन नहीं मिला, लेकिन आने वाले समय में वह उपलब्ध हो सकता है. आम तौर पर, इसका मतलब यह है कि हम अनुरोध किया गया डिवाइस नहीं ढूंढ पा रहे हैं. इसका मतलब यह भी हो सकता है कि उपयोगकर्ता खाता Google से लिंक नहीं है या हमें अमान्य agentUserId मिला है. पक्का करें कि agentUserId, आपके सिंक जवाब में दी गई वैल्यू से मेल खाता हो. साथ ही, डिसकनेक्ट इंटेंट को सही तरीके से मैनेज किया जा रहा हो.