درستیسنجی ثانویه کاربر به شما امکان میدهد امنیت دومرحلهای را به فرمانهای گفتاری اضافه کنید. این کار به شما امکان میدهد برای کنشهای خاصی مثل خاموش کردن دوربین امنیتی یا باز کردن در، امنیت بیشتری اضافه کنید. درستیسنجی ثانویه کاربر به ویژگی خاصی از دستگاه وابسته نیست و به شما امکان میدهد تصمیم بگیرید چه زمانی Google Assistant چالش صادر کند. برای مثال، میتوانید انتخاب کنید که برای ویژگی OnOff در دوربین امنیتی چالش صادر شود، اما برای ویژگی OnOff در چراغ چالش صادر نشود. همچنین میتوانید Assistant را برای صدور چالش در شرایط خاص برای همان کنش داشته باشید. برای مثال، میتوانید درخواست کنید که اگر جاکلیدی NFC در مجاورت در نیست، Assistant درخواست چالش برای باز کردن در صادر کند، اما اگر جاکلیدی موجود است، چالش صادر نکند.
Assistant میتواند دو نوع چالش صادر کند -
تأیید صریح یا شماره شناسایی شخصی (پین). این کار یک بلوک چالش به هدفهای QUERY و EXECUTE ارسالشده از Assistant به کنش شما اضافه میکند و پاسخ خطای challengeNeeded را میپذیرد. سپس Assistant درخواست هدف را با دادههای چالش در بلوک چالش به کنش شما برمیگرداند. سپس میتوانید
دادههای چالش را اعتبارسنجی کنید تا مشخص شود آیا کاربر پاسخ امنیتی صحیح را
ارائه داده است یا نه.
Assistant از کادر گفتگو برای ارائه چالش استفاده میکند، اما اگر از Assistant در سطوح غیرصوتی استفاده کنید، پین و تأییدیهها روی صفحه انجام میشود.
زمان استفاده از درستیسنجی ثانویه کاربر
میتوانید درستیسنجی ثانویه کاربر را برای هر نوع دستگاه یا ویژگی فعال کنید. بااینحال، برای دریافت گواهینامه ادغام، باید درستیسنجی ثانویه کاربر را برای برخیاز انواع و ویژگیهای دستگاههای حساس به امنیت پیادهسازی کنید.
درستیسنجی ثانویه کاربر بااستفاده از نوع چالش pinNeeded
برای ترکیبهای نوع دستگاه و ویژگی زیر الزامی است:
- ویژگی
OnOffاگر نوع دستگاهCAMERAباشد. - ویژگی
OpenCloseاگر نوع دستگاهDOOR،GARAGE،GATE، یاWINDOWباشد. - ویژگی
LockUnlockهنگام باز کردن قفل. - ویژگی
ArmDisarmهنگام غیرفعال کردن یا لغو غیرفعالسازی. - ویژگی
Reboot،SoftwareUpdate، یاNetworkControlاگر نوع دستگاهNETWORKیاROUTERباشد.
نوع چالش ackNeeded برای ویژگی TemperatureSetting الزامی است
اگر نوع دستگاه AC_UNIT باشد و ادغام در ژاپن باشد.
انواع چالشهای پشتیبانیشده
انواع چالشهای درستیسنجی ثانویه کاربر که پشتیبانی میشوند عبارتاند از:
- بدون چالش - درخواست و پاسخی که از چالش درستیسنجی ثانویه کاربر استفاده نمیکند.
- ackNeeded - درستیسنجی ثانویه کاربر که به تأیید صریح (بله یا نه) نیاز دارد و میتواند از حالتهای ویژگی بهعنوان بازخورد پاسخ نیز استفاده کند. این نوع چالش برای دستگاهها و ویژگیهای امنیتی توصیه نمیشود.
- pinNeeded - درستیسنجی ثانویه کاربر که به شماره شناسایی شخصی (پین) نیاز دارد و برای دستگاهها و ویژگیهای امنیتی ایدهآل است.
بدون چالش
این مثال درخواست و پاسخ موفق EXECUTE را بدون چالش برای روشن کردن چراغها نشان میدهد.
| کاربر | چراغها را روشن کنید. |
| Google Assistant | بسیار خوب، ۳ چراغ را روشن میکنم. |
{ "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 میتواند بپرسد مطمئنید میخواهید گرمایش
دستگاه تهویه مطبوع را روی ۲۸ درجه تنظیم کنید؟
همچنین میتوانید وضعیتی را در پاسخ بگنجانید تا Assistant کنش خاصی را براساس درخواست ارائهشده انجام دهد.
ویژگیها و حالتهای زیر از ackNeeded با حالتهای ویژگی پشتیبانی میکنند. فهرست کردن یک ویژگی خاص نشان میدهد که همه حالتهای آن پشتیبانی میشود.
- ArmDisarm
- از نوع چالش
ackNeededبرای فعال کردن یا لغو فعال کردن دستگاه استفاده کنید، اما برای عملکردهای غیرفعال کردن و لغو غیرفعال کردن، نوع چالشpinNeededالزامی است. - Fill
- LockUnlock
- از نوع چالش
ackNeededبرای قفل کردن دستگاه و از نوع چالشpinNeededبرای باز کردن قفل استفاده کنید. - OnOff
on- از نوع چالش
ackNeededبرای این ویژگی استفاده کنید. وقتی از این ویژگی با دستگاههایCAMERAاستفاده میشود، نوع چالشpinNeededالزامی است. - OpenClose
- از نوع چالش
ackNeededبرای این ویژگی استفاده کنید. وقتی از این ویژگی با دستگاههایDOOR،GARAGE،GATE، یاWINDOWاستفاده میشود، نوع چالشpinNeededالزامی است. - Scene
- TemperatureSetting
thermostatModethermostatTemperatureSetpointthermostatTemperatureSetpointHighthermostatTemperatureSetpointLow
این مثال درخواست و پاسخی را با چالش ackNeeded نشان میدهد که
از وضعیت مشخصه استفاده میکند. این دستور حالت دستگاه تهویه مطبوع را به گرمایش تغییر میدهد و دما را روی ۲۸ درجه تنظیم میکند. سپس، Assistant از کاربران میخواهد
تأیید کنند که گرمایش روشن شود و دما روی ۲۸ درجه تنظیم شود،
زیرا thermostatTemperatureSetpoint 28 بهعنوان وضعیت
در پاسخ برگردانده شده است.
| کاربر | حالت تهویه مطبوع را روی گرما تنظیم کن. |
| 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.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 - Ok
فهرست کامل خطاها و استثناها را ببینید.