ويتيح لك التحقق الثانوي للمستخدم إضافة أمان العامل الثاني إلى الأوامر الصوتية. يتيح لك هذا الإجراء إضافة المزيد من الأمان لإجراءات معيّنة، مثل إيقاف كاميرا المراقبة أو فتح باب. لا يرتبط التحقّق الثانوي من المستخدم بسمة معيّنة للجهاز تتيح لك تحديد وقت الحصول على تحدي 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 | تَوْطِيِةْ إِضَاءِةْ لَمْبِةْ أُوضِةِ الْمَعِيشَة. |
{ "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" }] } }
هناك حاجة ack مع حالات الصفات
مصادقة إقرار المستخدم الثانوي التي يمكن أن تستخدم الحالات إحدى السمات.
على سبيل المثال، إذا كنت تتعامل مع سمة
TemperatureSetting وتم ضبط كل من
thermostatMode
وthermostatTemperatureSetpoint
،
يمكن لـ Assistant طرح السؤال هل تريد فعلاً ضبط درجة حرارة التدفئة في مكيّف الهواء على 28 درجة؟
يمكنك أيضًا تضمين حالة في رد لجعل Assistant يؤدي إجراءً معينًا بناءً على طلب معين.
تتوافق السمات والولايات التالية مع ackNeeded
التي تشتمل على السمات. وتشير قائمة سمة معينة إلى أن جميع حالاتها معتمدة.
- الاستيلاء على الذراع
currentArmLevel
currentStatusReport
- ملء
- قفل القفل
- متوقف
on
- OpenClose
- المشهد
- إعداد درجة الحرارة
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
، لذلك يطلب 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
- حسنًا.
يمكنك الاطلاع على القائمة الكاملة للأخطاء والاستثناءات.