Mit der sekundären Nutzerbestätigung können Sie Sprachbefehlen einen zweiten Sicherheitsfaktor hinzufügen. So können Sie bestimmte Aktionen zusätzlich schützen, z. B. das Deaktivieren einer Sicherheitskamera oder das Öffnen einer Tür. Die sekundäre Nutzerbestätigung ist nicht an ein bestimmtes Gerätemerkmal gebunden. So können Sie entscheiden, wann Google Assistant eine Aufgabe ausgeben soll. Sie können beispielsweise eine Aufgabe für das OnOff Merkmal einer Sicherheitskamera ausgeben, aber nicht für das OnOff Merkmal einer Lampe. Sie können Assistant auch in bestimmten Situationen für dieselbe Aktion Assistant Aufgaben ausgeben lassen. Beispielsweise können Sie festlegen, dass Assistant eine Aufgabe zum Öffnen einer Tür ausgibt, wenn sich kein NFC-Schlüsselanhänger in der Nähe der Tür befindet. Wenn der Schlüsselanhänger vorhanden ist, soll keine Aufgabe ausgegeben werden.
Der Assistant kann zwei Arten von Aufgaben ausgeben:
eine explizite Bestätigung oder eine persönliche Identifikationsnummer (PIN). Dadurch wird den QUERY- und EXECUTE-Intents, die von Assistant an Ihre Aktion zurückgesendet werden, ein Challenge-Block hinzugefügt und eine challengeNeeded-Fehlerantwort akzeptiert. Assistant sendet dann die Intent-Anfrage mit den Aufgabendaten im Aufgabenblock an
Ihre Aktion zurück. Anschließend können Sie die Aufgabendaten validieren, um festzustellen, ob der Nutzer die richtige Sicherheitsantwort gegeben hat.
Assistant verwendet Dialoge, um die Aufgabe auszugeben. Wenn Sie jedoch Assistant auf Oberflächen verwenden, die keine Sprachausgabe unterstützen, werden PIN und Bestätigungen auf dem Bildschirm angezeigt.
Wann sollte die sekundäre Nutzerbestätigung verwendet werden?
Sie können die sekundäre Nutzerbestätigung für jeden Gerätetyp oder jedes Merkmal aktivieren. Sie müssen die sekundäre Nutzerbestätigung jedoch für bestimmte sicherheitsrelevante Gerätetypen und Merkmale implementieren, um Ihre Integration zertifizieren zu lassen.
Die sekundäre Nutzerbestätigung mit dem Aufgabentyp pinNeeded ist für die folgenden Kombinationen aus Merkmal und Gerätetyp erforderlich:
- Das Merkmal
OnOff, wenn der GerätetypCAMERAist. - Das Merkmal
OpenClose, wenn der GerätetypDOOR,GARAGE,GATEoderWINDOWist. - Das Merkmal
LockUnlockbeim Entsperren. - Das Merkmal
ArmDisarmbeim Unscharfschalten oder Abbrechen des Unscharfschaltens. - Das Merkmal
Reboot,SoftwareUpdateoderNetworkControl, wenn der GerätetypNETWORKoderROUTERist.
Der Aufgabentyp ackNeeded ist für das Merkmal TemperatureSetting erforderlich, wenn der Gerätetyp AC_UNIT ist und sich die Integration in Japan befindet.
Unterstützte Aufgabentypen
Folgende Aufgabentypen für die sekundäre Nutzerbestätigung werden unterstützt:
- Keine Aufgabe: Eine Anfrage und Antwort, bei der keine Aufgabe für die sekundäre Nutzerbestätigung verwendet wird.
- ackNeeded: Eine sekundäre Nutzerbestätigung, die eine explizite Bestätigung (Ja oder Nein) erfordert und auch Merkmalsstatus als Antwort-Feedback verwenden kann. Dieser Aufgabentyp wird für Sicherheitsgeräte und ‑merkmale nicht empfohlen.
- pinNeeded: Eine sekundäre Nutzerbestätigung, die eine persönliche Identifikationsnummer (PIN) erfordert. Dieser Aufgabentyp ist ideal für Sicherheitsgeräte und ‑merkmale.
Keine Aufgabe
Dieses Beispiel zeigt eine erfolgreiche EXECUTE-Anfrage und ‑Antwort ohne Aufgabe zum Einschalten des Lichts.
| Nutzer | Schalte das Licht ein. |
| Google Assistant | Ok, ich schalte 3 Lampen ein. |
{ "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
Eine sekundäre Nutzerbestätigung, bei der mehrere Status für ein Merkmal oder eine einfache Bestätigung verwendet werden können.
Es gibt die folgenden Arten von ackNeeded-Aufgabentypen:
ackNeeded (einfach)
Dieses Beispiel zeigt eine einfache Anfrage und Antwort mit einer ackNeeded-Aufgabe zum Dimmen einer Lampe und der Bestätigung zum Dimmen der Lampe.
| Nutzer | Dimme das Licht im Wohnzimmer. |
| Google Assistant | Ich dimme das Licht im Wohnzimmer. Bist du sicher? |
| Nutzer | Ja. |
| Google Assistant | Ich dimme das Licht im Wohnzimmer. |
{ "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 mit Merkmalsstatus
Eine sekundäre Nutzerbestätigung, bei der Status für ein Merkmal verwendet werden können.
Wenn Sie beispielsweise mit dem
TemperatureSetting Merkmal arbeiten und sowohl
thermostatMode als auch thermostatTemperatureSetpoint festgelegt sind,
Assistant kann fragen: Möchtest du die Temperatur der Klimaanlage wirklich auf 28 Grad einstellen?
Sie können auch einen Status in eine Antwort einfügen, damit Assistant eine bestimmte Aktion basierend auf einer bestimmten Anfrage 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.
- ArmDisarm
- Verwenden Sie den Aufgabentyp
ackNeeded, um das Gerät scharf zu schalten oder die Scharfschaltung abzubrechen. Für die Funktionen zum Unscharfschalten und Abbrechen der Unscharfschaltung ist jedoch der AufgabentyppinNeedederforderlich. - Fill
- LockUnlock
- Verwenden Sie den
ackNeededAufgabentyp, um das Gerät zu sperren, und denpinNeededAufgabentyp, um es zu entsperren. - OnOff
on- Verwenden Sie für dieses Merkmal den Aufgabentyp
ackNeeded. DerpinNeededAufgabentyp ist erforderlich, wenn dieses Merkmal mitCAMERAGeräten verwendet wird. - OpenClose
- Verwenden Sie für dieses Merkmal den Aufgabentyp
ackNeeded. Der AufgabentyppinNeededist erforderlich, wenn dieses Merkmal mitDOOR,GARAGE,GATEoderWINDOWGeräten verwendet wird. - Scene
- TemperatureSetting
thermostatModethermostatTemperatureSetpointthermostatTemperatureSetpointHighthermostatTemperatureSetpointLow
Dieses Beispiel zeigt eine Anfrage und Antwort mit einer ackNeeded-Aufgabe, bei der ein Merkmalsstatus verwendet wird. Der Klimaanlagenmodus wird auf „Heizen“ geändert und die Temperatur auf 28 Grad eingestellt. Anschließend fordert Assistant die Nutzer
zur Bestätigung auf, die Heizung einzuschalten und die Temperatur auf 28
Grad einzustellen, da thermostatTemperatureSetpoint mit dem Wert 28 als Status
in der Antwort zurückgegeben wird.
| Nutzer | Stell den Klimaanlagenmodus auf „Heizen“ ein. |
| Google Assistant | Möchtest du die Temperatur der Klimaanlage wirklich auf 28 Grad einstellen? |
| Nutzer | Ja. |
| Google Assistant | Ich stelle die Temperatur der Klimaanlage auf 28 Grad ein. |
{ "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
Die pinNeeded-Aufgabe wird für Sicherheitsgeräte empfohlen.
Dieses Beispiel zeigt eine erste Anfrage und Antwort mit einer pinNeeded-Aufgabe. Das Beispiel gibt eine Antwort mit einer pinNeeded Aufgabe zurück, sodass
Assistant nach der PIN fragt. An dieser Stelle kann der Nutzer eine falsche oder gültige PIN angeben.
Beispiel für eine Anfrage und Antwort für eine falsche oder gültige PIN:
| Nutzer | Entriegle die Tür. |
| Google Assistant | Kann ich deinen Sicherheitscode haben? |
{ "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" } }] } }
Falsche PIN
Dieses Beispiel zeigt die Anfrage und Antwort mit einer challengeFailedPinNeeded-Aufgabe. Diese Aufgabe sollte verwendet werden, nachdem eine erste pinNeeded-Aufgabe fehlgeschlagen ist.
Wenn ein challengeFailedPinNeeded-Typ zurückgegeben wird,
Assistant fragt noch einmal nach dem Sicherheitscode. Wenn der Nutzer zu viele fehlgeschlagene Versuche unternimmt, können Sie eine tooManyFailedAttempts-Fehlerantwort zurückgeben. Weitere Informationen finden Sie unter Fehlerantworten.
| Nutzer | 333222 |
| Google Assistant | Der Sicherheitscode ist leider falsch. Kann ich deinen Sicherheitscode haben? |
{ "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" } }] } }
Gültige PIN
Dieses Beispiel zeigt die Anfrage und Antwort einer gültigen PIN.
| Nutzer | 333444 |
| Google Assistant | Ich entriegle die Tür. |
{ "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 } }] } }
| Nutzer | Dimme das Licht im Wohnzimmer. |
| Google Assistant | Kann ich deinen Sicherheitscode haben? |
{ "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" } }] } }
Fehlerantworten
Dies sind einige Fehlercodes, 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 Ausnahmenfinden Sie hier.