次要使用者驗證

有了次要使用者驗證服務,你即可為語音通話增添雙重安全防護 指令這項功能可針對特定動作多添一層安全保障,例如: 關掉監視攝影機或關門。次要使用者驗證狀態: 不會受限於特定裝置特徵,讓您能決定何時要 Google Assistant發出挑戰。舉例來說,您可以選擇 發出 OnOff 特徵的挑戰 但不針對 OnOff 決定光明的特徵你也可以使用 Assistant 在某些情境下使用相同動作可能會遇到困難舉例來說, 可以要求Assistant發出挑戰要求: 除非 NFC 鑰匙圈不在該門附近,否則開門 如果鍵盤存在,則發出驗證問題。

Assistant 可發出兩種挑戰: 明確的確認號碼或個人識別碼 (PIN)。這麼做會新增 從 AssistantQUERYEXECUTE 意圖發出的挑戰區塊會傳回動作,並接受 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 正在調暗客廳的燈
要求 1
,瞭解如何調查及移除這項存取權。
{
  "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
          }
        }]
      }]
    }
  }]
}
回覆 1
,瞭解如何調查及移除這項存取權。
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
要求 2
,瞭解如何調查及移除這項存取權。
{
  "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
          }
        }]
      }]
    }
  }]
}
回覆 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

某些特徵狀態已確認

能使用狀態的次要使用者確認驗證 特徵。 舉例來說,如果您使用的是 TemperatureSetting 特徵,兩者皆是 thermostatModethermostatTemperatureSetpoint已設定完成。 Assistant可以詢問「確定要設定暖氣嗎? 將空調設為 28 度嗎?

您也可以在回應中加入狀態,以 「Assistant」會根據 請求。

下列特徵和狀態支援直向狀態的 ackNeeded。A 罩杯 特定特徵的清單表示支援它的所有狀態。

本例中顯示的要求與回應,有 ackNeeded 挑戰: 會用特徵狀態這個模式會將空調模式調整為暖氣模式 溫度設為 28 度接著,Assistant 會要求使用者 ,確認開啟暖氣並將溫度設為 28 距離傳回 thermostatTemperatureSetpoint28 狀態 回應。

使用者 將空調模式設為暖氣模式。
Google Assistant 確定要將空調的暖氣設為 28 嗎? 幾度?
使用者 是。
Google Assistant 正在將空調的暖氣設為 28 度
要求 1
,瞭解如何調查及移除這項存取權。
{
  "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"
          }
        }]
      }]
    }
  }]
}
回覆 1
,瞭解如何調查及移除這項存取權。
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
要求 2
,瞭解如何調查及移除這項存取權。
{
  "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
          }
        }]
      }]
    }
  }]
}
回覆 2
{
  "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 - 確定

查看完整清單 錯誤和例外狀況