La verifica degli utenti secondari ti consente di aggiungere la sicurezza a due fattori ai comandi vocali. In questo modo puoi aggiungere una sicurezza aggiuntiva per alcune azioni, ad esempio disattivare una videocamera di sicurezza o aprire una porta. La verifica degli utenti secondari non è collegata a una caratteristica specifica del dispositivo, quindi ti consente di decidere quando Google Assistant issue a challenge. For example, you can choose to issue a challenge for the OnOff trait for a security camera, but not issue a challenge for the OnOff trait for a light. You can also have Assistant issue challenges in certain situations for the same action. For example, you can request that Assistant issue a challenge request to open a door if an NFC keyfob is not in the proximity of that door, but not issue a challenge if the keyfob is present.
Assistant può emettere due tipi di verifica:
conferma esplicita o PIN (Personal Identification Number). Viene aggiunto un
blocco di sfida all'azione QUERY
e EXECUTE
intent inviati da
Assistant di nuovo all'azione e accetta una risposta di errore
challengeNeeded
.
Assistant restituisce poi la richiesta intenzionale alla tua azione con i dati della sfida nel blocco della sfida. Puoi quindi convalidare i dati della verifica per determinare se l'utente ha fornito la risposta di sicurezza corretta.
Assistant utilizza la finestra di dialogo per emettere la sfida, ma se utilizzi Assistant su piattaforme non vocali, il PIN e le conferme vengono eseguite sullo schermo.
Tipi di dispositivi supportati
La verifica degli utenti secondari è supportata su tutti i tipi di dispositivi.
Caratteristiche del dispositivo supportate
La verifica degli utenti secondari è supportata per tutte le caratteristiche del dispositivo.
Tipi di sfide supportati
Ecco i tipi di verifica secondaria degli utenti secondari supportati:
- Nessuna verifica: una richiesta e una risposta che non utilizza una verifica di verifica dell'utente secondario.
- ackNeeded: una verifica di un utente secondario che richiede un'esplicita conferma (sì o no) e può anche utilizzare stati relativi alle caratteristiche come feedback di risposta. Questo tipo di verifica non è consigliato per i dispositivi e le caratteristiche di sicurezza.
- pinNeeded: una verifica utente secondaria che richiede un PIN (Personal Identification Number), ideale per i dispositivi e le caratteristiche di sicurezza.
Nessuna sfida
Questo esempio mostra una richiesta e risposta EXECUTE
andare a buon fine senza alcuna difficoltà ad accendere le luci.
Utente | Accendi le luci. |
Google Assistant | Ok, accendo tre luci. |
{ "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
Un'autenticazione di riconoscimento di un utente secondario che può utilizzare più stati per una caratteristica o un'autenticazione di conferma semplice.
I tipi di verifica ackNeeded
sono i seguenti:
ackNeeded semplice
Questo esempio mostra una richiesta e risposta semplice con una sfida ackNeeded
per abbassare la luce e la conferma per abbassarla.
Utente | Abbassa la luce del salotto. |
Google Assistant | Abbasso la luce del salotto. Confermi? |
Utente | Sì, |
Google Assistant | Abbasso la luce del salotto. |
{ "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" }] } }
necessario con stati di tratti
Un'autenticazione secondaria di riconoscimento degli utenti che può utilizzare gli stati per una caratteristica.
Ad esempio, se lavori con la caratteristica TemperatureSetting e hai impostato sia thermostatMode
che thermostatTemperatureSetpoint
,
Assistant può chiedere Vuoi impostare il riscaldamento
sul climatizzatore a 28 gradi?
Puoi anche includere uno stato in una risposta per fare in modo che Assistant esegua un'azione specifica in base a una determinata richiesta.
I seguenti tratti e stati supportano ackNeeded
con stati dei tratti. L'elenco di una caratteristica specifica indica che sono supportati tutti gli stati.
- Disarme
currentArmLevel
currentStatusReport
- Riempimento
- Sblocco con serratura
- Spenta
on
- Aperto
- Scena
- Impostazione temperatura
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Questo esempio mostra una richiesta e una risposta con una sfida ackNeeded
che utilizza uno stato di attributo. Cambia la modalità del condizionatore per riscaldare e imposta la temperatura a 28 gradi. Dopodiché,
Assistant chiede agli utenti
di confermare l'accensione del riscaldamento e di impostare la temperatura a 28
gradi, poiché nella risposta viene restituito thermostatTemperatureSetpoint
di 28
.
Utente | Imposta la modalità AC sul riscaldamento. |
Google Assistant | Confermi di voler impostare la temperatura del condizionatore su 28 gradi? |
Utente | Sì, |
Google Assistantnt | Imposto la modalità di riscaldamento del condizionatore su 28 gradi. |
{ "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
La verifica di pinNeeded
è consigliata per i dispositivi di sicurezza.
Questo esempio mostra una richiesta e una risposta iniziali con una sfida pinNeeded
. L'esempio restituisce una risposta con una verifica pinNeeded
, quindi
Assistant chiede il segnaposto. A questo punto, l'utente può fornire un PIN errato o valido.
Esempio di richiesta e risposta per un PIN errato o valido:
Utente | Apri la serratura della porta. |
Google Assistant | Posso avere il tuo codice di sicurezza? |
{ "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 errato
Questo esempio mostra la richiesta e la risposta con una sfida challengeFailedPinNeeded
. Questa sfida deve essere utilizzata dopo che una sfida pinNeeded
iniziale non è andata a buon fine.
Quando viene restituito un tipo challengeFailedPinNeeded
,
Assistant chiede di nuovo il codice di sicurezza. Se l'utente esegue troppi tentativi non riusciti, puoi restituire una risposta di errore tooManyFailedAttempts
. Vedi Risposte di errore.
Utente | 333222 |
Google Assistant | Mi dispiace, il codice di sicurezza non è corretto. Posso avere il tuo codice di sicurezza? |
{ "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 valido
Questo esempio mostra la richiesta e la risposta di un PIN valido.
Utente | 333444 |
Google Assistant | Apro la serratura della porta. |
{ "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 } }] } }
Utente | Abbassa la luce del salotto. |
Google Assistant | Posso avere il tuo codice di sicurezza? |
{ "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" } }] } }
Risposte di errore
Ecco alcuni codici di errore che possono essere restituiti con le tue risposte:
challengeFailedNotSetup
- Questa azione richiede un codice di sicurezza, ma non è stata configurata nell'app del dispositivo.tooManyFailedAttempts
- Spiacenti, troppi tentativi non riusciti. Vai all'app del tuo dispositivo per completare l'operazione.pinIncorrect
- Spiacenti, il codice di sicurezza non è corretto.userCancelled
- OK.
Consulta l'elenco completo degli errori e delle eccezioni.