مرحبًا بك في "مركز مطوّري Google Home"، الوجهة الجديدة لتعلّم كيفية تطوير المهام المنزلية الذكية. ملاحظة: ستواصل إنشاء إجراءات في "وحدة تحكّم المهام".

معالجة الأخطاء والاستثناءات

عندما لا تعمل الأجهزة أو الطلبات على النحو المتوقّع، من المهم توفير معالجة مفيدة وتواصل متعلّق بالأخطاء للمستخدمين كي يفهموا المشكلة التي حدثت، وكيفية تصحيحها. تأكد من التفكير في سيناريوهات الاحتمالات المحتمَلة وكيفية استجابة جهازك: ماذا لو أوقف المستخدم مهمة قيد التقدم؟ ماذا لو طلب المستخدم إجراءً من أحد الأجهزة أثناء عدم اتصاله بالإنترنت؟ يمكن أن يؤدي التخطيط لهذه المشاكل ومساعدة المستخدم في تعافيها إلى تجنّب الشعور بالإحباط الذي تسببه المستخدم في تقديم تجربة أعلى جودة للأجهزة.

يقدّم هذا الدليل بعض الأمثلة على الردود حسب النية بالشراء التي تتعامل مع الأخطاء. راجِع الأخطاء والاستثناءات لمراجعة قيم errorCode الصالحة بحثًا عن خطأ واستثناءات.

المثال 1: استجابة الخطأ لهدف EXECUTE

مُسْتَخْدِمِ الْمُسْتَخْدِمْ فِيهْ لَمْبِتِينْ ذَكِيَّة وِمُثَبَّتْ فِي أُوضِةِ الْمَعِيشَة. يُصدر المستخدم أمرًا "إضاءة مصابيح غرفة المعيشة" وترسل Google نية EXECUTE إلى عنوان URL لتوصيل الطلبات. تبيّن لنا أنّ أجهزة المستخدم غير متصلة بالإنترنت ولا يمكن التحكّم فيها، لذلك يعرض توصيل الطلب استجابة 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 من المستخدم الرسالة "الجهاز غير متاح الآن" بعد تلقّي الرد. تذكَّر أنّه لا يزال عليك إرسال الحالة بلا اتصال بالإنترنت للأجهزة المسجَّلة بعد الإبلاغ عن errorCode deviceOffline في الردّ EXECUTE.

المثال 2: استثناء غير محظور للنية بالشراء EXECUTE

يحاول مستخدم قفل القفل الذكي عند الباب الأمامي باستخدام الجهاز مع Assistant. يمكنك التحكّم في قفل الشاشة بنجاح، ولكن تلاحظ أنّ طاقة بطارية الجهاز منخفضة، لذلك تعرض عملية توصيل الطلب استجابة EXECUTE مع السمتَين status SUCCESS وexceptionCode lowBattery.

يوضح هذا المثال كيفية إرسال استجابة 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 من المستخدم عبارة "بطارية منخفضة" في الجهاز بعد تلقّي الاستجابة.

المثال 3: إشعارات الأخطاء الاستباقية

وفي بعض الحالات، قد يكون من المفيد تنبيه المستخدمين بحدوث خطأ، خاصةً بالنسبة إلى الدوال التي يتوقع المستخدمون إكمالها تلقائيًا. بالنسبة إلى السمات التي تتوافق مع الإشعارات الاستباقية، يمكنك إبلاغ المستخدم مسبقًا أثناء حدوث خطأ إذا نفّذت smart home إشعارات استباقية.

مُجفّف ذكي قيد التشغيل، وفتح أحد الأشخاص الباب قبل انتهاء الدورة. يمكنك استدعاء طريقة واجهة برمجة التطبيقات Google Home Graph reportStateAndNotifications لإرسال إشعار استباقي باستخدام errorCode:

يوضح هذا المثال كيفية إرسال إشعار استباقي مع 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 من المستخدم الرسالة التي تفيد بأن "باب الجهاز مفتوح" بعد تلقّي الإشعار. يمكنك إرسال حالات الأجهزة المتوافقة مع الإشعارات في الحمولة نفسها.

المثال 4: إشعار المتابعة

بالنسبة إلى أوامر السمات التي تتيح إشعارات المتابعة، يمكنك إرسال إشعار متابعة إلى المستخدم عند حدوث خطأ أو استثناء، في حال تنفيذ 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، يمكنك مراجعة المستندات المرجعية الأخطاء والاستثناءات.