गड़बड़ियों और अपवादों को मैनेज करना

जब डिवाइस या अनुरोध उम्मीद के मुताबिक काम नहीं करते हैं, तो अपने उपयोगकर्ताओं को गड़बड़ी ठीक करने और कम्यूनिकेशन से जुड़ी अच्छी सुविधा देना ज़रूरी है. इससे उन्हें यह समझने में मदद मिलती है कि क्या हुआ और जब भी मुमकिन हो, इसे कैसे ठीक किया जाए. पक्का करें कि आपने डिवाइस के काम न करने की संभावित स्थितियों और उनके जवाबों के बारे में सोच लिया हो: अगर कोई उपयोगकर्ता, डिवाइस पर चल रहे किसी टास्क को बीच में ही रोक देता है, तो क्या होगा? अगर कोई उपयोगकर्ता किसी डिवाइस के ऑफ़लाइन होने पर, उस पर कोई कार्रवाई करने का अनुरोध करता है, तो क्या होगा? इन समस्याओं के बारे में पहले से प्लान करने और उपयोगकर्ताओं को इनसे उबरने में मदद करने से, उन्हें निराशा से बचाया जा सकता है. साथ ही, आपके डिवाइसों के लिए बेहतर क्वालिटी वाला अनुभव तैयार किया जा सकता है.

इस गाइड में, गड़बड़ियों को ठीक करने वाले इंटेंट रिस्पॉन्स के कुछ उदाहरण दिए गए हैं. गड़बड़ी और अपवादों के लिए मान्य 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 के लिए, गड़बड़ियां और अपवाद रेफ़रंस दस्तावेज़ देखें.