Verifica utente secondario

La verifica utente secondaria consente di aggiungere una sicurezza a due fattori ai comandi vocali. In questo modo puoi aumentare la sicurezza per determinate azioni, come spegnere una videocamera di sicurezza o aprire una porta. La verifica utente secondaria non è associata a una caratteristica specifica del dispositivo, il che ti consente di decidere quando Google Assistant eseguire una verifica. Ad esempio, puoi scegliere di avviare una verifica per il trait OnOff di una videocamera di sicurezza, ma non per la caratteristica OnOff di una luce. Puoi anche avere Assistant problemi in determinate situazioni per la stessa azione. Ad esempio, puoi richiedere a Assistant di inviare una richiesta di verifica per l'apertura di una porta se un telecomando NFC non è nelle vicinanze, ma di non inviare una richiesta di verifica se è presente il telecomando.

L'Assistant può comportare due tipi di verifiche: riconoscimento esplicito o PIN (Personal Identification Number). Viene aggiunto un blocco di verifica agli intent QUERY e EXECUTE inviati da Assistant alla tua azione e viene accettata una risposta di errore challengeNeeded. Assistant invia quindi la richiesta di intent all'azione con i dati relativi alla verifica nel relativo blocco. 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 inviare la sfida, ma se utilizzi Assistant su piattaforme non vocali, il PIN e le conferme vengono effettuati sullo schermo.

Tipi di dispositivi supportati

La verifica utente secondaria è supportata su tutti i tipi di dispositivi.

Trait di dispositivi supportati

La verifica utente secondaria è supportata per tutti i trait del dispositivo.

Tipi di sfide supportati

Di seguito sono riportati i tipi di verifiche supportati per la verifica dell'utente secondario:

  • Nessuna verifica: una richiesta e una risposta che non utilizza una verifica di verifica dell'utente secondaria.
  • ackNeeded: una verifica utente secondaria che richiede un riconoscimento esplicito (sì o no) e può anche utilizzare gli stati dei trait come feedback sulla risposta. Questo tipo di verifica non è consigliato per i dispositivi e i trait di sicurezza.
  • pinNeeded: una verifica utente secondaria che richiede un PIN (Personal Identification Number), ideale per i dispositivi e i trait di sicurezza.

Nessuna sfida

Questo esempio mostra una richiesta e una risposta EXECUTE riuscite senza una verifica dell'accensione delle luci.

Utente Accendi le luci.
Google Assistant Ok, accendo tre luci.
Richiesta
{
  "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
          }
        }]
      }]
    }
  }]
}
Risposta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Un'autenticazione secondaria di accettazione dell'utente che può utilizzare più stati per un trait o una semplice autenticazione di accettazione.

Esistono i seguenti tipi di ackNeeded tipi di sfide:

semplice

Questo esempio mostra una semplice richiesta e risposta con una richiesta di ackNeeded per abbassare una luce e la conferma per diminuirla.

Utente Abbassa la luce del salotto.
Google Assistant Abbasso la luce del salotto. Confermi?
Utente Sì.
Google Assistant Abbasso la luce del salotto.
Richiesta 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
          }
        }]
      }]
    }
  }]
}
Risposta 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Richiesta 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
          }
        }]
      }]
    }
  }]
}
Risposta 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackneeded con stati dei trait

Un'autenticazione di accettazione dell'utente secondaria che può utilizzare gli stati per una caratteristica. Ad esempio, se stai lavorando con il tratto TemperatureSetting e sia thermostatMode che thermostatTemperatureSetpoint sono impostati, Assistant può chiedere Vuoi impostare il riscaldamento del condizionatore a 28 gradi?

Puoi anche includere uno stato in una risposta per consentire a Assistant di eseguire un'azione specifica in base a una determinata richiesta.

I seguenti trait e stati supportano ackNeeded con stati dei trait. L'elenco di un trait specifico indica che tutti i suoi stati sono supportati.

Questo esempio mostra una richiesta e una risposta con una challenge ackNeeded che utilizza uno stato del trait. Cambia la modalità del condizionatore su riscaldamento e imposta la temperatura a 28 gradi. Quindi, Assistant chiede agli utenti la conferma di accendere il riscaldamento e impostare la temperatura a 28 gradi, in quanto nella risposta viene restituito un thermostatTemperatureSetpoint di 28 come stato nella risposta.

Utente Imposta la modalità CA su riscaldamento.
Google Assistant Vuoi impostare il riscaldamento del condizionatore a 28 gradi?
Utente Sì.
Google Assistantnt Imposto il riscaldamento del condizionatore su 28 gradi.
Richiesta 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"
          }
        }]
      }]
    }
  }]
}
Risposta 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Richiesta 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
          }
        }]
      }]
    }
  }]
}
Risposta 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

La sfida pinNeeded è consigliata per i dispositivi di sicurezza.

Questo esempio mostra una richiesta e una risposta iniziali con una verifica pinNeeded. L'esempio restituisce una risposta con una richiesta di tipo 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.
Google Assistant Posso avere il tuo codice di sicurezza?
Richiesta
{
  "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
          }
        }]
      }]
    }
  }]
}
Risposta
{
  "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 verifica challengeFailedPinNeeded. Questa sfida deve essere utilizzata dopo che una sfida iniziale pinNeeded 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?
Richiesta
{
  "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"
          }
        }]
      }]
    }
  }]
}
Risposta
{
  "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.
Richiesta
{
  "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"
          }
        }]
      }]
    }
  }]
}
Risposta
{
  "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?
Richiesta
{
  "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
          }
        }]
      }]
    }
  }]
}
Risposta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Risposte di errore

Di seguito sono riportati alcuni codici di errore che puoi restituire con le tue risposte:

  • challengeFailedNotSetup - Per questa azione è necessario un codice di sicurezza, ma non è stato configurato nell'app del dispositivo.
  • tooManyFailedAttempts - Spiacenti, troppi tentativi non riusciti. Vai all'app del dispositivo per completare l'azione.
  • pinIncorrect - Spiacenti, il codice di sicurezza non è corretto.
  • userCancelled - Ok.

Consulta l'elenco completo di errori ed eccezioni.