इंटिग्रेशन की गड़बड़ियों को हल करना

Google Cloud आपको Google Cloud Monitoring की मदद से, अपने प्रोजेक्ट की विश्वसनीयता को मॉनिटर करने के लिए टूल उपलब्ध कराता है. साथ ही, Google Cloud Logging की मदद से गड़बड़ी के लॉग की समस्याओं को डीबग करने की सुविधा देता है. जब भी उपयोगकर्ता के मकसद को पूरा करने में कोई गड़बड़ी होती है, तो Google Home Analytics पाइपलाइन उस गड़बड़ी को आपकी मेट्रिक में रिकॉर्ड करती है. साथ ही, आपके प्रोजेक्ट लॉग में गड़बड़ी का लॉग पब्लिश करती है.

गड़बड़ियों को ठीक करने के लिए, ये दो तरीके अपनाएं:

  1. स्मार्ट होम मेट्रिक की मदद से, अपने प्रोजेक्ट की स्थिति पर नज़र रखें.
  2. गड़बड़ी के लॉग में जाकर, गड़बड़ी की पूरी जानकारी देखें और समस्याओं की जांच करें.

Local Home SDK का इस्तेमाल करके, लोकल इंटिग्रेशन की प्रोसेस भी ऐसी ही होती है. समस्या हल करने के फ़्लो को समझने के बाद, मेट्रिक और लॉग के बीच आसानी से स्विच किया जा सकता है. इससे आपको गड़बड़ियों के बारे में अहम जानकारी पाने में मदद मिलेगी.

इसके अलावा, अन्य उपयोगकर्ताओं के साथ शेयर करके भी अपने ऐक्शन को टेस्ट किया जा सकता है. पक्का करें कि गड़बड़ियों और अपवादों को सही तरीके से मैनेज किया गया हो.

गड़बड़ियों की निगरानी करना

अपने प्रोजेक्ट की मेट्रिक ऐक्सेस करने के लिए, Google Cloud Monitoring dashboards का इस्तेमाल किया जा सकता है. यहां कुछ ऐसे अहम चार्ट दिए गए हैं जो क्वालिटी को मॉनिटर करने और डीबग करने के लिए खास तौर पर काम के हैं:

  • अपने प्रोजेक्ट की विश्वसनीयता को मॉनिटर करते समय, सक्सेस रेट चार्ट सबसे पहले देखा जाता है. इस चार्ट में गिरावट से पता चलता है कि आपके कुछ या सभी उपयोगकर्ताओं के लिए, सेवा बंद हो गई है. हमारा सुझाव है कि अपने प्रोजेक्ट में हर बदलाव या अपडेट के बाद, किसी भी तरह की गड़बड़ी का पता लगाने के लिए, इस चार्ट पर बारीकी से नज़र रखें.
  • 95वें पर्सेंटाइल की लेटेंसी चार्ट से यह पता चलता है कि आपके उपयोगकर्ताओं के लिए, Cloud-to-cloud इंटिग्रेशन कैसा परफ़ॉर्म कर रहा है. इस चार्ट में अचानक होने वाले उतार-चढ़ाव से यह पता चल सकता है कि आपके सिस्टम, अनुरोधों को पूरा नहीं कर पा रहे हैं. हमारा सुझाव है कि इस चार्ट को समय-समय पर देखें, ताकि आपको किसी भी तरह की गड़बड़ी का पता चल सके.
  • गड़बड़ी की जानकारी देने वाले चार्ट, आपके इंटिग्रेशन से जुड़ी समस्याओं को हल करने में सबसे ज़्यादा मददगार होते हैं. सफलता के प्रतिशत वाले चार्ट में हाइलाइट की गई हर गड़बड़ी के लिए, गड़बड़ी के ब्रेकडाउन में गड़बड़ी का कोड दिखता है. नीचे दी गई टेबल में, Google Home platform की ओर से फ़्लैग की गई गड़बड़ियां और उन्हें ठीक करने का तरीका देखा जा सकता है.

प्लैटफ़ॉर्म से जुड़ी गड़बड़ी के सामान्य कोड

यहां गड़बड़ी के कुछ सामान्य कोड दिए गए हैं. ये आपको अपने प्रोजेक्ट लॉग में दिख सकते हैं. इनसे Google Home platform की ओर से पकड़ी गई समस्याओं की पहचान की जा सकती है. समस्या हल करने से जुड़ी जानकारी के लिए, यहां दी गई टेबल देखें. गड़बड़ी के कोड की पूरी सूची देखने के लिए, गड़बड़ियां और अपवाद देखें.

गड़बड़ी का कोड जानकारी पार्टनर के लिए ज़रूरी कार्रवाई
AGENT_ISSUE पार्टनर के क्लाउड एजेंट में कोई सामान्य समस्या हुई.

पूरा करने के लॉग में, क्रैश या ऐसे अपवादों की जांच करें जिन्हें हैंडल नहीं किया गया है.
हां
AGENT_UNAVAILABLE_ERROR Google, पार्टनर के फ़ुलफ़िलमेंट यूआरएल को ऐक्सेस नहीं कर सका.

पक्का करें कि आपका सर्वर ऑनलाइन हो, फ़ायरवॉल Google को ब्लॉक न कर रहा हो, और यूआरएल सही हो.
हां
COMMAND_FAILED किसी निर्देश को लागू करने के दौरान, सामान्य गड़बड़ी हुई.

असल वजह का पता लगाने के लिए, खास requestId के लिए, फ़ुलफ़िलमेंट लॉग देखें.
हां
EXECUTION_BACKEND_FAILURE_URL_ERROR Google को आपके फ़ुलफ़िलमेंट से एचटीटीपी 4xx गड़बड़ी (401 के अलावा) मिली.

403, 404 या 400 रिस्पॉन्स के लिए, अपने वेब सर्वर लॉग देखें.
हां
EXECUTION_BACKEND_FAILURE_URL_TIMEOUT आपकी सेवा को ऐक्सेस करने की कोशिश करते समय, Google के अनुरोध का समय खत्म हो गया.

पुष्टि करें कि आपकी सेवा ऑनलाइन है, कनेक्शन स्वीकार कर रही है, और क्षमता से ज़्यादा काम नहीं कर रही है. इसके अलावा, यह भी पुष्टि करें कि टारगेट डिवाइस चालू हो, ऑनलाइन हो, और सिंक किया गया हो.
हां
EXECUTION_BACKEND_FAILURE_URL_ROBOTED फ़ुलफ़िलमेंट यूआरएल को robots.txt या सुरक्षा फ़िल्टर ने ब्लॉक किया है.

पक्का करें कि Google के क्रॉलर/सेवाएं, आपके फ़ुलफ़िलमेंट एंडपॉइंट को ऐक्सेस कर सकें.
हां
EXECUTION_BACKEND_FAILURE_URL_UNREACHABLE Google को आपकी फ़ुलफ़िलमेंट सेवा से एचटीटीपी 5xx गड़बड़ी मिली.

पक्का करें कि एंडपॉइंट यूआरएल सेवा सही हो, स्थिर हो, और सार्वजनिक तौर पर ऐक्सेस की जा सकती हो. साथ ही, सेवा चालू हो. स्मार्ट होम सेवा के लॉग देखने के लिए, Google Cloud Logging में requestId का इस्तेमाल करें. ऐप्लिकेशन की परफ़ॉर्मेंस की जांच करने और फिर से कोशिश करने की सुविधा जोड़ें. सर्वर क्रैश होने, टाइम आउट होने या 502/503 गेटवे की गड़बड़ियों की जांच करें.
हां
EXECUTION_BAILOUT_INVALID_RESPONSE JSON रिस्पॉन्स का फ़ॉर्मैट इतना गलत था कि प्रोसेसिंग को रद्द कर दिया गया.

JSON वैलिडेटर का इस्तेमाल करके, यह पक्का करें कि आपका जवाब, इंटेंट स्कीमा का पूरी तरह से पालन करता हो.
हां
EXECUTION_GAL_BAD_3P_RESPONSE टोकन के जवाब में अमान्य फ़ॉर्मैट होने की वजह से, खाता लिंक नहीं किया जा सका.

पुष्टि करें कि आपके OAuth सर्वर के जवाब का फ़ॉर्मैट, Google की ज़रूरी शर्तों के मुताबिक हो.
हां
EXECUTION_GAL_INSUFFICIENT_CAPABILITIES उपयोगकर्ता के खाते के पास, इस कार्रवाई के लिए ज़रूरी अनुमतियां नहीं हैं.

OAuth के दौरान अनुरोध किए गए स्कोप की जांच करें और पक्का करें कि वे ज़रूरी ट्रेट से मेल खाते हों.
हां
EXECUTION_GAL_MAYBE_UNLINKED_BY_3P पार्टनर क्लाउड से पता चलता है कि उपयोगकर्ता ने अपना खाता अनलिंक कर दिया है.

पक्का करें कि आपकी agentUserId मैपिंग स्टेबल हो और उसे हटाया न गया हो.
हां
EXECUTION_GAL_NOT_FOUND Google में सेव किए गए उपयोगकर्ता के ऐक्सेस और रीफ़्रेश टोकन अमान्य हैं या उन्हें रीफ़्रेश नहीं किया जा सकता. इस वजह से, पार्टनर की सेवा को ऐक्सेस नहीं किया जा सकता और न ही उसकी पुष्टि की जा सकती है.

पक्का करें कि टोकन मान्य और सिंक किए गए हों. साथ ही, खाते की स्थिति में होने वाले बदलावों को सही तरीके से मैनेज करें. अगर टोकन रद्द कर दिए गए हैं, तो उपयोगकर्ताओं को खाते को फिर से लिंक करने के लिए कहें.
EXECUTION_GAL_READ_ONLY_MODE_FOR_3P पार्टनर की ओर से, इंटिग्रेशन सिर्फ़ पढ़ने वाले मोड में है.

देखें कि उपयोगकर्ता का खाता निलंबित तो नहीं किया गया है या "सिर्फ़ देखने के लिए" मेंटेनेंस मोड में तो नहीं है.
हां
EXECUTION_GAL_UNLINKED_BY_3P तीसरे पक्ष की सेवा ने खाते को अनलिंक कर दिया हो.

इस बात की जांच करें कि उपयोगकर्ता को डिसकनेक्ट क्यों किया गया था. उदाहरण के लिए, सुरक्षा से जुड़ी सेटिंग रीसेट की गई थी. पक्का करें कि पार्टनर का OAuth सर्वर, Google के refresh_token अनुरोधों का सही जवाब देता हो, ताकि नए ऐक्सेस टोकन आसानी से जारी किए जा सकें.
हां
EXECUTION_INVALID_JSON Google, JSON रिस्पॉन्स पेलोड को पार्स नहीं कर सका.

अपने जवाब में सिंटैक्स से जुड़ी गड़बड़ियां, ब्रैकेट न होने या अमान्य वर्णों की जांच करें.
हां
INVALID_AUTH_TOKEN Google को आपकी सेवा से एचटीटीपी 401 गड़बड़ी का कोड मिला है.

ऐक्सेस टोकन की समयसीमा खत्म नहीं हुई है, लेकिन आपकी सेवा ने इसे अमान्य कर दिया है. अपने स्मार्ट होम की सर्विस लॉग देखने के लिए, Google Cloud Logging में requestId का इस्तेमाल करें.
INVALID_JSON रिस्पॉन्स का स्ट्रक्चर अमान्य है. उदाहरण के लिए, ज़रूरी फ़ील्ड मौजूद नहीं हैं.

इंटेंट JSON स्कीमा के हिसाब से अपने जवाब की पुष्टि करें.
हां
MALFORMED_JSON JSON स्ट्रक्चर में गड़बड़ी है. उदाहरण के लिए, स्ट्रिंग या ऑब्जेक्ट बंद नहीं किए गए हैं.

पक्का करें कि आपका फ़ुलफ़िलमेंट, जवाबों को क्रम से लगाने के लिए स्टैंडर्ड JSON लाइब्रेरी का इस्तेमाल करता हो.
हां
NOT_IMPLEMENTED पार्टनर ने अनुरोध किए गए इंटेंट या विशेषता को लागू नहीं किया है.

SYNC के जवाब में सिर्फ़ वे विशेषताएं शामिल करें जिन्हें आपने पूरी तरह से लागू किया है.
हां
OPEN_AUTH_FAILURE उपयोगकर्ता के ऐक्सेस टोकन की समयसीमा खत्म हो गई है और Google उसे रीफ़्रेश नहीं कर पा रहा है या Google को आपकी सेवा से एचटीटीपी 401 गड़बड़ी का कोड मिला है.

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

अपनी अंदरूनी गड़बड़ियों को गड़बड़ियों की आधिकारिक सूची से मैप करें.
हां
PARTNER_RESPONSE_INVALID_PAYLOAD रिस्पॉन्स में मौजूद payload फ़ील्ड, मान्य JSON ऑब्जेक्ट नहीं है.

फ़ुलफ़िलमेंट रिस्पॉन्स के रूट स्ट्रक्चर की पुष्टि करें.
हां
PARTNER_RESPONSE_INVALID_STATUS status जवाब SUCCESS, ERROR या OFFLINE नहीं था.

पक्का करें कि आपके जवाब में मौजूद हर डिवाइस के नतीजे में, मान्य स्टेटस स्ट्रिंग शामिल हो.
हां
PARTNER_RESPONSE_MISSING_COMMANDS_AND_DEVICES जवाब में, अनुरोध किए गए सभी निर्देशों/डिवाइसों के नतीजे शामिल नहीं थे.

Google Home डेवलपर के दस्तावेज़ के हिसाब से, अपने रिस्पॉन्स के स्ट्रक्चर की पुष्टि करें. पक्का करें कि सर्वर में गड़बड़ी की वजह से, रिस्पॉन्स को छोटा न किया जा रहा हो या खाली मुख्य हिस्सा न दिखाया जा रहा हो. अनुरोध के commands कलेक्शन में मौजूद हर आइटम के लिए, जवाब की एक एंट्री होनी चाहिए.
हां
PARTNER_RESPONSE_MISSING_DEVICE Google ने जिस डिवाइस के लिए अनुरोध किया था उसे जवाब में शामिल नहीं किया गया.

पक्का करें कि आपके जवाब में, अनुरोध के पेलोड में दिया गया हर ID शामिल हो.
हां
PARTNER_RESPONSE_MISSING_PAYLOAD जवाब में ज़रूरी payload फ़ील्ड मौजूद नहीं है.

पक्का करें कि आपके टॉप-लेवल JSON ऑब्जेक्ट में payload कुंजी शामिल हो.
हां
PARTNER_RESPONSE_NOT_OBJECT पूरे रिस्पॉन्स को JSON ऑब्जेक्ट के तौर पर पार्स नहीं किया जा सका.

अपने एचटीटीपी रिस्पॉन्स के मुख्य हिस्से में, ट्रेलिंग वर्ण या JSON के अलावा अन्य कॉन्टेंट की जांच करें. पक्का करें कि payload.commands[] एक सही JSON ऑब्जेक्ट हो. इसमें आईडी, स्टेटस, और वैकल्पिक स्टेटस शामिल होने चाहिए.
हां
REQUEST_ID_NOT_FOUND Google को अनुरोध के लिए इंटरनल ट्रैकिंग आईडी नहीं मिला.

आम तौर पर, यह प्लैटफ़ॉर्म की कोई अंदरूनी गड़बड़ी होती है. गड़बड़ी की संख्या में बढ़ोतरी पर नज़र रखें और सहायता टीम से संपर्क करें.
हां
RESOURCE_UNAVAILABLE अनुरोध किया गया संसाधन (डिवाइस या trait) उपलब्ध नहीं है.

देखें कि डिवाइस "व्यस्त" है या कुछ समय के लिए बंद किया गया है.
हां
RESPONSE_TIMEOUT फ़ुलफ़िलमेंट सेवा ने नौ सेकंड के अंदर जवाब नहीं दिया.

बैकएंड लेटेंसी को ऑप्टिमाइज़ करें. साथ ही, धीमी डीबी क्वेरी या क्षेत्रीय नेटवर्क लैग की जांच करें.
हां
RESPONSE_UNAVAILABLE पार्टनर के फ़ुलफ़िलमेंट यूआरएल से कोई जवाब नहीं मिला.

पुष्टि करें कि आपकी सेवा चालू है और एंडपॉइंट क्रैश नहीं हो रहा है.
हां
TIMEOUT इंटेंट को प्रोसेस करते समय, टाइम आउट हो गया.

अपने क्लाउड और डिवाइस हब के बीच, इंटरनल सर्विस टाइम आउट के लिए लॉग देखें.
हां

खोज लॉग

मेट्रिक का इस्तेमाल करके इंटिग्रेशन को मॉनिटर करने के बाद, अगला चरण Cloud Logging का इस्तेमाल करके खास गड़बड़ियों को ठीक करना है. गड़बड़ी का लॉग, JSON जैसी एंट्री होती है. इसमें ऐसे फ़ील्ड होते हैं जिनमें समय, गड़बड़ी का कोड, और स्मार्ट होम इंटेंट की शुरुआत से जुड़ी जानकारी जैसी काम की जानकारी होती है.

Google Cloud में कई सिस्टम हैं, जो आपके प्रोजेक्ट को हर समय लॉग भेजते हैं. आपको अपने लॉग फ़िल्टर करने के लिए क्वेरी लिखनी होंगी और अपनी ज़रूरत के हिसाब से लॉग ढूंढने होंगे. क्वेरी, समयसीमा, संसाधन, लॉग की गंभीरता या कस्टम एंट्री पर आधारित हो सकती हैं.

क्लाउड लॉग के लिए क्वेरी करना

कस्टम फ़िल्टर बनाने के लिए, क्वेरी बटन का इस्तेमाल किया जा सकता है.

क्लाउड लॉग क्वेरी बनाना

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

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

गंभीरता बटन का इस्तेमाल करके, आपातकालीन, जानकारी, डीबग, और गंभीरता के अन्य लॉग लेवल के हिसाब से फ़िल्टर करें.

कस्टम एंट्री डालने के लिए, Logs Explorer में क्वेरी फ़ील्ड का भी इस्तेमाल किया जा सकता है. इस फ़ील्ड में इस्तेमाल किया जाने वाला क्वेरी इंजन, स्ट्रिंग मैचिंग जैसी बुनियादी क्वेरी और ज़्यादा ऐडवांस टाइप की क्वेरी, दोनों के साथ काम करता है. इनमें कंपैरेटर (<, >=, !=) और बूलियन ऑपरेटर (AND, OR, NOT) शामिल हैं.

उदाहरण के लिए, नीचे दी गई कस्टम एंट्री से, LIGHT डिवाइस टाइप से होने वाली गड़बड़ियां दिखेंगी:

resource.type = "assistant_action_project" AND severity = ERROR AND jsonPayload.executionLog.executionResults.actionResults.device.deviceType = "LIGHT"

लॉग को असरदार तरीके से क्वेरी करने के ज़्यादा उदाहरण देखने के लिए, क्वेरी लाइब्रेरी पर जाएं.

समस्याओं को ठीक करने के लिए टेस्टिंग

गड़बड़ियों का पता लगाने और उन्हें ठीक करने के लिए अपडेट लागू करने के बाद, हमारा सुझाव है कि आप Google Home Test Suite की मदद से, गड़बड़ियों को ठीक करने के लिए किए गए बदलावों की अच्छी तरह से जांच करें. हम Test Suite को इस्तेमाल करने के तरीके के बारे में इस्तेमाल के लिए गाइड उपलब्ध कराते हैं. इसमें आपको बदलावों को असरदार तरीके से टेस्ट करने के बारे में जानकारी मिलती है.

सीखने के लिए संसाधन

इस दस्तावेज़ में, स्मार्ट होम ऐक्शन में होने वाली गड़बड़ियों को ठीक करने का तरीका बताया गया है. डीबग करने के बारे में ज़्यादा जानने के लिए, हमारे कोडलैब भी देखे जा सकते हैं: