Phương thức 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 cho dịch vụ thoại các lệnh. Nhờ đó, bạn có thể tăng cường bảo mật cho một số thao tác như tắt camera an ninh hoặc mở cửa. Phương thức xác minh người dùng phụ mới là không gắ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 Google Assistant đưa ra một xác thực. Ví dụ: bạn có thể chọn để đưa ra thử thách cho tính trạng OnOff cho một camera an ninh, nhưng không đưa ra thách thức OnOff đối với ánh sáng. Bạn cũng có thể có Assistant đưa ra thách thức trong những 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 xác thực để mở cửa nếu thiết bị điều khiển từ xa sử dụng công nghệ NFC không ở gần cửa nhưng không đưa ra thử thách nếu có keyfob.
Assistant có thể đưa ra hai loại thử thách:
mã xác nhận rõ ràng hoặc mã số nhận dạng cá nhân (PIN). Điều này sẽ thêm
khối thử thách đối với ý định QUERY
và EXECUTE
được gửi từ Assistant trở lại hành động của bạn và chấp nhận lỗi challengeNeeded
của bạn. Sau đó, Assistant gửi lại yêu cầu ý định đến
hành động của mình 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 đã cung cấp mức độ bảo mật chính xác hay chưa
của bạn.
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 giọng nói, mã PIN và 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 thứ hai.
- ackNeeded – Xác minh người dùng phụ 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 như và phản hồi trong câu trả lời. Bạn không nên dùng loại thử thách này cho mục đích bảo mật thiết bị và đặc điểm kỹ thuật số.
- pinNeeded – Quy trình xác minh người dùng phụ 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ị bảo mật và đặc điểm riêng của mình.
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 có
thử thách 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ụ xác nhận người dùng có thể sử dụng nhiều trạng thái cho một trait hoặc một 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 có thử thách ackNeeded
để giảm độ sáng và 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
đặc điểm cơ thể.
Ví dụ: nếu bạn đang làm việc với
TemperatureSetting trait và cả hai
thermostatMode
và thermostatTemperatureSetpoint
đã được đặt,
Assistant có thể hỏi Bạn có chắc chắn muốn đặt chế độ sưởi ấm không
để điều hoà không khí ở mức 28 độ C?
Bạn cũng có thể đưa trạng thái vào câu trả lời để có Assistant thực hiện một hành động cụ thể dựa trên một hành động cụ thể của bạn.
Các đặc điểm và trạng thái sau đây hỗ trợ ackNeeded
với các trạng thái trait. Đáp
việc liệt kê một đặc điểm cụ thể cho biết rằng 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. Nút này chuyển chế độ điều hoà không khí sang chế độ sưởi ấm và đặt
nâng nhiệt độ lên 28 độ. Sau đó, Assistant yêu cầu người dùng
để xác nhận bật hệ thống sưởi và đặt nhiệt độ ở mức 28
độ vì thermostatTemperatureSetpoint
của 28
được trả về dưới dạng trạng thái
trong câu trả lời.
User | Đặt chế độ AC ở chế độ sưởi ấm. |
Google Assistant | Bạn có chắc chắn muốn đặt nhiệt độ sưởi ấm trên điều hoà ở mức 28 không độ? |
User | Có. |
Google Assistant | 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ó pinNeeded
thử thách. 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 ghim. 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ó challengeFailedPinNeeded
thử thách. Thử thách này nên được sử dụng sau thử thách pinNeeded
ban đầu
không thành công.
Khi một loại challengeFailedPinNeeded
được trả về,
Assistant yêu cầu cấp mã bảo mật một lần nữa. 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ề tooManyFailedAttempts
của bạn. 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 toàn bộ danh sách lỗi và ngoại lệ.