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

refresh_date: 2023-01-06

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

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

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

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

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

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

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

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

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

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

पक्का करें कि आपका सर्वर ऑनलाइन हो, फ़ायरवॉल Google को ब्लॉक न कर रहा हो, और यूआरएल सही हो.
हां
BACKEND_FAILURE_URL_TIMEOUT आपकी सेवा तक पहुंचने के दौरान, Google के अनुरोध का समय खत्म हो गया.

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

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

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

403, 404 या 400 रिस्पॉन्स के लिए, अपने वेब सर्वर लॉग देखें.
हां
EXECUTION_BACKEND_FAILURE_URL_ROBOTED फ़ुलफ़िलमेंट यूआरएल को robots.txt या सुरक्षा फ़िल्टर ने ब्लॉक किया है.

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

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

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

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

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

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

खोज लॉग

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

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

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

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

Cloud Log Queries बनाना

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

संसाधन तय करने के लिए, संसाधन ड्रॉपडाउन पर क्लिक करें. इसके बाद, 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 को इस्तेमाल करने के तरीके के बारे में एक उपयोगकर्ता गाइड उपलब्ध कराते हैं. इसमें, बदलावों को असरदार तरीके से टेस्ट करने के बारे में बताया गया है.

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

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