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

التحقق الثانوي للمستخدم

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

يمكن لـ Assistant إصدار نوعين من الاختبارات: الإقرار الصريح أو رقم التعريف الشخصي (PIN). يؤدّي ذلك إلى إضافة حظر التحدي إلى QUERY وEXECUTE هدفًا مُرسَلاً من Assistant إلى الإجراء مرة أخرى وقبول قبول رسالة الخطأ challengeNeeded. تُعيد Assistant بعد ذلك طلب الإجراء المطلوب إلى الإجراء مع تضمين بيانات التحدي في جزء الاختبار. يمكنك بعد ذلك التحقق من بيانات اختبار التحقق لتحديد ما إذا كان المستخدم قد قدم إجابة الأمان الصحيحة أم لا.

يستخدم Assistant مربّع الحوار لإصدار التحدي، ولكن في حال استخدام Assistant على الأسطح غير الصوتية، يتم تنفيذ رقم التعريف الشخصي والتأكيدات على الشاشة.

أنواع الأجهزة المتوافقة

يتم دعم التحقق الثانوي للمستخدم على جميع أنواع الأجهزة.

سمات الجهاز المتوافقة

التحقق الثانوي من المستخدم متاح لجميع سمات الجهاز.

أنواع الاختبار المتاحة

في ما يلي أنواع اختبارات التحقق من المستخدم الثانوية المتاحة:

  • لا يوجد اختبار تحقق: طلب واستجابة لا يستخدمان اختبار تحقق ثانوي من المستخدم.
  • ack Needed - تحقق ثانوي من المستخدم يتطلب إقرارًا صريحًا (نعم أو لا) ويمكنه أيضًا استخدام حالات الصفات كتعليقات استجابة. لا يُنصح بهذا النوع من الاختبارات لأجهزة وسمات الأمان.
  • pin needed - تحقق ثانوي من المستخدم يتطلب رقم تعريف شخصي (PIN)، وهو مثالي لأجهزة الأمان والسمات.

بدون تحدٍ

يعرض هذا المثال طلبًا واستجابة ناجحين من EXECUTE بدون الحاجة إلى تشغيل مصابيح الإضاءة.

المستخدم إِضَاءَةُ الْمَصَابِيحْ
Google Assistant حَسَنًا، يَتِمُّ الْآنَ تَشْغِيلْ 3 مَصَابِيحْ.
طلب
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.OnOff",
          "params": {
            "on": true
          }
        }]
      }]
    }
  }]
}
الردّ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

يلزم توفر ack

مصادقة ثانوية لإقرار المستخدمين يمكنها استخدام حالات متعددة لسمة أو مصادقة إقرار بسيطة.

في ما يلي أنواع ackNeeded أنواع التحدي:

بسيطة وبسيطة

يعرض هذا المثال طلبًا واستجابة بسيطين مع تحدٍ ackNeeded لتعتيم الإضاءة وتأكيد لتعتيم الإضاءة.

المستخدم تَوْطِيِةْ إِضَاءِةْ لَمْبِةْ أُوضِةِ الْمَعِيشَة.
Google Assistant تَوْطِيِةْ إِضَاءِةْ لَمْبِةْ أُوضِةِ الْمَعِيشَة. هل تريد المتابعة؟
المستخدم نعم.
Google Assistant تَوْطِيِةْ إِضَاءِةْ لَمْبِةْ أُوضِةِ الْمَعِيشَة.
الطلب 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.BrightnessAbsolute",
          "params": {
            "brightness": 12
          }
        }]
      }]
    }
  }]
}
الرد 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
الطلب 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.BrightnessAbsolute",
          "params": {
            "brightness": 12
          },
          "challenge": {
            "ack": true
          }
        }]
      }]
    }
  }]
}
الرد الثاني
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

هناك حاجة ack مع حالات الصفات

مصادقة إقرار المستخدم الثانوي التي يمكن أن تستخدم الحالات إحدى السمات. على سبيل المثال، إذا كنت تتعامل مع سمة TemperatureSetting وتم ضبط كل من thermostatMode وthermostatTemperatureSetpoint، يمكن لـ Assistant طرح السؤال هل تريد فعلاً ضبط درجة حرارة التدفئة في مكيّف الهواء على 28 درجة؟

يمكنك أيضًا تضمين حالة في رد لجعل Assistant يؤدي إجراءً معينًا بناءً على طلب معين.

تتوافق السمات والولايات التالية مع ackNeeded التي تشتمل على السمات. وتشير قائمة سمة معينة إلى أن جميع حالاتها معتمدة.

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

المستخدم أريد ضبط وضع التيار المتردد على التدفئة
Google Assistant هل تريد فعلاً ضبط حرارة مكيف الهواء على 28 درجة؟
المستخدم نعم.
Google Assistantن يَتِمُّ الْآنَ ضَبْطُ دَرَجَةْ حَرَارَةِ مُكَيِّفِ الْهَوَاءْ عَلَى 28 دَرَجَةْ.
الطلب 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.TemperatureSetting",
          "params": {
            "thermostatMode": "heat"
          }
        }]
      }]
    }
  }]
}
الرد 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
الطلب 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.TemperatureSetting",
          "params": {
            "thermostatMode": "heat"
          },
          "challenge": {
            "ack": true
          }
        }]
      }]
    }
  }]
}
الرد الثاني
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

رقم التعريف الشخصي مطلوب

يوصى باستخدام اختبار pinNeeded مع أجهزة الأمان.

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

نموذج لطلب ورد إلى رقم تعريف شخصي غير صحيح أو صالح:

المستخدم افتح قفل الباب.
Google Assistant هَلْ يُمْكِنُنِي الْحُصُولْ عَلَى رَمْزِ الْأَمَانْ؟
طلب
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.LockUnlock",
          "params": {
            "lock": false
          }
        }]
      }]
    }
  }]
}
الردّ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

رمز PIN غير صحيح

يعرض هذا المثال الطلب والاستجابة مع اختبار challengeFailedPinNeeded. يجب استخدام هذا التحدي بعد تعذُّر pinNeeded في البداية.

عند عرض نوع challengeFailedPinNeeded، يطلب Assistant رمز الأمان مرة أخرى. إذا أجرى المستخدم عددًا كبيرًا جدًا من المحاولات الفاشلة، يمكنك عرض استجابة خطأ tooManyFailedAttempts. يُرجى الاطِّلاع على الردود على الأخطاء.

المستخدم 333222
Google Assistant عذرًا، رمز الأمان غير صحيح. هَلْ يُمْكِنُنِي الْحُصُولْ عَلَى رَمْزِ الْأَمَانْ؟
طلب
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.LockUnlock",
          "params": {
            "lock": false
          },
          "challenge": {
            "pin": "333222"
          }
        }]
      }]
    }
  }]
}
الردّ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

رقم التعريف الشخصي صالح

يعرض هذا المثال طلب رقم تعريف شخصي صالح واستجابة له.

المستخدم 333444
Google Assistant يَتِمُّ الْآنَ فَتْحُ قُفْلِ الْبَابْ.
طلب
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.LockUnlock",
          "params": {
            "lock": false
          },
          "challenge": {
            "pin": "333444"
          }
        }]
      }]
    }
  }]
}
الردّ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
المستخدم تَوْطِيِةْ إِضَاءِةْ لَمْبِةْ أُوضِةِ الْمَعِيشَة.
Google Assistant هَلْ يُمْكِنُنِي الْحُصُولْ عَلَى رَمْزِ الْأَمَانْ؟
طلب
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "inputs": [{
    "intent": "action.devices.EXECUTE",
    "payload": {
      "commands": [{
        "devices": [{
          "id": "123"
        }],
        "execution": [{
          "command": "action.devices.commands.BrightnessAbsolute",
          "params": {
            "brightness": 12
          }
        }]
      }]
    }
  }]
}
الردّ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

الردود على الأخطاء

في ما يلي بعض رموز الخطأ التي يمكن عرضها مع ردودك:

  • challengeFailedNotSetup - يتطلب هذا الإجراء رمز أمان ولكن لم يتم إعداده في تطبيق جهازك.
  • tooManyFailedAttempts - عذرًا، أخفقت محاولات كثيرة جدًا. يُرجى الانتقال إلى تطبيق الجهاز لإكمال هذا الإجراء.
  • pinIncorrect - رمز الأمان غير صحيح.
  • userCancelled - حسنًا.

يمكنك الاطلاع على القائمة الكاملة للأخطاء والاستثناءات.