Ti diamo il benvenuto nel Centro sviluppatori Google Home, la nuova destinazione per imparare a sviluppare azioni per la smart home. Nota:continuerai a creare azioni nella Console Actions.

Verifica utente secondario

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

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.
Richiedi
{
  "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 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.
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"
    }]
  }
}

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.

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.
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 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?
Richiedi
{
  "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 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?
Richiedi
{
  "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.
Richiedi
{
  "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?
Richiedi
{
  "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

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.