La validation des utilisateurs secondaires vous permet d'ajouter une sécurité à deux facteurs pour les commandes vocales commandes. Vous pouvez ainsi renforcer la sécurité de certaines actions : éteindre une caméra de sécurité ou ouvrir une porte. La validation secondaire de l'utilisateur est n'est pas liée à une caractéristique spécifique de l'appareil, ce qui vous permet de décider Google Assistant lance un défi. Par exemple, vous pouvez choisir d'émettre un défi pour la caractéristique OnOff caméra de sécurité, mais ne pas lancer de test OnOff la caractéristique d'une lumière. Vous pouvez aussi avoir Assistant des défis dans certaines situations pour la même action. Par exemple : peut demander à Assistant d'émettre une demande de question d'authentification ouvrir une porte si aucune clé sans contact NFC n'est à proximité, mais pas un test si la clé sans contact est présente.
Le Assistant peut poser deux types de questions :
de confirmation explicite ou avec un code secret. Cela permet d'ajouter
votre bloc challenge à QUERY
et EXECUTE
intents renvoyés depuis Assistant vers votre action et accepte une erreur challengeNeeded
de réponse. Assistant renvoie ensuite la requête d'intent à
votre action avec les données
du défi dans le bloc « Défi ». Vous pouvez ensuite
valider les données de question d'authentification pour déterminer si l'utilisateur a défini le niveau de sécurité
de réponse.
Assistant utilise les boîtes de dialogue pour lancer le défi, mais si vous utiliser Assistant sur les surfaces non vocales, coder et confirmations s'affichent à l'écran.
Types d'appareils compatibles
La validation secondaire de l'utilisateur est compatible avec tous les types d'appareils.
Traits d'appareil compatibles
La validation secondaire de l'utilisateur est compatible avec toutes les caractéristiques d'appareil.
Types d'authentifications acceptés
Voici les types d'authentification secondaire de validation de l'utilisateur acceptés:
- Aucun défi : requête et réponse qui n'utilisent pas de Question d'authentification secondaire de l'utilisateur.
- ackNeeded : une validation secondaire de l'utilisateur qui nécessite une reconnaissance explicite (oui ou non) et peuvent également utiliser les états de caractéristiques comme le feedback sur la réponse. Ce type d'authentification n'est pas recommandé pour des raisons de sécurité appareils et caractéristiques.
- pinNeeded : une validation secondaire de l'utilisateur qui nécessite un Code secret, idéal pour les dispositifs de sécurité et caractéristiques.
Aucun défi
Cet exemple montre une requête EXECUTE
réussie et la réponse obtenue, sans
un défi pour allumer les lumières.
Utilisateur | Allume la lumière. |
Google Assistant | D'accord, j'allume les trois lumières. |
{ "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
Une authentification secondaire de confirmation de l'utilisateur pouvant utiliser plusieurs états pour une caractéristique ou une simple authentification par accusé de réception.
Il existe les types d'authentification ackNeeded
suivants:
ackNeeded simple
Cet exemple présente une requête et une réponse simples avec un défi ackNeeded
pour baisser la lumière et la confirmation
de baisser la lumière.
Utilisateur | Baisse la lumière du salon. |
Google Assistant | Je baisse la lumière du salon. Continuer ? |
Utilisateur | Oui. |
Google Assistant | Je baisse la lumière du salon. |
{ "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 avec les états de trait
Une authentification de confirmation de l'utilisateur secondaire
qui peut utiliser les états pour une
trait de caractère.
Par exemple, si vous travaillez avec
TemperatureSetting trait et les deux
thermostatMode
et thermostatTemperatureSetpoint
sont définis,
Assistant peut demander Voulez-vous vraiment régler le chauffage
sur la climatisation sur 28 degrés ?
Vous pouvez également inclure un état dans une réponse Assistant effectue une action spécifique en fonction d'un requête.
Les caractéristiques et états suivants sont compatibles avec ackNeeded
avec des états de caractéristiques. A
la liste d'une caractéristique spécifique indique que tous ses états sont pris en charge.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Cet exemple montre une requête et une réponse avec un défi ackNeeded
qui
utilise un état de caractéristique. Elle active le mode chauffage sur le climatiseur
la température sur 28 degrés. Ensuite, Assistant demande aux utilisateurs
la confirmation d’allumer le chauffage et de régler la température sur 28
degrés, car un thermostatTemperatureSetpoint
de 28
est renvoyé en tant qu'état
dans la réponse.
Utilisateur | Réglez le mode climatisation sur chauffage. |
Google Assistant | Voulez-vous vraiment régler le chauffage de la climatisation sur 28 diplômes ? |
Utilisateur | Oui. |
Google Assistant | Je règle le chauffage du climatiseur sur 28 degrés. |
{ "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
Le test pinNeeded
est recommandé pour les appareils de sécurité.
Cet exemple présente une requête initiale et une réponse avec un pinNeeded
d'authentification. L'exemple renvoie une réponse avec un défi pinNeeded
, donc
Assistant demande le code. À ce stade, l'utilisateur peut
fournir un code incorrect ou valide.
Exemple de requête et de réponse pour un code secret incorrect ou valide:
Utilisateur | Déverrouillez la porte. |
Google Assistant | Puis-je avoir votre code de sécurité ? |
{ "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" } }] } }
Code incorrect
Cet exemple présente la requête et la réponse avec un challengeFailedPinNeeded
d'authentification. Ce test doit être utilisé après un premier test pinNeeded
a échoué.
Lorsqu'un type challengeFailedPinNeeded
est renvoyé,
Assistant vous demande à nouveau le code de sécurité. Si l'utilisateur
effectue trop de tentatives infructueuses, vous pouvez renvoyer un tooManyFailedAttempts
. Consultez la section Réponses d'erreur.
Utilisateur | 333222 |
Google Assistant | Désolé, le code de sécurité est incorrect. Puis-je avoir votre code de sécurité ? |
{ "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" } }] } }
Code d'accès valide
Cet exemple illustre la demande et la réponse d'un code PIN valide.
Utilisateur | 333444 |
Google Assistant | Déverrouillage de la porte... |
{ "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 } }] } }
Utilisateur | Baisse la lumière du salon. |
Google Assistant | Puis-je avoir votre code de sécurité ? |
{ "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" } }] } }
Réponses d'erreur
Voici quelques codes d'erreur qui peuvent être renvoyés avec vos réponses:
- tooManyFailedAttempts : Désolé, trop de tentatives ont échoué. Veuillez accéder à l'appli de votre appareil pour effectuer cette action.
- pinIncorrect : Désolé, le code de sécurité est incorrect.
- userCancelled - OK
Voir la liste complète les erreurs et les exceptions.