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