Secondary User Verification

二次ユーザー認証を使用すると、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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "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 リビングの照明を暗くします。
リクエスト 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
回答 1
で確認できます。
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
<ph type="x-smartling-placeholder">
</ph>
リクエスト 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
回答 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

トレイトの状態を伴う ackNeeded

ユーザーの確認応答の副次的な認証で、ユーザーの応答を あります。 たとえば、2024 年に TemperatureSetting トレイトと両方 thermostatModethermostatTemperatureSetpoint が設定されていると、 Assistant が「暖房を設定してもよろしいですか?」と尋ねることができます。 エアコンを 28 度に?

また、レスポンスに状態を含めて、 Assistant は、指定されたアクションに基づいて リクエストできます。

次のトレイトとその状態は、トレイトの状態を持つ ackNeeded をサポートします。 特定のトレイトがリストされている場合、そのすべての状態がサポートされていることを示します。

次の例は、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"
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
回答 1
で確認できます。
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
<ph type="x-smartling-placeholder">
</ph>
リクエスト 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
回答 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 が提供された場合と有効な 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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "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"
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "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"
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "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
          }
        }]
      }]
    }
  }]
}
<ph type="x-smartling-placeholder">
</ph>
対応
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

エラー レスポンス

以下は、レスポンスで返される可能性があるエラーコードです。

  • tooManyFailedAttempts - 試行回数が上限に達しました。 この操作を完了するには、デバイスのアプリに移動してください。
  • pinIncorrect - セキュリティ コードが正しくありません。
  • userCancelled - OK

エラーと例外の全リストをご覧ください。