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

सिंक करने का अनुरोध करें

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

सिंक करने का अनुरोध करने पर, Google के किसी भी उपयोगकर्ता के लिए, किसी अनुरोध को पूरा करने के लिए, SYNC का अनुरोध ट्रिगर होता है. ऐसा उन डिवाइसों के लिए होता है जिन पर agentUserId से जुड़े उपयोगकर्ता तय किए गए हों, जिन्हें आपने सिंक करने के मूल अनुरोध में भेजा था. इससे, आपको अपने उपयोगकर्ताओं को अलग करने और उन्हें फिर से जोड़े बिना, उनके डिवाइस को अपडेट करने की सुविधा मिलती है. इस आइडेंटिफ़ायर से जुड़े सभी उपयोगकर्ताओं को एक SYNC अनुरोध मिलेगा.

आपको SYNC अनुरोध ट्रिगर करना होगा:

  • अगर उपयोगकर्ता कोई नया डिवाइस जोड़ता है.
  • अगर उपयोगकर्ता किसी मौजूदा डिवाइस को हटाता है.
  • अगर उपयोगकर्ता किसी मौजूदा डिवाइस का नाम बदलता है, तो:
  • अगर किसी नए तरह का डिवाइस जोड़ा जाता है, तो डिवाइस की खासियत या नई डिवाइस सुविधा जोड़ी जाती है.

शुरू करना

अनुरोध सिंक करें लागू करने के लिए, इन चरणों का पालन करें:

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

  1. Google Cloud Console, go to the HomeGraph API page. में

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

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

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

ध्यान दें: यह पक्का करें कि यह तरीका अपनाने पर, सही GCP प्रोजेक्ट इस्तेमाल किया जाए. यह प्रोजेक्ट, आपके smart home प्रोजेक्ट आईडी से मेल खाता है.
  1. Google Cloud Console में, सेवा खाता बनाएं पेज पर जाएं.

    सेवा खाता बनाने वाले मुख्य पेज पर जाएं
  2. सेवा खाते की सूची में से, नया सेवा खाता चुनें.
  3. सेवा खाते का नाम फ़ील्ड में, कोई नाम डालें.
  4. सेवा खाता आईडी फ़ील्ड में, एक आईडी डालें.
  5. भूमिका सूची से, सेवा खाते > सेवा खाता टोकन क्रिएटर चुनें.

  6. कुंजी टाइप के लिए, JSON विकल्प चुनें.

  7. बनाएं पर क्लिक करें. एक JSON फ़ाइल, जिसमें आपके कंप्यूटर पर डाउनलोड किए गए मुख्य बटन मौजूद होते हैं.

एपीआई को कॉल करें

HTTP

Home ग्राफ़ एपीआई, एचटीटीपी एंडपॉइंट उपलब्ध कराता है

  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. {
      "agentUserId": "user-123"
    }
    
  6. अनुरोध सिंक करने वाले JSON कोड और एचटीटीपी POST अनुरोध के टोकन को 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:requestSync"
    

gRPC

Home ग्राफ़ एपीआई, gRPC एंडपॉइंट उपलब्ध कराता है

  1. होम ग्राफ़ एपीआई के लिए, प्रोटोकॉल बफ़र की सेवा की परिभाषा पाएं.
  2. इस्तेमाल की जा सकने वाली भाषाओं में से किसी एक के लिए, क्लाइंट स्टब जनरेट करने के लिए, जीआरपीसी डेवलपर के दस्तावेज़ फ़ॉलो करें.
  3. RequestSync तरीके को कॉल करें.

Node.js

Google API Node.js क्लाइंट, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराता है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, google.homegraph की सेवा शुरू करें.
  2. requestSync वाले तरीके को RequestSyncDeviceRequest के साथ कॉल करें. इससे, खाली RequestSyncDeviceResponse के साथ Promise दिखता है.
const homegraphClient = homegraph({
  version: 'v1',
  auth: new GoogleAuth({
    scopes: 'https://www.googleapis.com/auth/homegraph'
  })
});

const res = await homegraphClient.devices.requestSync({
  requestBody: {
    agentUserId: 'PLACEHOLDER-USER-ID',
    async: false
  }
});
    

Java

Java के लिए HomeGraph एपीआई क्लाइंट लाइब्रेरी, होम ग्राफ़ एपीआई के लिए बाइंडिंग उपलब्ध कराती है.

  1. ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल का इस्तेमाल करके, HomeGraphApiService को शुरू करें.
  2. requestSync वाले तरीके को RequestSyncDevicesRequest के साथ कॉल करें. इससे खाली 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();

// Request sync.
RequestSyncDevicesRequest request =
    new RequestSyncDevicesRequest().setAgentUserId("PLACEHOLDER-USER-ID").setAsync(false);
homegraphService.devices().requestSync(request);
    

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

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

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