有了次要使用者驗證服務,你即可為語音通話增添雙重安全防護 指令這項功能可針對特定動作多添一層安全保障,例如: 關掉監視攝影機或關門。次要使用者驗證狀態: 不會受限於特定裝置特徵,讓您能決定何時要 Google Assistant發出挑戰。舉例來說,您可以選擇 發出 OnOff 特徵的挑戰 但不針對 OnOff 決定光明的特徵你也可以使用 Assistant 在某些情境下使用相同動作可能會遇到困難舉例來說, 可以要求Assistant發出挑戰要求: 除非 NFC 鑰匙圈不在該門附近,否則開門 如果鍵盤存在,則發出驗證問題。
Assistant 可發出兩種挑戰:
明確的確認號碼或個人識別碼 (PIN)。這麼做會新增
從 Assistant 向 QUERY
和 EXECUTE
意圖發出的挑戰區塊會傳回動作,並接受 challengeNeeded
錯誤
回應。接著,Assistant 會將意圖要求傳回給
將隨著挑戰資料中的挑戰資料提供給您的動作。接著
驗證驗證資料,以判斷使用者是否提供正確的安全性
回應。
Assistant 使用對話方塊發出挑戰,但如果您 使用 Assistant 透過非語音介面、PIN 碼和 確認會在畫面上顯示。
支援的裝置類型
所有裝置類型都支援次要使用者驗證。
支援的裝置 traits
所有裝置特徵都支援次要使用者驗證。
支援的驗證類型
系統支援的次要使用者驗證驗證類型如下:
- 無驗證問題 - 未使用 次要使用者驗證挑戰。
- 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
驗證類型:
確認需求 (簡易)
本範例顯示了具有 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
。A 罩杯
特定特徵的清單表示支援它的所有狀態。
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
本例中顯示的要求與回應,有 ackNeeded
挑戰:
會用特徵狀態這個模式會將空調模式調整為暖氣模式
溫度設為 28 度接著,Assistant 會要求使用者
,確認開啟暖氣並將溫度設為 28
距離傳回 thermostatTemperatureSetpoint
的 28
狀態
回應。
使用者 | 將空調模式設為暖氣模式。 |
Google Assistant | 確定要將空調的暖氣設為 28 嗎? 幾度? |
使用者 | 是。 |
Google Assistant 歲 | 正在將空調的暖氣設為 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
的初始要求和回應
挑戰。這個範例會傳回包含 pinNeeded
挑戰的回應,因此
Assistant要求提供 PIN 碼。此時,使用者可以
提供錯誤或有效的 PIN 碼。
以下是錯誤或有效 PIN 碼的要求與回應範例:
,瞭解如何調查及移除這項存取權。使用者 | 將門解鎖。 |
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" } }] } }
PIN 不正確
以下範例顯示了含有 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" } }] } }
有效的 PIN 碼
本範例顯示了有效 PIN 碼的要求和回應。
使用者 | 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 - 確定
查看完整清單 錯誤和例外狀況。