Sekundäre Nutzerbestätigung

Mit der sekundären Nutzerbestätigung können Sie Sprachbefehlen eine Zwei-Faktor-Authentifizierung hinzufügen. So können Sie für bestimmte Aktionen wie das Ausschalten einer Sicherheitskamera oder das Öffnen einer Tür zusätzliche Sicherheit hinzufügen. Die sekundäre Nutzerbestätigung ist nicht an eine bestimmte Geräteeigenschaft gebunden. Sie können also selbst entscheiden, wann Google Assistant eine Bestätigungsaufforderung stellen soll. Sie können beispielsweise eine Bestätigung für das Attribut OnOff für eine Sicherheitskamera ausstellen, aber keine Bestätigung für das Attribut OnOff für eine Lampe. In bestimmten Situationen kann es auch vorkommen, dass Assistant-Herausforderungen für dieselbe Aktion gestellt werden. Sie können beispielsweise anfordern, dass Assistant eine Bestätigungsanfrage zum Öffnen einer Tür stellt, wenn sich kein NFC-Schlüsselanhänger in der Nähe dieser Tür befindet, aber keine Bestätigungsanfrage stellt, wenn sich der Schlüsselanhänger dort befindet.

Der Assistant kann zwei Arten von Bestätigungen ausstellen: explizite Bestätigung oder persönliche Identifikationsnummer (PIN). Dadurch wird QUERY- und EXECUTE-Intentions, die von Assistant an deine Aktion gesendet werden, ein Bestätigungsblock hinzugefügt und eine challengeNeeded-Fehlerantwort akzeptiert. Assistant sendet dann die Intent-Anfrage mit den Daten des Bestätigungsblocks an Ihre Aktion zurück. Sie können dann die Daten der Bestätigungsaufforderung prüfen, um festzustellen, ob der Nutzer die richtige Sicherheitsantwort gegeben hat.

Assistant verwendet einen Dialog, um die Bestätigungsanfrage zu stellen. Wenn Sie Assistant jedoch auf Oberflächen ohne Sprachfunktion verwenden, werden PIN und Bestätigungen auf dem Bildschirm angezeigt.

Unterstützte Gerätetypen

Die sekundäre Nutzerbestätigung wird auf allen Gerätetypen unterstützt.

Unterstützte Geräte-Traits

Die sekundäre Nutzerbestätigung wird für alle Gerätemerkmale unterstützt.

Unterstützte Arten der Identitätsbestätigung

Folgende Arten von Bestätigungsaufforderungen für die sekundäre Nutzerbestätigung werden unterstützt:

  • Keine Bestätigungsaufforderung: Eine Anfrage und Antwort, bei der keine sekundäre Bestätigungsaufforderung für Nutzer verwendet wird.
  • ackNeeded: Eine sekundäre Nutzerbestätigung, die eine explizite Bestätigung („Ja“ oder „Nein“) erfordert und auch Merkmalsstatus als Antwortfeedback verwenden kann. Dieser Bestätigungstyp wird für Sicherheitsgeräte und ‑merkmale nicht empfohlen.
  • pinNeeded: Eine sekundäre Nutzerbestätigung, für die eine persönliche Identifikationsnummer (PIN) erforderlich ist. Ideal für Sicherheitsgeräte und ‑merkmale.

Keine Herausforderung

In diesem Beispiel sind eine erfolgreiche EXECUTE-Anfrage und ‑Antwort ohne Herausforderung zum Einschalten der Lampen zu sehen.

Nutzer Schalten Sie das Licht ein.
Google Assistant Ok, ich schalte drei Lampen ein.
Anfrage
{
  "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
          }
        }]
      }]
    }
  }]
}
Antwort
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Eine sekundäre Nutzerbestätigungsauthentifizierung, die mehrere Status für ein Merkmal oder eine einfache Bestätigungsauthentifizierung verwenden kann.

Es gibt die folgenden Arten von ackNeeded-Herausforderungen:

ackNeeded simple

Dieses Beispiel zeigt eine einfache Anfrage und Antwort mit einer ackNeeded-Anfrage zum Dimmen einer Lampe und der Bestätigung zum Dimmen der Lampe.

Nutzer Dimme das Licht im Wohnzimmer.
Google Assistant Das Licht im Wohnzimmer wird gedimmt. Sind Sie sicher?
Nutzer Ja.
Google Assistant Das Licht im Wohnzimmer wird gedimmt.
Anfrage 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
          }
        }]
      }]
    }
  }]
}
Antwort 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Anfrage 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
          }
        }]
      }]
    }
  }]
}
Antwort 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackNeeded mit Merkmalsstatus

Eine Authentifizierung durch Bestätigung eines sekundären Nutzers, bei der Status für ein Merkmal verwendet werden können. Wenn Sie beispielsweise mit dem Attribut TemperatureSetting arbeiten und sowohl thermostatMode als auch thermostatTemperatureSetpoint festgelegt sind, kann Assistant fragen: Sind Sie sicher, dass Sie die Heizung der Klimaanlage auf 28 Grad einstellen möchten?

Sie können auch einen Status in eine Antwort aufnehmen, damit Assistant auf Grundlage einer bestimmten Anfrage eine bestimmte Aktion ausführt.

Die folgenden Merkmale und Status unterstützen ackNeeded mit Merkmalsstatus. Wenn ein bestimmtes Merkmal aufgeführt ist, werden alle zugehörigen Status unterstützt.

In diesem Beispiel sind eine Anfrage und eine Antwort mit einer ackNeeded-Herausforderung zu sehen, bei der ein Merkmalstatus verwendet wird. Der Modus der Klimaanlage wird auf „Heizen“ umgestellt und die Temperatur auf 28 Grad festgelegt. Anschließend bittet Assistant den Nutzer um Bestätigung, dass die Heizung eingeschaltet und die Temperatur auf 28 Grad eingestellt werden soll, da in der Antwort ein thermostatTemperatureSetpoint von 28 als Status zurückgegeben wird.

Nutzer Stellen Sie den Klimaanlagenmodus auf „Heizen“ ein.
Google Assistant Sind Sie sicher, dass Sie die Heizung der Klimaanlage auf 28 Grad einstellen möchten?
Nutzer Ja.
Google Assistant Die Temperatur der Klimaanlage wird auf 28 Grad gestellt.
Anfrage 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"
          }
        }]
      }]
    }
  }]
}
Antwort 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Anfrage 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
          }
        }]
      }]
    }
  }]
}
Antwort 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Die pinNeeded-Anfrage wird für Sicherheitsgeräte empfohlen.

Dieses Beispiel zeigt eine erste Anfrage und Antwort mit einer pinNeeded-Anfrage. Im Beispiel wird eine Antwort mit einer pinNeeded-Herausforderung zurückgegeben. Daher fordert Assistant die PIN an. An dieser Stelle kann der Nutzer eine falsche oder gültige PIN eingeben.

Beispiel für eine Anfrage und Antwort bei einer falschen oder gültigen PIN:

Nutzer Entriegeln Sie die Tür.
Google Assistant Können Sie mir Ihren Sicherheitscode nennen?
Anfrage
{
  "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
          }
        }]
      }]
    }
  }]
}
Antwort
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Falsche PIN

Dieses Beispiel zeigt die Anfrage und Antwort mit einer challengeFailedPinNeeded-Anfrage. Dieser Authentifizierungsvorgang sollte verwendet werden, wenn eine erste pinNeeded-Authentifizierung fehlgeschlagen ist.

Wenn ein challengeFailedPinNeeded-Typ zurückgegeben wird, wird von Assistant noch einmal nach dem Sicherheitscode gefragt. Wenn der Nutzer zu viele Fehlversuche unternimmt, kannst du eine tooManyFailedAttempts-Fehlerantwort zurückgeben. Weitere Informationen finden Sie unter Fehlerantworten.

Nutzer 333222
Google Assistant Der Sicherheitscode ist leider falsch. Können Sie mir Ihren Sicherheitscode nennen?
Anfrage
{
  "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"
          }
        }]
      }]
    }
  }]
}
Antwort
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

Gültige PIN

In diesem Beispiel sind die Anfrage und die Antwort für eine gültige PIN zu sehen.

Nutzer 333444
Google Assistant Die Tür wird entriegelt.
Anfrage
{
  "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"
          }
        }]
      }]
    }
  }]
}
Antwort
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Nutzer Dimme das Licht im Wohnzimmer.
Google Assistant Können Sie mir Ihren Sicherheitscode nennen?
Anfrage
{
  "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
          }
        }]
      }]
    }
  }]
}
Antwort
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Fehlerantworten

Im Folgenden sind einige Fehlercodes aufgeführt, die mit Ihren Antworten zurückgegeben werden können:

  • tooManyFailedAttempts – Tut mir leid, zu viele fehlgeschlagene Versuche. Schließ den Vorgang in der App deines Geräts ab.
  • pinIncorrect – Der Sicherheitscode ist leider falsch.
  • userCancelled – Ok

Eine vollständige Liste der Fehler und Ausnahmen