जब डिवाइस या अनुरोध उम्मीद के मुताबिक काम नहीं करते हैं, तो यह ज़रूरी है कि आप अपने उपयोगकर्ताओं को गड़बड़ी ठीक करने और उनसे बातचीत करने की अच्छी सुविधा दें, ताकि वे समझ सकें कि क्या हुआ और जब भी मुमकिन हो, तो उसे ठीक करने का तरीका जान सकें. पक्का करें कि आपने गड़बड़ी होने की संभावित स्थितियों और आपके डिवाइस को उन स्थितियों में कैसे जवाब देना चाहिए, इस बारे में सोच लिया हो: अगर कोई उपयोगकर्ता, किसी टास्क के बीच में उसे रोक देता है, तो क्या होगा? अगर कोई उपयोगकर्ता किसी डिवाइस के ऑफ़लाइन होने पर, उस पर कोई कार्रवाई करने का अनुरोध करता है, तो क्या होगा? इन समस्याओं के बारे में पहले से प्लान करने और उपयोगकर्ताओं को इनसे उबरने में मदद करने से, उन्हें निराशा से बचाया जा सकता है. साथ ही, आपके डिवाइसों के लिए बेहतर अनुभव तैयार किया जा सकता है.
इस गाइड में, गड़बड़ियों को ठीक करने वाले इंटेंट रिस्पॉन्स के कुछ उदाहरण दिए गए हैं. गड़बड़ी और अपवादों के लिए मान्य errorCode वैल्यू देखने के लिए, गड़बड़ियां और अपवाद देखें.
उदाहरण 1: EXECUTE इंटेंट के लिए गड़बड़ी का जवाब
किसी व्यक्ति ने अपने लिविंग रूम में दो स्मार्ट लाइटें इंस्टॉल की हैं. उपयोगकर्ता "लिविंग रूम की लाइट चालू करो" कमांड देता है. इसके बाद, Google आपके फ़ुलफ़िलमेंट यूआरएल को EXECUTE इंटेंट भेजता है. आपको पता चला कि उपयोगकर्ता के डिवाइस ऑफ़लाइन हैं और उन्हें कंट्रोल नहीं किया जा सकता. इसलिए, फ़ुलफ़िलमेंट EXECUTE रिस्पॉन्स के साथ status ERROR और errorCode deviceOffline दिखाता है.
इस उदाहरण में, हल्के डिवाइस से EXECUTE के साथ EXECUTE का जवाब देने का तरीका बताया गया है. इसके बारे में पहले बताया जा चुका है:errorCode
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [ { "ids": [ "light-device-id-1" ], "status": "ERROR", "errorCode": "deviceOffline" }, { "ids": [ "light-device-id-2" ], "status": "ERROR", "errorCode": "deviceOffline" } ] } }
जवाब मिलने के बाद, Google Assistant उपयोगकर्ता को "डिवाइस अभी उपलब्ध नहीं हैं" मैसेज दिखाता है. ध्यान रखें कि EXECUTE रिस्पॉन्स में errorCode deviceOffline भेजने के बाद भी, आपको रिपोर्ट किए गए डिवाइसों के लिए ऑफ़लाइन स्टेटस भेजना होगा.
दूसरा उदाहरण: EXECUTE इंटेंट के लिए, जवाब देने में देरी न होने से जुड़ी अपवाद की स्थिति
इस इमेज में दिखाया गया है कि एक व्यक्ति, Assistant का इस्तेमाल करके अपने घर के मुख्य दरवाज़े पर लगे स्मार्ट लॉक को बंद करने की कोशिश कर रहा है. आपके पास उनके लॉक को कंट्रोल करने का विकल्प होता है. हालांकि, आपको पता चलता है कि डिवाइस की बैटरी कम है. इसलिए, आपकी फ़ुलफ़िलमेंट सेवा, EXECUTE रिस्पॉन्स के साथ status SUCCESS और exceptionCode lowBattery दिखाती है.
इस उदाहरण में, लॉक किए गए डिवाइस से exceptionCode के साथ EXECUTE रिस्पॉन्स भेजने का तरीका बताया गया है. इसके बारे में पहले बताया जा चुका है:
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["lock-device-id-1"], "status": "SUCCESS", "states": { "on": true, "online": true, "isLocked": true, "isJammed": false, "exceptionCode": "lowBattery" } }] } }
जवाब मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस की बैटरी कम है" मैसेज दिखाता है.
तीसरा उदाहरण: गड़बड़ी की सूचनाएं
कुछ मामलों में, उपयोगकर्ताओं को गड़बड़ी के बारे में सूचना देना मददगार हो सकता है. खास तौर पर, उन फ़ंक्शन के लिए जिन्हें उपयोगकर्ता अपने-आप पूरा होने की उम्मीद रखते हैं. जिन ट्रेट के लिए बिना मांगे सूचनाएं पाने की सुविधा उपलब्ध है उनके लिए, गड़बड़ी होने पर उपयोगकर्ता को बिना मांगे सूचनाएं भेजी जा सकती हैं. इसके लिए, आपको smart home बिना मांगे सूचनाएं लागू करनी होंगी.
स्मार्ट ड्रायर चल रहा है और कोई व्यक्ति साइकल पूरी होने से पहले दरवाज़ा खोल देता है.
errorCode के साथ सूचना भेजने के लिए, Google Home Graph एपीआई reportStateAndNotifications तरीके का इस्तेमाल किया जा सकता है:
इस उदाहरण में, ड्रायर डिवाइस से errorCode के साथ सूचना भेजने का तरीका बताया गया है. इसके बारे में पहले बताया जा चुका है:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "dryer-device-id": { "RunCycle": { "priority": 0, "status": "FAILURE", "errorCode": "deviceDoorOpen" } } }, "states": { "dryer-device-id": { "isRunning": false, "isPaused": true } } } } }
सूचना मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस का दरवाज़ा खुला है" मैसेज दिखाता है. एक ही पेलोड में सूचनाओं के साथ-साथ, डिवाइस की स्थितियों को भेजा जा सकता है.
चौथा उदाहरण: फ़ॉलो-अप नोटिफ़िकेशन
जिन ट्रेट कमांड के लिए फ़ॉलो-अप सूचनाएं उपलब्ध हैं उनके लिए, गड़बड़ी या अपवाद होने पर उपयोगकर्ता को फ़ॉलो-अप सूचना भेजी जा सकती है. हालांकि, ऐसा तब ही किया जा सकता है, जब आपने smart home फ़ॉलो-अप सूचनाएं लागू की हों.
किसी उपयोगकर्ता ने गैराज का दरवाज़ा बंद करने का निर्देश दिया, लेकिन बंद करते समय दरवाज़ा जाम हो गया. errorCode के साथ फ़ॉलो-अप सूचना भेजी जा सकती है:
POST https://homegraph.googleapis.com/v1/devices:reportStateAndNotification
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "agentUserId": "agent-user-id", "eventId": "unique-event-id", "payload": { "devices": { "notifications": { "door-device-id": { "LockUnlock": { "priority": 0, "followUpResponse": { "status": "FAILURE", "errorCode": "deviceJammingDetected", "followUpToken": "follow-up-token-1" } } } }, "states": { "door-device-id": { "openPercent": 70 } } } } }
सूचना मिलने के बाद, Assistant उपयोगकर्ता को "डिवाइस जाम हो गया है" मैसेज दिखाता है. एक ही पेलोड में सूचनाओं के साथ-साथ, डिवाइस की स्थितियों को भेजा जा सकता है.
ज़्यादा जानकारी और errorCodes के लिए, गड़बड़ियां और अपवाद के बारे में जानकारी देने वाला दस्तावेज़ देखें.