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

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

इस गाइड में, गड़बड़ियों को ठीक करने वाले इंटेंट रिस्पॉन्स के कुछ उदाहरण दिए गए हैं. गड़बड़ी और अपवादों के लिए मान्य errorCode वैल्यू देखने के लिए, गड़बड़ियां और अपवाद देखें.

उदाहरण 1: EXECUTE इंटेंट के लिए गड़बड़ी का जवाब

किसी व्यक्ति ने अपने लिविंग रूम में दो स्मार्ट लाइट इंस्टॉल की हैं. उपयोगकर्ता "लिविंग रूम की लाइट चालू करो" कमांड देता है. इसके बाद, Google आपके फ़ुलफ़िलमेंट यूआरएल को EXECUTE इंटेंट भेजता है. आपको पता चला कि उपयोगकर्ता के डिवाइस ऑफ़लाइन हैं और उन्हें कंट्रोल नहीं किया जा सकता. इसलिए, फ़ुलफ़िलमेंट EXECUTE रिस्पॉन्स के साथ status ERROR और errorCode deviceOffline दिखाता है.

इस उदाहरण में, हल्के डिवाइस से 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 दिखाता है.

इस उदाहरण में, लॉक किए गए डिवाइस से EXECUTE के साथ EXECUTE का जवाब भेजने का तरीका बताया गया है. इसके बारे में पहले बताया जा चुका है:exceptionCode

{
  "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 के लिए, गड़बड़ियां और अपवाद रेफ़रंस दस्तावेज़ देखें.