वाहन का फ़ुलफ़िलमेंट

लोकल होम एसडीके, Google Assistant के साथ आपके स्मार्ट होम इंटिग्रेशन को बेहतर बनाता है. इसके लिए, यह स्मार्ट होम इंटेंट को रूट करने के लिए, लोकल फ़ुलफ़िलमेंट पाथ जोड़ता है.

लोकल होम एसडीके की दो मुख्य सुविधाएं हैं: लोकल एक्ज़ीक्यूशन और लोकल क्वेरी.

  • लोकल एक्ज़ीक्यूशन की मदद से, क्लाउड एपीआई कॉल करने के बजाय, लोकल फ़ुलफ़िलमेंट पाथ पर EXEC इंटेंट भेजकर कमांड पूरी की जा सकती हैं. उदाहरण के लिए, 'लाइट चालू करो' अनुरोध को लोकल एक्ज़ीक्यूशन की मदद से पूरा किया जा सकता है.
  • लोकल क्वेरी की मदद से, डिवाइस की स्थिति से जुड़ी क्वेरी को हैंडल किया जा सकता है. इसके लिए, लोकल फ़ुलफ़िलमेंट पाथ पर QUERY इंटेंट भेजे जाते हैं. उदाहरण के लिए, लोकल क्वेरी की सुविधा, क्लाउड एपीआई कॉल किए बिना ही 'क्या मेरी लाइट चालू है?' क्वेरी को पूरा कर देगी.

एसडीके की मदद से, TypeScript या JavaScript का इस्तेमाल करके, स्थानीय तौर पर ऑर्डर पूरा करने वाला ऐप्लिकेशन लिखा जा सकता है. इसमें स्मार्ट होम से जुड़े कारोबार का लॉजिक शामिल होता है. Google Home या Google Nest डिवाइस, आपके ऐप्लिकेशन को डिवाइस पर लोड और चला सकते हैं. आपका ऐप्लिकेशन, उपयोगकर्ता के निर्देशों को पूरा करने के लिए, स्थानीय नेटवर्क (लैन) पर वाई-फ़ाई के ज़रिए सीधे तौर पर आपके मौजूदा स्मार्ट डिवाइसों से कम्यूनिकेट करता है. ऐसा मौजूदा प्रोटोकॉल के ज़रिए किया जाता है.

एसडीके को इंटिग्रेट करने से, आपके Cloud-to-cloud इंटिग्रेशन की परफ़ॉर्मेंस बेहतर होती है. इसमें कम समय में डेटा लोड होना और ज़्यादा भरोसेमंद होना शामिल है. लोकल फ़ुलफ़िलमेंट की सुविधा, सभी तरह के डिवाइसों और डिवाइस की विशेषताओं के साथ काम करती है. हालांकि, यह सुविधा उन डिवाइसों के साथ काम नहीं करती जिन पर उपयोगकर्ता की जानकारी की पुष्टि दूसरे तरीके से की जाती है.

बनाना शुरू करें सैंपल आज़माएं

जानें कि यह सुविधा कैसे काम करती है

क्लाउड फ़ुलफ़िलमेंट से SYNC जवाब मिलने के बाद, लोकल होम प्लैटफ़ॉर्म, उपयोगकर्ता के लोकल एरिया नेटवर्क को स्कैन करता है. इसके लिए, mDNS, यूडीपी ब्रॉडकास्ट या UPnP का इस्तेमाल किया जाता है, ताकि Assistant से कनेक्ट किए गए स्मार्ट डिवाइसों का पता लगाया जा सके.

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

जब प्लैटफ़ॉर्म को किसी लोकल डिवाइस की पुष्टि करने वाला जवाब मिलता है, तब वह उपयोगकर्ता के Google Home या Google Nest डिवाइस के लिए, लोकल फ़ुलफ़िलमेंट पाथ सेट अप करता है. इसके बाद, वह लोकल फ़ुलफ़िलमेंट के लिए उपयोगकर्ता के निर्देशों को रूट करता है.

जब कोई उपयोगकर्ता, लोकल फ़ुलफ़िलमेंट पाथ वाले Cloud-to-cloud इंटिग्रेशन को ट्रिगर करता है, तो Assistant, क्लाउड फ़ुलफ़िलमेंट के बजाय Google Home या Google Nest डिवाइस को EXECUTE इंटेंट या QUERY इंटेंट भेजती है. इसके बाद, डिवाइस लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन चलाता है, ताकि इंटेंट को प्रोसेस किया जा सके.

इस इमेज में, स्थानीय तौर पर खरीदार को प्रॉडक्ट उपलब्ध कराने की प्रोसेस दिखाई गई है. एक्ज़ीक्यूशन पाथ में, Google Assistant वाले फ़ोन से उपयोगकर्ता के इरादे को कैप्चर किया जाता है. इसके बाद, उपयोगकर्ता के इरादे को Google Cloud प्रोसेस करता है. फिर, इसे Google Home डिवाइस पर स्थानीय तौर पर एक्ज़ीक्यूट किया जाता है. इसके बाद, निर्देश को सीधे डिवाइस हब या डिवाइस को भेजा जाता है. डेवलपर क्लाउड, क्लाउड फ़ॉलबैक के तौर पर उपलब्ध है.
पहली इमेज: स्मार्ट होम डिवाइस के लिए लोकल फ़ुलफ़िलमेंट पाथ जोड़ना कार्रवाई.

लोकल होम प्लैटफ़ॉर्म, यह तय नहीं करता कि कमांड को ट्रिगर करने के लिए, किस Google Home या Google Nest डिवाइस का इस्तेमाल किया जाए. EXECUTE और QUERY इंटेंट, टारगेट डिवाइस के साथ एक ही होम ग्राफ़ स्ट्रक्चर में तय किए गए किसी भी Google Home या Google Nest डिवाइस से आ सकते हैं.

लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन

लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन में, लोकल होम प्लैटफ़ॉर्म से भेजे गए इंटेंट को प्रोसेस करने के लिए, कारोबार से जुड़ा लॉजिक होता है. साथ ही, यह लोकल एरिया नेटवर्क के ज़रिए आपके स्मार्ट डिवाइस को ऐक्सेस करता है. लोकल फ़ुलफ़िलमेंट को इंटिग्रेट करने के लिए, आपको अपने हार्डवेयर में कोई बदलाव करने की ज़रूरत नहीं है. ऐप्लिकेशन, Cloud-to-cloud इंटिग्रेशन के अनुरोधों को पूरा करता है. इसके लिए, वह ऐप्लिकेशन-लेयर प्रोटोकॉल के ज़रिए स्मार्ट डिवाइस को कंट्रोल कमांड भेजता है. इनमें एचटीटीपी, टीसीपी या यूडीपी शामिल हैं. अगर स्थानीय तौर पर सामान पूरा करने का पाथ काम नहीं करता है, तो क्लाउड फ़ुलफ़िलमेंट का इस्तेमाल, फ़ॉलबैक एक्ज़ीक्यूशन पाथ के तौर पर किया जाता है.

ऐप्लिकेशन बनाने में मदद करने के लिए, Local Home SDK टूल ये दो मुख्य क्लास उपलब्ध कराता है:

  • DeviceManager: यह टीसीपी, यूडीपी सॉकेट या एचटीटीपी अनुरोधों का इस्तेमाल करके, स्मार्ट डिवाइसों से कम्यूनिकेट करने के तरीके उपलब्ध कराता है.
  • App: यह क्लास, Google की ओर से भेजे गए इंटेंट के लिए हैंडलर अटैच करने के तरीके उपलब्ध कराती है. Google, इन इंटेंट को स्थानीय तौर पर कंट्रोल किए जा सकने वाले डिवाइसों (IDENTIFY, REACHABLE_DEVICES) का पता लगाने के बाद भेजता है. यह क्लास, उपयोगकर्ता के निर्देशों (EXECUTE) को भी पूरा करती है. साथ ही, मौजूदा डिवाइस की स्थिति (QUERY) के बारे में उपयोगकर्ता के सवालों के जवाब देती है.

डेवलपमेंट के दौरान, ऐप्लिकेशन को अपने होस्टिंग सर्वर या लोकल डेवलपमेंट मशीन पर लोड करके बनाया और टेस्ट किया जा सकता है. प्रोडक्शन में, Google आपके ऐप्लिकेशन को उपयोगकर्ता के Google Home या Google Nest डिवाइस पर, सुरक्षित JavaScript सैंडबॉक्स एनवायरमेंट में होस्ट करता है.

फ़िलहाल, Report State API का इस्तेमाल, स्थानीय तौर पर ऑर्डर पूरा करने के लिए नहीं किया जा सकता. Google, इन अनुरोधों को प्रोसेस करने के लिए, क्लाउड फ़ुलफ़िलमेंट पर निर्भर करता है.

ऐप्लिकेशन का लाइफ़साइकल

जब Local Home प्लैटफ़ॉर्म को प्रोजेक्ट स्कैन कॉन्फ़िगरेशन से मेल खाने वाले नए लोकल डिवाइस मिलते हैं या जब उसे पहले से पहचाने गए डिवाइस से जुड़े इंटेंट पूरे करने होते हैं, तब मांग पर आपका लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन लोड किया जाता है.

Google Home या Google Nest डिवाइसों में मेमोरी की सीमा होती है. सिस्टम में मेमोरी की कमी होने की वजह से, आपके लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन को कभी भी बंद किया जा सकता है. ऐसा तब हो सकता है, जब आपका ऐप्लिकेशन बहुत ज़्यादा मेमोरी इस्तेमाल करने लगे या सिस्टम को किसी दूसरे ऐप्लिकेशन के लिए जगह बनानी हो. लोकल होम प्लैटफ़ॉर्म, आपके ऐप्लिकेशन को सिर्फ़ तब रीस्टार्ट करता है, जब नए इंटेंट डिलीवर करने हों और ऐप्लिकेशन को चलाने के लिए मेमोरी के ज़रूरी संसाधन उपलब्ध हों.

जब उपयोगकर्ता अपना खाता अनलिंक कर देता है या उसके agentUserId से जुड़े ऐसे डिवाइस नहीं होते हैं जो लोकल फ़ुलफ़िलमेंट की सुविधा के साथ काम करते हैं, तो लोकल होम प्लैटफ़ॉर्म, कुछ समय तक कोई गतिविधि न होने पर आपके ऐप्लिकेशन को अनलोड कर देता है.

इस्तेमाल किए जा सकने वाले डिवाइस

लोकल होम प्लैटफ़ॉर्म, Google Home या Google Nest डिवाइसों पर लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन को एक्ज़ीक्यूट करता है. यहां दी गई टेबल में, उन डिवाइसों के बारे में बताया गया है जिन पर इस सुविधा का इस्तेमाल किया जा सकता है. साथ ही, हर डिवाइस पर इस्तेमाल किए गए रनटाइम के बारे में भी बताया गया है. रनटाइम की ज़रूरी शर्तों के बारे में ज़्यादा जानने के लिए, एक्ज़ीक्यूशन एनवायरमेंट देखें.

डिवाइस टाइप परिवेश
Google Home स्पीकर Chrome
Google Home Mini स्पीकर Chrome
Google Home Max स्पीकर Chrome
Nest Mini स्पीकर Chrome
Nest Hub डिसप्ले Chrome
Nest Hub Max डिसप्ले Chrome
Nest Wifi राऊटर Node.js
पॉइंट Chrome

एक्ज़ीक्यूशन एनवायरमेंट

आपके लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन का एक्ज़ीक्यूशन एनवायरमेंट, आपके डिवाइस पर निर्भर करता है. Local Home प्लैटफ़ॉर्म, इन रनटाइम एनवायरमेंट के साथ काम करता है:

  • Chrome: आपका लोकल फ़ुलफ़िलमेंट ऐप्लिकेशन, Chrome ब्राउज़र window के कॉन्टेक्स्ट में काम करता है. इसके लिए, Chrome M80 या इसके बाद के वर्शन का इस्तेमाल किया जाता है. साथ ही, इसमें ECMAScript version ES2018 का इस्तेमाल किया जाता है.
  • Node.js: स्थानीय तौर पर पूरा किया जाने वाला आपका ऐप्लिकेशन, Node.js प्रोसेस में स्क्रिप्ट के तौर पर एक्ज़ीक्यूट होता है. यह प्रोसेस, Node v10.x LTS या इसके बाद के वर्शन पर चलती है. साथ ही, यह ECMAScript version ES2018 के साथ काम करती है.

सोर्स कोड का स्ट्रक्चर

हमारा सुझाव है कि Local Home SDK की ओर से उपलब्ध कराए गए बंडलर कॉन्फ़िगरेशन का इस्तेमाल करके, अपनी डिपेंडेंसी को एक ही JavaScript फ़ाइल में बंडल करें. साथ ही, अपने सोर्स कोड को Immediately-invoked Function Expression (IIFE) के तौर पर पैकेज करें.

लागू करने का तरीका

स्मार्ट होम इंटिग्रेशन के लिए Local Home SDK टूल का इस्तेमाल करने के लिए, आपको ये काम करने होंगे:

1 स्कैन कॉन्फ़िगरेशन सेट अप करना Google Home Developer Console को ज़रूरी पैरामीटर के साथ कॉन्फ़िगर करें, ताकि Assistant, स्थानीय तौर पर कंट्रोल किए जा सकने वाले डिवाइसों को ढूंढ सके.
2 क्लाउड फ़ुलफ़िलमेंट में, सिंक के जवाब को अपडेट करें क्लाउड फ़ुलफ़िलमेंट में, SYNC अनुरोध हैंडलर में बदलाव करें, ताकि वह otherDeviceIds फ़ील्ड के साथ काम कर सके. इस फ़ील्ड का इस्तेमाल प्लैटफ़ॉर्म, लोकल फ़ुलफ़िलमेंट पाथ सेट अप करने के लिए करता है. उस फ़ील्ड में, उन डिवाइसों के आईडी डालें जिन्हें स्थानीय तौर पर कंट्रोल किया जा सकता है.
3 स्थानीय फ़ुलफ़िलमेंट ऐप्लिकेशन लागू करना IDENTIFY, EXECUTE, और QUERY इंटेंट को हैंडल करने के लिए, JavaScript ऐप्लिकेशन बनाने के लिए Local Home SDK का इस्तेमाल करें. हब या ब्रिज प्रॉक्सी डिवाइसों के लिए, आपको REACHABLE_DEVICES इंटेंट को भी हैंडल करना चाहिए.
4 अपने ऐप्लिकेशन की जांच करना और उसे डीबग करना Google Home Test Suite का इस्तेमाल करके, अपने इंटिग्रेशन की जांच करें या खुद सर्टिफ़िकेट पाएं.

शुरू करने से पहले