تتيح لك ميزة "إجراء ثانوي لإثبات هوية المستخدم" إضافة عامل أمان ثانٍ إلى الأوامر الصوتية. يتيح لك ذلك إضافة مستوى أمان إضافي لبعض الإجراءات، مثل إيقاف كاميرا أمان أو فتح باب. لا يرتبط التحقّق الثانوي من المستخدِم بسمة جهاز معيّنة، ما يتيح لك تحديد الوقت الذي تريد أن تطرح فيه Google Assistant سؤالاً. على سبيل المثال، يمكنك اختيار إصدار طلب مصادقة لسمة OnOff الخاصة بكاميرا أمان، ولكن عدم إصدار طلب مصادقة لسمة OnOff الخاصة بمصباح. يمكنك أيضًا إعداد Assistantتحديات بشأن المشاكل في حالات معيّنة للإجراء نفسه. على سبيل المثال، يمكنك أن تطلب من Assistant إصدار طلب تحدٍّ لفتح باب إذا لم يكن هناك جهاز NFC بالقرب من الباب، ولكن لا يمكنك إصدار طلب تحدٍّ إذا كان الجهاز موجودًا.
يمكن أن تصدر Assistant نوعَين من طلبات التحقّق، وهما الإقرار الصريح أو رقم التعريف الشخصي (PIN). يضيف ذلك حظرًا يتضمّن تحديًا إلى نية QUERY
وEXECUTE
المُرسَلة من Assistant إلى تطبيقك ويقبل استجابة خطأ challengeNeeded
. ثم يرسل Assistant طلب الغرض إلى الإجراء الخاص بك مع بيانات التحقّق في كتلة التحقّق. يمكنك بعد ذلك التحقّق من صحة بيانات التحدّي لتحديد ما إذا كان المستخدم قد قدّم الرد الصحيح على سؤال الأمان.
تستخدم Assistant مربّع حوار لإصدار التحدّي، ولكن إذا كنت تستخدم Assistant على مساحات عرض غير صوتية، يتم إدخال رقم التعريف الشخصي والتأكيد على الشاشة.
أنواع الأجهزة المتوافقة
تتوفّر ميزة "إجراء ثانوي لإثبات هوية المستخدم" على جميع أنواع الأجهزة.
سمات الأجهزة المتوافقة
يتوفّر إجراء ثانوي لإثبات هوية المستخدم لجميع سمات الجهاز.
أنواع اختبارات التحقّق من تسجيل الدخول المتوافقة
في ما يلي أنواع اختبارات التحقّق الثانوي من المستخدِم المتوافقة:
- بدون اختبار: طلب واستجابة لا يستخدمان اختبارًا ثانويًا للتحقّق من هوية المستخدم.
- ackNeeded: إجراء ثانوي لإثبات هوية المستخدم يتطلّب تأكيدًا صريحًا (نعم أو لا)، ويمكنه أيضًا استخدام حالات السمات كتعليقات استجابة. لا يُنصح باستخدام هذا النوع من التحديات مع الأجهزة والسمات المتعلقة بالأمان.
- pinNeeded: عملية إثبات ثانوية لهوية المستخدم تتطلّب إدخال رقم تعريف شخصي، وهي مثالية لأجهزة الأمان والسمات.
ما مِن تحدّي
يعرض هذا المثال طلبًا واستجابة ناجحَين برمز الحالة 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 simple
يعرض هذا المثال طلبًا وردًا بسيطَين يتضمّنان 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 - حسنًا
اطّلِع على القائمة الكاملة للأخطاء والاستثناءات.