يتيح لك إجراء ثانوي لإثبات هوية المستخدم إضافة عامل مصادقة ثانٍ إلى الطلبات المُرسَلة باستخدام ميزة "الطلبات الصوتية". يتيح لك ذلك إضافة إجراءات أمان إضافية لإجراءات معيّنة، مثل إيقاف كاميرا أمان أو فتح باب. لا ترتبط ميزة "التحقّق الثانوي من المستخدم" بصفة معيّنة للجهاز، ما يتيح لك تحديد الحالات التي تريد فيها أن تُطلِق 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 | يتم الآن تخفيف الإضاءة في غرفة المعيشة. |
{ "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": "ackNeeded" } }] } }
{ "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" }] } }
ackNeeded مع حالات السمات
مصادقة تأكيد المستخدم الثانوي التي يمكنها استخدام الحالات لسمة
على سبيل المثال، إذا كنت تعمل مع سمة
TemperatureSetting وتم ضبط كل من
thermostatMode
وthermostatTemperatureSetpoint
، يمكن لتطبيق
Assistant أن يسأل هل أنت متأكّد من ضبط درجة حرارة
مكيّف الهواء على 28 درجة؟
يمكنك أيضًا تضمين حالة في ردّ لطلب Assistant تنفيذ إجراء معيّن استنادًا إلى طلب معيّن.
تتيح السمات والحالات التالية استخدام ackNeeded
مع حالات السمات. يشير
إدراج سمة معيّنة إلى أنّ جميع حالاتها متوافقة.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
يعرض هذا المثال طلبًا وردًا يتضمّنان تحدّيًا من النوع ackNeeded
يستخدم حالة سمة. يغيّر هذا الأمر وضع مكيف الهواء إلى التدفئة ويضبط
درجة الحرارة على 28 درجة. بعد ذلك، يطلب Assistant من المستخدمين
تأكيد تشغيل التدفئة وضبط درجة الحرارة على 28
درجة لأنّه تم عرض thermostatTemperatureSetpoint
من 28
كحالة
في الردّ.
المستخدم | اضبط وضع المكيّف على التدفئة. |
Google Assistant | هل أنت متأكّد من ضبط درجة حرارة مكيف الهواء على 28 درجة؟ |
المستخدم | نعم. |
Google Assistant | يتم ضبط درجة حرارة التدفئة في مكيف الهواء على 28 درجة. |
{ "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" } }] }] } }] }
{ "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf", "payload": { "commands": [{ "ids": ["123"], "status": "ERROR", "states": { "thermostatMode": "heat", "thermostatTemperatureSetpoint": 28 }, "errorCode": "challengeNeeded", "challengeNeeded": { "type": "ackNeeded" } }] } }
{ "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
تحدّيًا. يعرض المثال ردًا يتضمّن تحديًا من 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 - حسنًا
اطّلِع على القائمة الكاملة للأخطاء والاستثناءات.