स्मार्ट होम ऐक्शन बनाने का तरीका सीखने के लिए, 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 इंटेंट को हल करना ज़रूरी है. यह तरीका, पहले रिपोर्ट किए गए डेटा के आधार पर, मौजूदा चमक की वैल्यू नहीं दिखाता. बेहतरीन उपयोगकर्ता अनुभव के लिए, 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 एक HTTP एंडपॉइंट देता है

  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सिंक रिस्पॉन्स में दी गई वैल्यू से मेल खाता हो. साथ ही, आप इंटेंट के मुताबिक डिसकनेक्ट कर रहे हों.