التحقُّق من هوية المستخدم الثانوي

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

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

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

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

تتوفّر ميزة إثبات هوية المستخدم الثانوي على جميع أنواع الأجهزة.

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

تتوفّر ميزة "إجراء ثانوي لإثبات هوية المستخدم" لجميع سمات الجهاز.

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

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

  • بدون تحدّي: طلب وردّ لا يستخدمان تحدّيًا ثانويًا لإثبات هوية المستخدم
  • ackNeeded: إجراء ثانوي لإثبات هوية المستخدم يتطلّب إقرارًا صريحًا (نعم أو لا) ويمكنه أيضًا استخدام حالات السمات كأحد ملاحظات المجيب. لا يُنصح باستخدام هذا النوع من التحديات لأمان الأجهزة والسمات.
  • pinNeeded: إثبات ثانوي لهوية المستخدم يتطلّب إدخال رقم تعريف شخصي (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
      }
    }]
  }
}

ackNeeded

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

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

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
          }
        }]
      }]
    }
  }]
}
الردّ 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackNeeded مع حالات السمات

مصادقة تأكيد المستخدم الثانوي التي يمكنها استخدام الحالات لسمة على سبيل المثال، إذا كنت تعمل مع سمة 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
          }
        }]
      }]
    }
  }]
}
الردّ 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

ننصحك باستخدام تحدّي 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"
      }
    }]
  }
}

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

يعرض هذا المثال الطلب والاستجابة مع 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"
      }
    }]
  }
}

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

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

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

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