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

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

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

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

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

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 Platform Console में, HomeGraph एपीआई पेज पर जाएं.

    HomeGraph एपीआई पेज पर जाएं
  2. वह प्रोजेक्ट चुनें जो आपके smart home प्रोजेक्ट आईडी से मेल खाता हो.
  3. चालू करें पर क्लिक करें.

सेवा खाता कुंजी बनाएं

GCP Console से सेवा खाता कुंजी जनरेट करने के लिए, इन निर्देशों का पालन करें:

ध्यान दें: यह पक्का करें कि यह तरीका अपनाने पर, सही GCP प्रोजेक्ट इस्तेमाल किया जाए. यह प्रोजेक्ट, आपके smart home प्रोजेक्ट आईडी से मेल खाता है.
  1. GCP 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 की जांच करना ज़रूरी है.

ज़रूरी शर्तें

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