تأیید کاربر ثانویه به شما امکان می دهد امنیت عامل دوم را به دستورات صوتی اضافه کنید. این به شما امکان می دهد امنیت بیشتری را برای اقدامات خاصی مانند خاموش کردن دوربین امنیتی یا باز کردن درب اضافه کنید. راستیآزمایی کاربر ثانویه به یک ویژگی دستگاه خاص مرتبط نیست که به شما امکان میدهد تصمیم بگیرید چه زمانی باید Google Assistant به چالش بکشید. به عنوان مثال، میتوانید برای یک دوربین امنیتی چالشی برای ویژگی OnOff صادر کنید، اما برای یک نور چالشی برای ویژگی OnOff صادر نکنید. همچنین میتوانید در موقعیتهای خاص برای همان اقدام، چالشهایی Assistant داشته باشید. برای مثال، میتوانید از Assistant درخواست کنید در صورتی که صفحه کلید NFC در مجاورت آن در نباشد، یک درخواست چالشی برای باز کردن درب صادر کند، اما اگر صفحه کلید موجود باشد، چالشی را صادر نکند.
Assistant می تواند دو نوع چالش صادر کند - تأیید صریح یا شماره شناسایی شخصی (PIN). این یک بلوک چالش را به QUERY
و اهداف EXECUTE
ارسال شده از Assistant به عمل شما اضافه می کند و پاسخ خطای challengeNeeded
را می پذیرد. سپس Assistant درخواست قصد را با دادههای چالش در بلوک چالش به عمل شما برمیگرداند. سپس میتوانید دادههای چالش را تأیید کنید تا مشخص کنید آیا کاربر پاسخ امنیتی صحیحی را ارائه کرده است یا خیر.
Assistant از گفتگو برای ایجاد چالش استفاده میکند، اما اگر Assistant در سطوح غیر صوتی استفاده میکنید، پین و تأیید روی صفحه انجام میشود.
تأیید کاربر ثانویه در همه انواع دستگاه پشتیبانی می شود.
تأیید کاربر ثانویه برای همه ویژگیهای دستگاه پشتیبانی میشود.
اینها انواع چالش تأیید کاربر ثانویه پشتیبانی شده هستند:
- بدون چالش - درخواست و پاسخی که از چالش تأیید کاربر ثانویه استفاده نمی کند.
- ackNeeded - یک تأیید کاربر ثانویه که نیاز به تأیید صریح (بله یا خیر) دارد و همچنین میتواند از حالتهای ویژگی به عنوان بازخورد پاسخ استفاده کند. این نوع چالش برای دستگاه ها و ویژگی های امنیتی توصیه نمی شود.
- pinNeeded - یک تأیید کاربر ثانویه که به شماره شناسایی شخصی (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 nt | حرارت کولر گازی را روی 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" } }] } }
این مثال درخواست و پاسخ را با چالش 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 - با عرض پوزش، کد امنیتی نادرست است.
- کاربر لغو شد - بسیار خوب
لیست کامل خطاها و استثناها را ببینید.