الأخطاء والاستثناءات

يسرد هذا المستند الأخطاء والاستثناءات المتوافقة رسميًا مع أجهزة المنزل الذكي. يُرجى استخدام رموز الأخطاء والاستثناءات المحدّدة في ردود الأهداف أو في الإشعارات إذا كنت قد نفّذتها، وذلك لكي يبلّغ "مساعد Google" المستخدمين النهائيين بالمشاكل المتعلّقة بأمر أو حالة جهاز معيّنَين. إذا كان الرد يتضمّن تنسيقًا غير صحيح أو errorCode، يعرض "مساعد Google" رسالة خطأ عامة للمستخدمين، مثل "عذرًا، الجهاز غير متاح حاليًا".

الأخطاء

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

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

باختصار:

  • خطأ على مستوى العالم: جميع الأجهزة في الردّ تتضمّن الخطأ نفسه
  • خطأ على مستوى الموقع الجغرافي: استجابة مختلطة تتضمّن حالات خطأ ونجاح

الأخطاء على مستوى العالم

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على مستوى العالم في استجابة QUERY أو EXECUTE.

في ما يلي مثال على خطأ deviceOffline على مستوى العالم بسبب أنّ المحور غير متصل بالإنترنت:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "deviceOffline",
    "status" : "ERROR"
  }
}

في ما يلي مثال على خطأ على مستوى العالم inSoftwareUpdate بسبب تعديل المحور:

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "errorCode": "inSoftwareUpdate",
    "status" : "ERROR"
  }
}

الأخطاء على مستوى الجهاز

ردّ QUERY

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على مستوى الجهاز في استجابة QUERY.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      },
      "device-id-2": {
        "errorCode": "deviceOffline",
        "status" : "ERROR"
      }
    }
  }
}

ردّ EXECUTE

يوضّح مقتطف JSON التالي كيفية عرض الأخطاء على مستوى الجهاز في استجابة EXECUTE.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [
      {
        "ids": [
          "device-id-1"
        ],
        "status": "ERROR",
        "errorCode": "deviceOffline"
      },
      {
        "ids": [
          "device-id-2"
        ],
        "status": "SUCCESS",
        "states": {
          "on": true,
          "online": true
        }
      }
    ]
  }
}

الإشعارات التي تتضمّن أخطاء

الإشعارات الاستباقية

يوضّح مقتطف JSON التالي كيفية الإبلاغ عن أخطاء على مستوى الجهاز في إشعار استباقي.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "RunCycle": {
            "priority": 0,
            "status": "FAILURE",
            "errorCode": "deviceDoorOpen"
          }
        }
      }
    }
  }
}

ردّ المتابعة

يوضّح مقتطف JSON التالي كيفية الإبلاغ عن أخطاء على مستوى الجهاز في ردّ لاحق.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "agentUserId": "agent-user-id-1",
  "eventId": "unique-event-id-1",
  "payload": {
    "devices": {
      "notifications": {
        "device-id-1": {
          "LockUnlock": {
            "priority": 0,
            "followUpResponse": {
              "status": "FAILURE",
              "errorCode": "deviceJammingDetected",
              "followUpToken": "PLACEHOLDER"
            }
          }
        }
      }
    }
  }
}

قائمة الأخطاء

ستؤدي الأخطاء التالية إلى إنتاج النص المرتبط بتحويل النص إلى كلام على الجهاز.

  • aboveMaximumLightEffectsDuration : يَجِبْ أَلَّا تَزِيدَ الْمُدَّة عَنْ سَاعَة وَاحِدَة. يُرجى إعادة المحاولة.
  • aboveMaximumTimerDuration : يمكنني ضبط <device(s)> لمدة تصل إلى <time period> فقط
  • actionNotAvailable : عُذْرًا، لَا يُمْكِنُنِي إِجْرَاءْ ذَلِكَ فِي الْوَقْتِ الْحَالِي.
  • actionUnavailableWhileRunning : <device(s)> <is/are> قيد التشغيل حاليًا، لذا لا يمكنني إجراء أي تغييرات.
  • alreadyArmed : <device(s)> <is/are> already armed.
  • alreadyAtMax : تمّ ضبط <device(s)> على درجة الحرارة القصوى.
  • alreadyAtMin : تم ضبط <device(s)> على درجة الحرارة الأدنى.
  • alreadyClosed : تم إغلاق<device(s)> <is/are> بالفعل.
  • alreadyDisarmed : <device(s)> <is/are> already disarmed.
  • alreadyDocked : <device(s)> <is/are> already docked.
  • alreadyInState : <device(s)> <is/are> already in that state.
  • alreadyLocked : <device(s)> <is/are> already locked.
  • alreadyOff : <device(s)> <is/are> already off.
  • alreadyOn : <device(s)> <is/are> already on.
  • alreadyOpen : <device(s)> <is/are> already open.
  • alreadyPaused : تمت إيقاف<device(s)> <is/are> مؤقتًا من قبل.
  • alreadyStarted : تم تشغيل<device(s)> <is/are> من قبل.
  • alreadyStopped : تمّ إيقاف<device(s)> <is/are> من قبل.
  • alreadyUnlocked : تمت إزالة قفل<device(s)> <is/are> من قبل.
  • ambiguousZoneName : عذرًا، لا يمكن لـ <device(s)> التعرّف على المنطقة المقصودة. يُرجى التأكّد من أنّ المناطق تحمل أسماء فريدة، ثم إعادة المحاولة.
  • amountAboveLimit : هذا المبلغ يتجاوز الحدّ الذي يمكن أن يستوعبه <device(s)>.
  • appLaunchFailed : تعذّر تشغيل <اسم التطبيق> على <الأجهزة>.
  • armFailure : تعذّر تفعيل جهاز الإنذار في <device(s)>.
  • armLevelNeeded : أحتاج إلى معرفة المستوى المطلوب ضبطه في <device(s)>. يمكنك تجربة قول "ضبط <الأجهزة> على <مستوى الأمان المنخفض>" أو "ضبط <الأجهزة> على <مستوى الأمان العالي>"
  • authFailure : لا يمكنني الوصول إلى <device(s)>. يُرجى التحقّق من التطبيق للتأكّد من اكتمال إعداد <device/devices>.
  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • belowMinimumLightEffectsDuration : يَجِبْ أَلَّا تَقِلَّ الْمُدَّة عَنْ 5 دَقَائِقْ. يُرجى إعادة المحاولة.
  • belowMinimumTimerDuration : لا يمكنني ضبط <device(s)> لمدة قصيرة جدًا. يُرجى إعادة المحاولة.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • cancelArmingRestricted : عذرًا، لم أتمكّن من إلغاء تفعيل <device(s)>.
  • cancelTooLate : عُذْرًا، لَقَدْ فَاتَ الْأَوَانْ عَلَى إِلْغَاءِ الْإِجْرَاءْ. استخدِم <الأجهزة> أو التطبيق بدلاً من ذلك.
  • channelSwitchFailed : تعذّر التبديل إلى القناة <channel name>. يُرجى إعادة المحاولة لاحقًا.
  • chargerIssue : عُذْرًا، يبدو أنّ <device(s)> <has/have> <a charger issue/charger issues>.
  • commandInsertFailed : تعذّر معالجة الأوامر الخاصة بـ <device(s)>.
  • deadBattery : <device(s)> <has/have> <a dead battery/dead batteries>.
  • degreesOutOfRange : إنّ الدرجات المطلوبة خارج النطاق المتاح لـ <device(s)>.
  • deviceAlertNeedsAssistance : <device(s)> <has/have> an active alert and <need(s)> your assistance.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceBusy : عُذْرًا، يَبْدُو أَنَّ <device(s)> مَشْغُولْ بِإِجْرَاءْ آخَرْ حَالِيًّا.
  • deviceCharging : عُذْرًا، يَبْدُو أَنَّهُ لَا يُمْكِنْ لـ <device(s)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّهُ قَيْدُ الشَّحْنْ.
  • deviceClogged : عُذْرًا، يَبْدُو أَنَّ <device(s)> مَسْدُودْ.
  • deviceCurrentlyDispensing : سَبَقَ وَبَدَأَ الْجِهَازُ الذَّكِي<device(s)> بِإِخْرَاجْ بَعْضِ الْكَمِّيَّاتْ.
  • deviceDoorOpen : باب <device(s)> مفتوح. يُرجى إغلاقه والمحاولة مرة أخرى.
  • deviceHandleClosed : تم إغلاق المقبض على <device(s)>. يُرجى فتحه وإعادة المحاولة.
  • deviceJammingDetected : تم التشويش على <device(s)>.
  • deviceLidOpen : غطاء <device(s)> مفتوح. يُرجى إغلاقه والمحاولة مرة أخرى.
  • deviceNeedsRepair : يجب إصلاح<device(s)> <need(s)>. يُرجى التواصل مع وكيل الخدمة المحلي.
  • deviceNotDocked : عُذْرًا، يَبْدُو أَنَّ <device(s)> <isn't/aren't> على قاعدة الإرساء. يُرجى إرساء <it/them> والمحاولة من جديد.
  • deviceNotFound : الأجهزة غير متوفّرة. أَقْتَرِحْ إِعْدَاد <it/them> مُجَدَّدًا.
  • deviceNotMounted : عُذْرًا، يَبْدُو أَنَّهُ لَا يُمْكِنُ لـ <device(s)> تَنْفِيذْ هَذَا الْإِجْرَاءْ لِأَنَّ <it/they> <is/are>n't مُثَبَّتْ.
  • deviceNotReady : <device(s)> <is/are>n't ready.
  • deviceStuck : <device(s)> <is/are> stuck and needs your help.
  • deviceTampered : تم التلاعب <بالأجهزة>.
  • deviceThermalShutdown : عُذْرًا، يَبْدُو أَنَّ <device(s)> تَوَقَّفَ عَنِ الْعَمَلْ بِسَبَبْ بُلُوغِ الْحَرَارَة دَرَجَاتٍ قُصْوَى.
  • directResponseOnlyUnreachable : <device(s)> <doesn't/don't> support remote control.
  • disarmFailure : تعذّر إيقاف أجهزة <device(s)>.
  • discreteOnlyOpenClose : عُذْرًا، يُمْكِنُنِي فَقَطْ فَتْحْ <device(s)> أَوْ إِغَلَاقُهُمَا كُلِّيًّا.
  • dispenseAmountAboveLimit : لا يمكن لـ <device(s)> إخراج هذه الكمية الكبيرة.
  • dispenseAmountBelowLimit : لا يمكن لـ <device(s)> إخراج هذا المقدار القليل.
  • dispenseAmountRemainingExceeded : لا يتوفّر في <device(s)> ما يكفي من <dispense item> لتنفيذ هذا الطلب.
  • dispenseFractionalAmountNotSupported : لا يمكن لـ <device(s)> صرف كسور من <dispense item>.
  • dispenseFractionalUnitNotSupported : لا يتيح <device(s)> إخراج <dispense item> بأجزاء من وحدة القياس هذه.
  • dispenseUnitNotSupported : لا يتيح <device(s)> استخدام هذه الوحدة مع <dispense item>.
  • doorClosedTooLong : لَمْ يَتِمَّ فَتْحُ بَابِ <device(s)> مُنْذُ وَقْتٍ طَوِيلْ. يُرجى فتح الباب والتأكّد من وجود شيء في الداخل، ثم إعادة المحاولة.
  • emergencyHeatOn : <device(s)> <is/are> in Emergency Heat Mode, so <it/they>'ll have to be adjusted by hand.
  • faultyBattery : <device(s)> <has/have> <a faulty battery/faulty batteries>.
  • floorUnreachable : يتعذّر على <device(s)> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • functionNotSupported : في الواقع، لا يتيح <device(s)> استخدام هذه الميزة.
  • genericDispenseNotSupported : أحتاج إلى معرفة ما تريد إخراجه. يُرجى إعادة المحاولة مع تحديد اسم المادة.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • hardError : عُذْرًا، حَدَثَ خَطَأْ وَلَا يُمْكِنُنِي التَّحَكُّمْ فِي الْجِهَازِ الْمَنْزِلِي.
  • inAutoMode : <device(s)> <is/are> currently set to auto mode. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inAwayMode : تم حاليًا ضبط<الأجهزة> على وضع "خارج المنزل". لِلتَّحَكُّمْ فِي التِّرْمُوسْتَاتْ، يُرْجَى ضَبْطُهُ يَدَوِيًّا علَى وَضْعْ دَاخِلِ الْمَنْزِلْ بِاسْتِخْدَامْ تَطْبِيقْ Nest عَلَى الْهَاتِفْ أَوِ الْجِهَازِ اللَّوْحِي أَوِ الْكُمْبْيُوتِرْ.
  • inDryMode : تم حاليًا ضبط <device(s)> على وضع التجفيف. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inEcoMode : تم حاليًا ضبط <device(s)> على وضع توفير الطاقة. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inFanOnlyMode : تم حاليًا ضبط <الأجهزة> على وضع المروحة فقط. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inHeatOrCool : <device(s)> <is/are>n't in heat/cool mode.
  • inHumidifierMode : تم ضبط <device(s)> حاليًا على وضع ترطيب الهواء. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inOffMode : <device(s)> <is/are> currently off. To change the temperature, you'll need to switch <it/them> to a different mode.
  • inPurifierMode : تم حاليًا ضبط <device(s)> على وضع التنقية. لتغيير درجة الحرارة، عليك اختيار وضع مختلف.
  • inSleepMode : <device(s)> <is/are> in sleep mode. يُرجى إعادة المحاولة لاحقًا.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • lockFailure : تعذّر قفل <الأجهزة>.
  • lockedState : <device(s)> <is/are> currently locked.
  • lockedToRange : هَذِهِ الْحَرَارَة خَارِجْ نِطَاقْ دَرَجَاتِ الْحَرَارَة الَّتِي يُمْكِنُ ضَبْطُهَا فِي <device(s)>.
  • lowBattery : <device(s)> <has/have> low battery.
  • maxSettingReached : تم ضبط <الأجهزة> على أعلى إعداد.
  • maxSpeedReached : تم ضبط <الأجهزة> على الحد الأقصى للسرعة.
  • minSettingReached : تم ضبط <device(s)> على أدنى مستوى.
  • minSpeedReached : تم ضبط<device(s)> <is/are> على الحد الأدنى للسرعة.
  • monitoringServiceConnectionLost : فقد <device(s)> الاتصال بخدمة المراقبة.
  • needsAttachment : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are> تَنْقُصُهَا قِطْعَة مُلْحَقَة. يُرجى استبداله وإعادة المحاولة.
  • needsBin : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are> يَنْقُصُهُ وِعَاءْ. يُرجى استبداله وإعادة المحاولة.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkProfileNotRecognized : عذرًا، لم أستطع التعرّف على "<network profile>" على <device(s)>.
  • networkSpeedTestInProgress : أنا أختبر حاليًا <network> <speed/speeds>.
  • noAvailableApp : عفوًا، يبدو أنّ تطبيق <اسم التطبيق> غير متاح.
  • noAvailableChannel : عُذْرًا، وَلَكِنَّ قَنَاةْ <channel name> غَيْرْ مُتَوَفِّرَة عَلَى مَا يَبْدُو.
  • noChannelSubscription : عُذْرًا، لَا يَتَوَفَّرْ لَدَيْنَا اشْتِرَاكْ حَالِيًّا فِي قَنَاةْ <channel name>.
  • noTimerExists : عذرًا، لَمْ يَتِمَّ ضَبْطْ أَيّْ مُوَقِّتَاتْ عَلَى <device(s)> عَلَى مَا يَبْدُو.
  • notSupported : عذرًا، هذا الوضع غير متاح على <device(s)>.
  • obstructionDetected : رصدت<device(s)> عائقًا.
  • offline , deviceOffline : عُذْرًا، يَبْدُو أَنَّ <device(s)> <is/are> غَيْرْ مُتَوَفِّرْ فِي الْوَقْتِ الْحَالِي.
  • onRequiresMode : يُرجى تحديد الوضع الذي تريد تفعيله.
  • passphraseIncorrect : عفوًا، يبدو أنّ رقم التعريف الشخصي غير صحيح.
  • percentOutOfRange : عذرًا، لا يمكنني ضبط <device(s)> على <percent>.
  • pinIncorrect : (passphraseIncorrect)
  • rainDetected : لم أفتح <الأجهزة> لأنّه تم رصد تساقط أمطار.
  • rangeTooClose : دَرَجَاتُ الْحَرَارَة هَذِهِ مُتَقَارِبَة جِدًّا وَلَا يُمْكِنُ اسْتِخْدَامُهَا لِإِعْدَادْ نِطَاقِ التَّدْفِئَة وَالتَّبْرِيدْ فِي <device(s)>. يُرْجَى اخْتِيَارْ دَرَجَاتْ حَرَارَة أَكْثَرْ تَبَاعُدًا.
  • relinkRequired : عُذْرًا، حَدَثَ خَطَأْ فِي الْحِسَابْ عَلَى مَا يَبْدُو. يُرجى استخدام تطبيق Google Home أو "مساعد Google" لإعادة ربط <device(s)>.
  • remoteSetDisabled :
    • المَعلمة الاختيارية errorCodeReason
    • currentlyArmed - عُذْرًا، بِمَا أَنَّ جِهَازَ الْإِنْذَارْ فِي نِظَامِ الْأَمَانْ مُفَعَّلْ حَالِيًّا، يَجِبْ اسْتِخْدَامُ <device(s)> أَوِ التَّطْبِيقْ لِإِجْرَاءْ أَيّْ تَغْيِيرَاتْ.
    • remoteUnlockNotAllowed - عذرًا، لا يمكنني فتح قفل <device(s)> عن بُعد.
    • remoteControlOff - هذا الإجراء متوقّف حاليًا. يُرجى تفعيل وحدة التحكّم عن بُعد على <device(s)> وإعادة المحاولة.
    • childSafetyModeActive - هذا الإجراء غير مفعّل في <الأجهزة> عندما يكون وضع سلامة الأطفال مفعّلاً.
  • roomsOnDifferentFloors : لَا يُمْكِنْ لـ <device(s)> الْوُصُولْ إِلَى تِلْكَ الْغُرَفْ لِأَنَّهَا تَقَعُ فِي طَوَابِقْ مُخْتَلِفَة.
  • safetyShutOff : <device(s)> <is/are> in Safety Shut-Off Mode, so <it/they>'ll have to be adjusted by hand.
  • sceneCannotBeApplied : عذرًا، لا يمكن تطبيق <device(s)>.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • softwareUpdateNotAvailable : عذرًا، لا يتوفّر تحديث للبرامج على <device(s)>.
  • startRequiresTime : لِإِجْرَاءْ ذَلِكْ، يَجِبْ تَحْدِيدْ مُدَّةِ التَّشْغِيلِ الْمَطْلُوبَة لـ <device(s)>.
  • stillCoolingDown : لا يزال<device(s)> <is/are> في مرحلة التبريد.
  • stillWarmingUp : لا يزال <device(s)> في مرحلة الإحماء.
  • streamUnavailable : عذرًا، لا يمكن بث تسجيلات <device(s)> في الوقت الحالي على ما يبدو.
  • streamUnplayable : عُذْرًا، لَا يُمْكِنُنِي بَثّْ تَسْجِيلَاتِ <device(s)> فِي الْوَقْتِ الْحَالِي.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • targetAlreadyReached : عُذْرًا، سَبَقَ أَنْ تَمَّ ضَبْطُ الْجِهَازْ عَلَى دَرَجَةِ الْحَرَارَة الْمَطْلُوبَة.
  • timerValueOutOfRange : لا يمكن ضبط <device(s)> على هذه المدة.
  • tooManyFailedAttempts : عُذْرًا، تَمَّ إِجْرَاءُ الْكَثِيرْ مِنَ الْمُحَاوَلَاتْ غَيْرِ النَّاجِحَة. يُرجى الانتقال إلى تطبيق الجهاز لإكمال هذا الإجراء.
  • transientError : عذرًا، حدث خطأ أثناء التحكّم في <device(s)>. يُرجى إعادة المحاولة.
  • turnedOff , deviceTurnedOff : <device(s)> <is/are> off right now.
  • unableToLocateDevice : تعذّر عليّ تحديد موقع <device(s)>.
  • unknownFoodPreset : هَذَا الْإِعْدَادُ الْمُسْبَقُ الْخَاصّْ بِالطَّعَامْ غَيْرْ مُتَوَفِّرْ عَلَى <device(s)>.
  • unlockFailure : تعذّر فتح قفل <device(s)>.
  • unpausableState : لا يمكن إيقاف <device(s)> مؤقتًا في الوقت الحالي.
  • userCancelled : ok
  • valueOutOfRange : لا يمكن ضبط <device(s)> على درجة الحرارة هذه.

إعداد تقارير عن حالة الاتصال بالإنترنت وبلا إنترنت

عندما يكون الجهاز غير متصل بالإنترنت، عليك إرسال <code{"online": code="" dir="ltr" false}<="" translate="no"> إلى حالة التقارير في غضون خمس دقائق من سلوك الجهاز. في المقابل، عندما يعود الجهاز إلى حالة الاتصال بالإنترنت، عليك إرسال <code{"online": code="" dir="ltr" translate="no" true}<=""> إلى Report State في غضون خمس دقائق من سلوك الجهاز. عندما يعود الجهاز إلى الاتصال بالإنترنت، على الشريك إرسال تقرير عن جميع حالات الجهاز الحالية باستخدام واجهة برمجة التطبيقات reportStateAndNotification. يوضّح هذا المثال أنّ نوع الجهاز light متّصل بالإنترنت، ويعرض جميع حالات الجهاز الحالية.
"requestId": "test-request-id",
  "agentUserId": "agent-user-1",
    "payload":{
      "devices": {
        "states": {
          "device-id-1": {
            "brightness": 65,
            "on": true,
            "online": true
          }
          "notifications": {},
        }
      }
    }

الاستثناءات

يجب عرض استثناء عند حدوث مشكلة أو تنبيه مرتبط بأحد الأوامر. قد ينجح الأمر أو يتعذّر تنفيذه.

إذا كان الأمر ناجحًا (الحالة = "SUCCESS")، أبلِغ عن الاستثناءات باستخدام السمة StatusReport (للأجهزة غير الجهاز المستهدف)، أو من خلال عرض exceptionCode مناسب (للجهاز المستهدف).

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

إذا تعذّر تنفيذ الأمر بسبب استثناءات، يجب أن تكون الحالة "EXCEPTIONS"، ويجب الإبلاغ عن الاستثناءات باستخدام السمة StatusReport.

استثناء غير حاسم (SUCCESS) بشأن الجهاز المستهدف

في ما يلي مثال على قفل الباب:

مستوى شحن البطارية في قفل الباب الأمامي منخفض. يَتِمُّ الْآنَ إِقْفَالُ الْبَابِ الْأَمَامِي.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isLocked": true,
        "isJammed": false,
        "exceptionCode": "lowBattery"
      }
    }]
  }
}

استثناء غير مانع (SUCCESS) بشأن جهاز آخر يستخدم StatusReport

هذا مثال على تفعيل نظام الأمان: حسنًا، سأفعّل نظام الأمان. النافذة الأمامية مفتوحة.

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["device-id-1"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true,
        "isArmed": true,
        "currentArmLevel": "L2",
        "currentStatusReport": [{
          "blocking": false,
          "deviceTarget": "sensor_id1",
          "priority": 0,
          "statusCode": "deviceOpen"
        }]
      }
    }]
  }
}

استثناء الحظر بشأن جهاز آخر يستخدم StatusReport

{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "devices": {
      "device-id-1": {
        "on": true,
        "online": true,
        "status": "EXCEPTIONS",
        "currentStatusReport": [{
            "blocking": true,
            "deviceTarget": "device-id-1",
            "priority": 0,
            "statusCode": "lowBattery"
          },
          {
            "blocking": true,
            "deviceTarget": "front_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          },
          {
            "blocking": true,
            "deviceTarget": "back_window_id",
            "priority": 1,
            "statusCode": "deviceOpen"
          }
        ]
      }
    }
  }
}

قائمة الاستثناءات

ستؤدي الاستثناءات التالية إلى تشغيل ميزة "تحويل النص إلى كلام" المرتبطة بها على الجهاز.

  • bagFull : <device(s)> <has/have> <a full bag/full bags>. Please empty <it/them> and try again.
  • binFull : <device(s)> <has/have> <a full bin/full bins>.
  • carbonMonoxideDetected : تم رصد أول أكسيد الكربون في <اسم المنزل>.
  • deviceAtExtremeTemperature : <device(s)> <is/are> at <an extreme temperature/extreme temperatures>.
  • deviceJammingDetected : تم التشويش على <device(s)>.
  • deviceMoved : تم نقل <الأجهزة>.
  • deviceOpen : <device(s)> <is/are> open.
  • deviceTampered : تم التلاعب <بالأجهزة>.
  • deviceUnplugged : تم فصل <device(s)>.
  • floorUnreachable : يتعذّر على <device(s)> الوصول إلى تلك الغرفة. يُرجى نقل <it/them> إلى الطابق الصحيح والمحاولة مجددًا.
  • hardwareFailure : <device(s)> <has/have> a hardware problem.
  • inSoftwareUpdate : <device(s)> <is/are> currently in a software update.
  • isBypassed : تم حاليًا تجاوز <device(s)>.
  • lowBattery : <device(s)> <has/have> low battery.
  • motionDetected : <device(s)> <detect(s)> motion.
  • needsPads : <device(s)> <need(s)> new pads.
  • needsSoftwareUpdate : <device(s)> <need(s)> a software update.
  • needsWater : <device(s)> <need(s)> water.
  • networkJammingDetected : يشير هذا الخطأ إلى أنّ الاتصال بين الشبكة المنزلية و<device(s)> لا يعمل بشكل صحيح.
  • noIssuesReported : لم يبلغ<device(s)> عن أي مشاكل.
  • roomsOnDifferentFloors : لَا يُمْكِنْ لـ <device(s)> الْوُصُولْ إِلَى تِلْكَ الْغُرَفْ لِأَنَّهَا تَقَعُ فِي طَوَابِقْ مُخْتَلِفَة.
  • runCycleFinished : <device(s)> <has/have> finished running.
  • securityRestriction : <device(s)> <has/have> a security restriction.
  • smokeDetected : تم رصد دخان في <اسم المنزل>.
  • tankEmpty : <device(s)> <has/have> <an empty tank/empty tanks>. Please fill <it/them> and try again.
  • usingCellularBackup : <device(s)> <is/are> using cellular backup.
  • waterLeakDetected : <device(s)> <detect(s)> a water leak.‎
</code{"online":></code{"online":>