ويتيح لك التحقق الثانوي للمستخدم إضافة أمان العامل الثاني إلى الأوامر الصوتية. يتيح لك هذا الإجراء إضافة المزيد من الأمان لإجراءات معيّنة، مثل إيقاف كاميرا المراقبة أو فتح باب. لا يرتبط التحقّق الثانوي من المستخدم بسمة معيّنة للجهاز تتيح لك تحديد وقت الحصول على Google Assistant issue a challenge. For example, you can choose to issue a challenge for the OnOff trait for a security camera, but not issue a challenge for the OnOff trait for a light. You can also have Assistant issue challenges in certain situations for the same action. For example, you can request that Assistant issue a challenge request to open a door if an NFC keyfob is not in the proximity of that door, but not issue a challenge if the keyfob is present.
يمكن لإصدار
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
- حسنًا.
يمكنك الاطلاع على القائمة الكاملة للأخطاء والاستثناءات.