Tính năng bước thứ hai để xác minh người dùng cho phép bạn thêm lớp bảo mật thứ hai vào lệnh thoại. Việc này giúp bạn tăng cường bảo mật cho một số hành động nhất định, chẳng hạn như tắt camera an ninh hoặc mở cửa. Bước thứ hai để xác minh người dùng không liên kết 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 thử thách. Ví dụ: bạn có thể chọn đưa ra thử thách cho đặc điểm OnOff của camera an ninh, nhưng không đưa ra thử thách cho đặc điểm OnOff của đèn. Bạn cũng có thể yêu cầu Assistant đưa ra câu hỏi xác minh trong một số trường hợp 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 chìa khoá NFC không ở gần cửa đó, nhưng không đưa ra yêu cầu xác thực nếu chìa khoá đó có mặt.
Assistant có thể đưa ra hai loại thử thách – xác nhận rõ ràng hoặc mã số 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 ý định QUERY và EXECUTE được gửi từ Assistant trở lại hành động 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 về ý định cho hành động của bạn cùng với dữ liệu xác minh trong khối xác minh. Sau đó, bạn có thể xác thực dữ liệu thử thách để xác định xem người dùng có đưa ra câu trả lời bảo mật chính xác hay không.
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 có giọng nói, thì mã PIN và thông tin xác nhận sẽ được thực hiện trên màn hình.
Trường hợp sử dụng bước thứ hai để xác minh người dùng
Bạn có thể bật bước thứ hai để xác minh người dùng cho bất kỳ loại thiết bị hoặc đặc điểm nào. Tuy nhiên, bạn phải triển khai bước thứ hai để xác minh người dùng cho một số loại thiết bị và đặc điểm nhạy cảm về bảo mật để được chứng nhận tích hợp.
Bạn phải thực hiện bước thứ hai để xác minh người dùng bằng loại thử thách pinNeeded cho các kiểu kết hợp đặc điểm và loại thiết bị sau:
- Đặc điểm
OnOffnếu loại thiết bị làCAMERA. - Đặc điểm
OpenClosenếu loại thiết bị làDOOR,GARAGE,GATEhoặcWINDOW. - Đặc điểm
LockUnlockkhi mở khoá. - Đặc điểm
ArmDisarmkhi tắt hoặc huỷ tắt. - Đặc điểm
Reboot,SoftwareUpdatehoặcNetworkControlnếu loại thiết bị làNETWORKhoặcROUTER.
Bạn phải có loại thử thách ackNeeded cho đặc điểm TemperatureSetting nếu loại thiết bị là AC_UNIT và vị trí tích hợp là Nhật Bản.
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 phụ được hỗ trợ:
- Không có bước xác minh thứ hai – Yêu cầu và phản hồi không sử dụng bước thứ hai để xác minh người dùng.
- ackNeeded – Bước thứ hai để xác minh 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 trạng thái đặc điểm làm ý kiến 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 – Bước thứ hai để xác minh người dùng, yêu cầu mã số nhận dạng cá nhân (PIN). Bước này phù hợp với các thiết bị và đặc điểm bảo mật.
Không có thử thách nào
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.
| Người dùng | 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 xác nhận người dùng phụ có thể sử dụng nhiều trạng thái cho một đặc điểm hoặc phương thức xác thực xác nhận đơn giản.
Có các loại thử thách ackNeeded sau:
ackNeeded simple
Ví dụ này cho thấy một yêu cầu và phản hồi đơn giản với câu hỏi xác minh ackNeeded để giảm độ sáng của đèn và xác nhận giảm độ sáng của đèn.
| Người dùng | Giảm độ sáng đèn phòng khách. |
| Google Assistant | Tôi đang giảm độ sáng của đèn phòng khách. Bạn có chắc chắn không? |
| Người dùng | Có. |
| Google Assistant | Tôi đang giảm độ sáng của đè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" }] } }
ackNeeded với trạng thái đặc điểm
Phương thức xác thực xác nhận người dùng phụ 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, thì Assistant có thể hỏi Bạn có chắc chắn muốn đặt nhiệt độ trên máy điều hoà không khí thành 28 độ không?
Bạn cũng có thể đưa trạng thái vào phản hồi để 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 có trạng thái đặc điểm. Việc liệt kê một đặc điểm cụ thể cho biết tất cả trạng thái của đặc điểm đó đều được hỗ trợ.
- ArmDisarm
- Sử dụng loại thử thách
ackNeededđể kích hoạt hoặc huỷ kích hoạt thiết bị, nhưng đối với các chức năng tắt và huỷ tắt, bạn phải sử dụng loại thử tháchpinNeeded. - Fill
- LockUnlock
- Sử dụng loại thử thách
ackNeededđể khoá thiết bị và loại thử tháchpinNeededđể mở khoá. - OnOff
on- Hãy sử dụng loại thử thách
ackNeededcho đặc điểm này. Bạn phải sử dụng loại thử tháchpinNeededkhi dùng đặc điểm này với thiết bịCAMERA. - OpenClose
- Hãy sử dụng loại thử thách
ackNeededcho đặc điểm này. Bạn phải sử dụng loại thử tháchpinNeededkhi dùng đặc điểm này với thiết bịDOOR,GARAGE,GATEhoặcWINDOW. - Scene
- TemperatureSetting
thermostatModethermostatTemperatureSetpointthermostatTemperatureSetpointHighthermostatTemperatureSetpointLow
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 đặc điểm. Thao tác này sẽ chuyển chế độ của máy điều hoà không khí sang chế độ sưởi ấm và đặt nhiệt độ thành 28 độ. Sau đó, Assistant yêu cầu người dùng xác nhận để bật chế độ sưởi và đặt nhiệt độ thành 28 độ vì thermostatTemperatureSetpoint của 28 được trả về dưới dạng trạng thái trong phản hồi.
| Người dùng | Đặt chế độ điều hoà không khí ở mức sưởi ấm. |
| Google Assistant | Bạn có chắc chắn muốn đặt chế độ sưởi ấm của máy điều hoà không khí ở mức 28 độ không? |
| Người dùng | Có. |
| Google Assistant | Tôi đang đặt chế độ sưởi ấm của máy điều hoà không khí ở 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
Bạn nên dùng thử thách pinNeeded 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 sẽ 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 cho mã PIN không chính xác hoặc hợp lệ:
| Người dùng | 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ó câu hỏi xác minh challengeFailedPinNeeded. Bạn nên sử dụng thử thách này sau khi thử thách pinNeeded ban đầu không thành công.
Khi loại challengeFailedPinNeeded được trả về, Assistant sẽ yêu cầu nhập 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ề phản hồi lỗi tooManyFailedAttempts. Xem phần Phản hồi lỗi.
| Người dùng | 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ệ.
| Người dùng | 333444 |
| Google Assistant | Tôi đ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 } }] } }
| Người dùng | 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
Sau đâ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, bạn đã nhập sai quá nhiều lần. Vui lòng truy cập vào ứng dụng trên thiết bị của bạn để hoàn tất thao tác đó.
- pinIncorrect – Rất tiếc, mã bảo mật không chính xác.
- userCancelled – Ok
Xem danh sách đầy đủ các lỗi và trường hợp ngoại lệ.