Verificación del usuario secundario

La verificación secundaria del usuario te permite agregar a la voz seguridad de dos factores con comandos de SQL sencillos. Esto te permite agregar seguridad adicional a ciertas acciones, como apagar una cámara de seguridad o abrir una puerta. La verificación secundaria del usuario es no está vinculada a una característica de dispositivo específica para ti, lo que te permite decidir Google Assistant presentan un desafío. Por ejemplo, puedes elegir para enviar un desafío al rasgo OnOff cámara de seguridad, pero no plantear un desafío para el OnOff de una luz. También puedes tener Assistant presentar desafíos en ciertas situaciones para la misma acción. Por ejemplo, puedes solicitar que Assistant emita una solicitud de verificación para abrir una puerta si un llavero NFC no está cerca de esa puerta, pero no y emitir un desafío si el llavero electrónico está presente.

El Assistant puede presentar dos tipos de desafíos: una confirmación explícita o un número de identificación personal (PIN). Esto agrega un Se envía el bloque de desafío a los intents QUERY y EXECUTE de Assistant a tu acción y acepta un error challengeNeeded respuesta. Luego, Assistant devuelve la solicitud de intent a tu acción con los datos del desafío en el bloque del desafío. Luego, puedes validar los datos de comprobación para determinar si el usuario otorgó las medidas de seguridad correctas respuesta.

Assistant usa diálogo para presentar el desafío, pero si usar Assistant en plataformas que no sean de voz, con el PIN y confirmaciones aparecen en la pantalla.

Tipos de dispositivos compatibles

La verificación secundaria del usuario es compatible con todos los tipos de dispositivos.

Traits de los dispositivos compatibles

La verificación secundaria del usuario es compatible con todas las características del dispositivo.

Tipos de verificaciones compatibles

Estos son los tipos de verificación secundaria admitidos para los usuarios:

  • Sin desafío: Es una solicitud y respuesta que no usa un Desafío secundario de verificación del usuario.
  • ackNeeded: una verificación secundaria del usuario que requiere una confirmación explícita (sí o no) y también puedes usar estados de rasgos como comentarios y respuestas. No se recomienda este tipo de desafío por motivos de seguridad de dispositivos y rasgos.
  • pinNeeded: una verificación secundaria del usuario que requiere un número de identificación personal (PIN), que es ideal para los dispositivos de seguridad. y rasgos del sistema.

Sin desafío

En este ejemplo, se muestra una solicitud EXECUTE correcta y una respuesta sin un un desafío para encender las luces.

Usuario Enciende las luces.
Google Assistant Muy bien. Se encenderán 3 lámparas.
Solicitar
{
  "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
          }
        }]
      }]
    }
  }]
}
Respuesta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Una autenticación secundaria de confirmación de recepción del usuario que puede usar varios estados para una característica o una simple autenticación de confirmación.

Existen los siguientes tipos de desafíos de ackNeeded:

ackNeeded simple

En este ejemplo, se muestra una solicitud y una respuesta simples con un desafío ackNeeded atenuar una luz y la confirmación de atenuarla.

Usuario Atenúa la luz de la sala de estar.
Google Assistant Se atenuará la luz de la sala de estar. ¿Confirmas la acción?
Usuario Sí.
Google Assistant Se atenuará la luz de la sala de estar.
Solicitud 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
          }
        }]
      }]
    }
  }]
}
Respuesta 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Solicitud 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
          }
        }]
      }]
    }
  }]
}
Respuesta 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

Se necesita con estados de trait

Una autenticación secundaria de confirmación de recepción del usuario que puede usar estados para un de la aplicación. Por ejemplo, si trabajas con el Trait TemperatureSetting y ambos Se establecieron thermostatMode y thermostatTemperatureSetpoint, Assistant puede preguntar: ¿Confirmas que quieres establecer la calefacción? el aire acondicionado a 28 grados?

También puedes incluir un estado en una respuesta para que Assistant realizan una acción específica en función de una acción determinada para cada solicitud.

Las siguientes características y estados admiten ackNeeded con estados de trait. R una lista de una característica específica indica que todos sus estados son compatibles.

En este ejemplo, se muestra una solicitud y una respuesta con un desafío ackNeeded que usa un estado de trait. Cambia el modo del aire acondicionado a calefacción y establece la a 28 grados. Luego, Assistant les pide a los usuarios para que la confirmación active la calefacción y establezca la temperatura en 28 grados, ya que un thermostatTemperatureSetpoint de 28 se muestra como un estado en la respuesta.

Usuario Establece el modo de CA en calefacción.
Google Assistant ¿Confirmas que quieres establecer la calefacción del aire acondicionado en 28? grados?
Usuario Sí.
Google Assistantnt Se establecerá la calefacción del aire acondicionado en 28 grados.
Solicitud 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"
          }
        }]
      }]
    }
  }]
}
Respuesta 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Solicitud 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
          }
        }]
      }]
    }
  }]
}
Respuesta 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Se recomienda el desafío pinNeeded para los dispositivos de seguridad.

En este ejemplo, se muestra una solicitud y respuesta iniciales con un pinNeeded desafío. En el ejemplo, se muestra una respuesta con un desafío pinNeeded, por lo que Assistant solicita el PIN. En este punto, el usuario puede proporcionan un PIN incorrecto o válido.

Ejemplo de solicitud y respuesta para un PIN incorrecto o válido:

Usuario Destraba la puerta.
Google Assistant ¿Puedes decirme tu código de seguridad?
Solicitar
{
  "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
          }
        }]
      }]
    }
  }]
}
Respuesta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

PIN incorrecto

En este ejemplo, se muestra la solicitud y la respuesta con un challengeFailedPinNeeded desafío. Este desafío debe usarse después de un desafío inicial pinNeeded falló.

Cuando se muestra un tipo challengeFailedPinNeeded, Assistant vuelve a solicitar el código de seguridad. Si el usuario realiza demasiados intentos fallidos, puedes mostrar un tooManyFailedAttempts respuesta de error. Consulta Respuestas de error.

Usuario 333222
Google Assistant Lo siento, el código de seguridad es incorrecto. ¿Puedes decirme tu código de seguridad?
Solicitar
{
  "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"
          }
        }]
      }]
    }
  }]
}
Respuesta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

PIN válido

En este ejemplo, se muestra la solicitud y la respuesta de un PIN válido.

Usuario 333444
Google Assistant Destrabando la puerta.
Solicitar
{
  "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"
          }
        }]
      }]
    }
  }]
}
Respuesta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Usuario Atenúa la luz de la sala de estar.
Google Assistant ¿Puedes decirme tu código de seguridad?
Solicitar
{
  "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
          }
        }]
      }]
    }
  }]
}
Respuesta
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Respuestas de error

Estos son algunos códigos de error que se pueden mostrar con tus respuestas:

  • tooManyFailedAttempts: lo sentimos, se produjeron demasiados intentos fallidos. Para completar la acción, ve a la app de tu dispositivo.
  • pinIncorrect: Lo sentimos, el código de seguridad es incorrecto.
  • userCancelled: Ok

Consulta la lista completa de errores y excepciones.