Tính năng xác minh người dùng thứ hai cho phép bạn thêm cơ chế bảo mật yếu tố thứ hai vào lệnh thoại. Tính năng này giúp bạn tăng cường bảo mật cho một số hành động như tắt camera an ninh hoặc mở cửa. Quy trình xác minh người dùng phụ không gắn liền với một đặc điểm cụ thể của thiết bị, cho phép bạn quyết định thời điểm yêu cầu Google Assistant đưa ra thử thách. Ví dụ: bạn có thể chọn đưa ra thử thách cho đặc điểm OnOff của camera bảo mật, nhưng không đưa ra thử thách đối với đặc điểm OnOff đối với đèn. Bạn cũng có thể gặp phải các thử thách vấn đề Assistant trong một số tình huống nhất định cho cùng một hành động. Ví dụ: bạn có thể yêu cầu Assistant đưa ra yêu cầu thử thách mở cửa nếu khoá từ xa NFC không ở gần cửa đó, nhưng không được đặt thử thách nếu có.
Assistant có thể đưa ra 2 loại thử thách – xác nhận rõ ràng hoặc mã nhận dạng cá nhân (PIN). Thao tác này sẽ thêm một khối thử thách vào các ý định QUERY
và EXECUTE
được gửi từ Assistant trở lại thao tác của bạn và chấp nhận phản hồi lỗi challengeNeeded
. Sau đó, Assistant sẽ gửi lại yêu cầu ý định đến hành động của bạn cùng với dữ liệu về thử thách trong khối thử thách. Sau đó, bạn có thể xác thực dữ liệu thử thách để xác định xem người dùng đã đưa ra phản hồi bảo mật chính xác hay chưa.
Assistant sử dụng hộp thoại để đưa ra thử thách, nhưng nếu bạn sử dụng Assistant trên các nền tảng không phải bằng giọng nói, thì mã PIN và thông báo xác nhận sẽ hoàn tất trên màn hình.
Loại thiết bị được hỗ trợ
Phương thức xác minh thứ hai cho người dùng được hỗ trợ trên tất cả các loại thiết bị.
Trait được hỗ trợ của thiết bị
Quy trình xác minh người dùng thứ hai được hỗ trợ cho tất cả đặc điểm của thiết bị.
Các loại thử thách được hỗ trợ
Sau đây là các loại thử thách xác minh người dùng thứ hai được hỗ trợ:
- Không có thử thách – Yêu cầu và phản hồi không sử dụng thử thách xác minh người dùng phụ.
- ackNeeded – Quy trình xác minh thứ hai dành cho người dùng yêu cầu xác nhận rõ ràng (có hoặc không) và cũng có thể sử dụng các trạng thái trait làm phản hồi phản hồi. Bạn không nên dùng loại thử thách này cho các thiết bị và đặc điểm bảo mật.
- pinNeeded – Quy trình xác minh thứ hai dành cho người dùng yêu cầu mã số nhận dạng cá nhân (PIN). Đây là mã số lý tưởng cho các thiết bị và đặc điểm bảo mật.
Không có thử thách
Ví dụ này cho thấy một yêu cầu và phản hồi EXECUTE
thành công mà không gặp khó khăn khi bật đèn.
User | Bật đèn. |
Google Assistant | Được rồi, tôi đang bật 3 đèn. |
{ "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
Phương thức xác thực phụ người dùng có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc cho một quy trình xác thực xác nhận đơn giản.
Có các loại thử thách ackNeeded
sau:
Cần đơn giản
Ví dụ này cho thấy một yêu cầu và phản hồi đơn giản với thử thách ackNeeded
giảm độ sáng và thông báo xác nhận giảm độ sáng của đèn.
User | Giảm độ sáng đèn phòng khách. |
Google Assistant | Tôi đang giảm độ sáng đèn phòng khách. Bạn có chắc chắn không? |
User | Có. |
Google Assistant | Tôi đang giảm độ sáng đèn phòng khách. |
{ "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" }] } }
Cần có các trạng thái trait
Phương thức xác thực phụ xác nhận người dùng có thể sử dụng các trạng thái cho một đặc điểm.
Ví dụ: nếu bạn đang làm việc với đặc điểm TemperatureSetting và cả thermostatMode
và thermostatTemperatureSetpoint
đều được đặt, Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm trên máy điều hoà ở mức 28 độ không?
Bạn cũng có thể đưa trạng thái vào phản hồi để yêu cầu Assistant thực hiện một hành động cụ thể dựa trên một yêu cầu nhất định.
Các đặc điểm và trạng thái sau đây hỗ trợ ackNeeded
với các trạng thái trait. Danh sách một đặc điểm cụ thể cho biết tất cả các trạng thái của đặc điểm đó đều được hỗ trợ.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Ví dụ này cho thấy một yêu cầu và phản hồi có thử thách ackNeeded
sử dụng trạng thái trait. Tính năng này sẽ chuyển chế độ điều hoà không khí sang chế độ sưởi ấm và đặt nhiệt độ ở mức 28 độ. Sau đó, Assistant yêu cầu người dùng xác nhận bật chế độ sưởi ấm và đặt nhiệt độ ở mức 28 độ vì thermostatTemperatureSetpoint
của 28
được trả về dưới dạng trạng thái trong phản hồi.
User | Đặt chế độ AC ở chế độ sưởi ấm. |
Google Assistant | Bạn có chắc chắn muốn đặt mức nhiệt trên điều hoà ở mức 28 độ không? |
User | Có. |
Google Assistantnt | Tôi đang đặt mức nhiệt trên điều hoà ở mức 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
Thử thách pinNeeded
được đề xuất cho các thiết bị bảo mật.
Ví dụ này cho thấy yêu cầu và phản hồi ban đầu có thử thách pinNeeded
. Ví dụ này trả về một phản hồi có thử thách pinNeeded
, vì vậy Assistant yêu cầu mã PIN. Tại thời điểm này, người dùng có thể cung cấp mã PIN không chính xác hoặc hợp lệ.
Yêu cầu và phản hồi mẫu về mã PIN không chính xác hoặc hợp lệ:
User | Mở khoá cửa. |
Google Assistant | Bạn có thể cho tôi biết mã bảo mật của bạn không? |
{ "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" } }] } }
Mã PIN không chính xác
Ví dụ này cho thấy yêu cầu và phản hồi có thử thách challengeFailedPinNeeded
. Thử thách này nên được sử dụng sau khi thử thách pinNeeded
ban đầu không thành công.
Khi một loại challengeFailedPinNeeded
được trả về, Assistant sẽ yêu cầu lại mã bảo mật. Nếu người dùng thực hiện quá nhiều lần thử không thành công, bạn có thể trả về một phản hồi lỗi tooManyFailedAttempts
. Hãy xem mục Phản hồi lỗi.
User | 333222 |
Google Assistant | Rất tiếc, mã bảo mật không chính xác. Bạn có thể cho tôi biết mã bảo mật của bạn không? |
{ "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" } }] } }
Mã PIN hợp lệ
Ví dụ này cho thấy yêu cầu và phản hồi của một mã PIN hợp lệ.
User | 333444 |
Google Assistant | Đang mở khoá cửa. |
{ "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 } }] } }
User | Giảm độ sáng đèn phòng khách. |
Google Assistant | Bạn có thể cho tôi biết mã bảo mật của bạn không? |
{ "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" } }] } }
Phản hồi lỗi
Dưới đây là một số mã lỗi có thể được trả về cùng với phản hồi của bạn:
- tooManyFailedAttempts – Rất tiếc, đã có quá nhiều lần thử không thành công. Vui lòng chuyển đến ứng dụng của thiết bị để hoàn tất thao tác đó.
- pinIncorrect – Rất tiếc, mã bảo mật không chính xác.
- userCancelled (Người dùng đã huỷ) – Ok
Xem danh sách đầy đủ các lỗi và ngoại lệ.