स्मार्ट होम ऐक्शन बनाने का तरीका सीखने के लिए, Google Home डेवलपर सेंटर में आपका स्वागत है. ध्यान दें: आप Actions कंसोल में कार्रवाइयां बनाना जारी रखेंगे.

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
को अगर

Report State एक अहम सुविधा है. इसकी मदद से, Home उपयोगकर्ता के डिवाइस के स्टेटस की जानकारी, Google Home Graph rather than waiting for a QUERY intent. को फिर से दी जाती है

Report State, Google को उपयोगकर्ता के डिवाइसों की स्थिति की जानकारी देता है. इसके लिए, agentUserId से जुड़े खास डिवाइस की जानकारी दी जाती है. इसे मूल SYNC अनुरोध में भेजा जाता है. जब Google Assistant wants to take an action that requires understanding the current state of a device, it can simply look up the state information in the Home Graph instead of issuing a QUERY intent to various third-party clouds prior to issuing the EXECUTE intent.

Report State के बिना, किसी लिविंग रूम में कई कंपनियों की लाइटों का पता लगाने के लिए, Ok Google, मेरे लिविंग रूम की रोशनी बढ़ाओ निर्देश के लिए, एक से ज़्यादा क्लाउड पर भेजे गए QUERY 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, go to the HomeGraph API page. में

    HomeGraph एपीआई पेज पर जाएं
  2. अपने smart home project ID. से मेल खाने वाला प्रोजेक्ट चुनें
  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 के साथ-साथ, अपने एचटीटीपी POST अनुरोध के टोकन को जोड़ें. यहां एक उदाहरण के तौर पर 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. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
  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

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

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

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

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

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

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

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