二次ユーザー認証を使用すると、Voice に第 2 要素のセキュリティを追加できます 使用できます。これにより、次のような特定のアクションのセキュリティを強化できます。 セキュリティ カメラをオフにする、ドアを開けるといった操作です。第二のユーザー確認は 特定のデバイス トレイトに関連付けられていないため、 Google Assistant さんがチャレンジを発行しました。たとえば、 OnOff トレイトのチャレンジを発行し、 セキュリティ カメラでは認識されず、 OnOff 定義します。Assistant も可能です。 特定の状況で、同じアクションでも課題を発行できます。たとえば、 Assistant がチャレンジ リクエストを発行するようリクエストできます。 NFC キーフォブがドアの近くにない場合はドアを開けるが、 キーフォブが存在する場合はチャレンジを発行します。
Assistant は、次の 2 種類のチャレンジを発行できます。
明示的な確認応答または個人識別番号(PIN)です。これにより、
Assistant からアクションに返される QUERY
インテントと EXECUTE
インテントへのチャレンジ ブロック。challengeNeeded
エラーを受け入れます。
レスポンスが返されます。Assistant がインテント リクエストを
チャレンジ ブロックのチャレンジ データでアクションを実行します。その後、
チャレンジ データを検証して、ユーザーが適切なセキュリティを提供したかどうかを判断します。
レスポンスが返されます。
Assistant はダイアログを使用してチャレンジを発行しますが、 Assistant を音声以外のサーフェス、PIN、 確認が画面に表示されます。
サポートされているデバイスタイプ
Secondary User Verification はすべてのデバイスタイプでサポートされています。
サポートされているデバイス トレイト
Secondary User Verification はすべてのデバイス トレイトでサポートされています。
サポートされているチャレンジの種類
Secondary User Verification がサポートされているチャレンジの種類は以下のとおりです。
- チャレンジなし - Secondary User Verification チャレンジを使用しないリクエストとレスポンス。
- ackNeeded - 認証を必要とする 2 次的なユーザー確認 明示的な確認応答(はい / いいえ)で応答できます。また、トレイトの状態を 回答のフィードバック。このチャレンジの種類は、セキュリティ上の理由からおすすめしません サポートしています。
- 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
以下の例は、照明を暗くするために 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" }] } }
トレイトの状態を伴う ackNeeded
ユーザーの確認応答の副次的な認証で、ユーザーの応答を
あります。
たとえば、2024 年に
TemperatureSetting トレイトと両方
thermostatMode
と thermostatTemperatureSetpoint
が設定されていると、
Assistant が「暖房を設定してもよろしいですか?」と尋ねることができます。
エアコンを 28 度に?
また、レスポンスに状態を含めて、 Assistant は、指定されたアクションに基づいて リクエストできます。
次のトレイトとその状態は、トレイトの状態を持つ ackNeeded
をサポートします。
特定のトレイトがリストされている場合、そのすべての状態がサポートされていることを示します。
- 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 が提供された場合と有効な 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 - OK
エラーと例外の全リストをご覧ください。