A verificação secundária de usuário permite adicionar a segurança de dois fatores à voz comandos Isso permite adicionar mais segurança em determinadas ações, como desligar uma câmera de segurança ou abrir uma porta. A verificação secundária do usuário é não está vinculada a uma característica específica do dispositivo, o que permite decidir quando ter Google Assistant emitir um desafio. Por exemplo, é possível escolher emitir um desafio para a característica OnOff câmera de segurança, mas não envie um desafio para OnOff uma característica para uma luz. Você também pode usar Assistant e solucionar desafios em determinadas situações para a mesma ação. Por exemplo, pode solicitar que Assistant envie uma solicitação de desafio para abrir uma porta se um chaveiro NFC não estiver perto dessa porta, mas não emitir um desafio se o keyfob estiver presente.
O Assistant pode gerar dois tipos de desafio:
confirmação explícita ou PIN (Número de identificação pessoal). Isso adiciona um
bloco de desafio para intents QUERY
e EXECUTE
enviadas de Assistant de volta à sua ação e aceita um erro challengeNeeded
resposta. O Assistant envia de volta a solicitação de intent para
sua ação com os dados do desafio no bloco do desafio. É possível
validar os dados do desafio para determinar se o usuário forneceu as informações de segurança corretas
resposta.
O Assistant usa a caixa de diálogo para emitir o desafio, mas se você usar o Assistant em plataformas que não são de voz, usar PIN e as confirmações são feitas na tela.
Tipos de dispositivos com suporte
A verificação de usuário secundário é compatível com todos os tipos de dispositivos.
Características do dispositivo compatível
A verificação secundária do usuário é compatível com todas as características do dispositivo.
Tipos de desafio compatíveis
Estes são os tipos de desafio de verificação de usuário secundário aceitos:
- Sem desafio: uma solicitação e uma resposta que não usam um Desafio de verificação secundária do usuário.
- ackNeeded: uma verificação secundária do usuário que exige uma confirmação explícita (sim ou não), e também pode usar estados de característica como o feedback das respostas. Este tipo de desafio não é recomendado para fins de segurança dispositivos e características.
- pinNeeded: uma verificação secundária do usuário que exige uma PIN (Número de identificação pessoal), ideal para dispositivos de segurança e características.
Nenhum desafio
Este exemplo mostra uma solicitação e uma resposta EXECUTE
bem-sucedidas sem um
um desafio de acender as luzes.
Usuário | Acenda as luzes. |
Google Assistant | Certo, acendendo três luzes. |
{ "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
Autenticação de confirmação do usuário secundária que pode usar vários estados para uma característica ou uma autenticação de confirmação simples.
Existem os seguintes tipos de desafio de ackNeeded
:
ackNeeded simples
Este exemplo mostra uma solicitação e uma resposta simples com um desafio ackNeeded
.
para diminuir o brilho de uma luz e a confirmação para diminuir o brilho.
Usuário | Diminua a luz da sala de estar. |
Google Assistant | Diminuindo a luminosidade da sala de estar. Tem certeza? |
Usuário | Sim. |
Google Assistant | Diminuindo a luminosidade da sala de estar. |
{ "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" }] } }
ackPrecisa com estados de características
Uma autenticação de confirmação de usuário secundária que pode usar estados para uma
característica.
Por exemplo, se você estiver trabalhando com o
TemperatureSetting característica e ambas
thermostatMode
e thermostatTemperatureSetpoint
estão definidos,
Assistant pode perguntar Você quer mesmo definir o aquecimento?
no ar-condicionado para 28 graus?
Você também pode incluir um estado em uma resposta para ter Assistant realiza uma ação específica com base em um determinado solicitação.
As características e estados abaixo são compatíveis com ackNeeded
com estados de característica. Um
a listagem de uma característica específica indica que todos os seus estados são compatíveis.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Este exemplo mostra uma solicitação e uma resposta com um desafio ackNeeded
que
usa um estado de característica. Ele muda o modo do ar-condicionado para aquecedor e ativa
em 28 graus. Em seguida, Assistant pergunta aos usuários
para que a confirmação ligue o aquecimento e defina a temperatura para 28
graus, já que um thermostatTemperatureSetpoint
de 28
é retornado como um estado
na resposta.
Usuário | Definir o modo AC para aquecimento. |
Google Assistant | Você quer mesmo ajustar o aquecimento do ar-condicionado para 28? graus? |
Usuário | Sim. |
Google Assistantnt | Definindo o aquecedor do ar-condicionado para 28 graus. |
{ "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
O desafio pinNeeded
é recomendado para dispositivos de segurança.
Este exemplo mostra uma solicitação inicial e uma resposta com pinNeeded
.
desafio. O exemplo retorna uma resposta com um desafio pinNeeded
. Portanto,
Assistant solicita o PIN. Nesse ponto, o usuário pode
fornecer um PIN incorreto ou válido.
Exemplo de solicitação e resposta para um PIN incorreto ou válido:
.Usuário | Destrancar a porta. |
Google Assistant | Você pode informar o código de segurança? |
{ "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 incorreto
Este exemplo mostra a solicitação e a resposta com um challengeFailedPinNeeded
desafio. Este desafio deve ser usado após um desafio inicial de pinNeeded
falhou.
Quando um tipo challengeFailedPinNeeded
é retornado,
Assistant solicita o código de segurança novamente. Se o usuário
realizar muitas tentativas com falha, poderá retornar um erro tooManyFailedAttempts
resposta de erro. Consulte Respostas de erro.
Usuário | 333222 |
Google Assistant | O código de segurança está incorreto. Você pode informar o código de segurança? |
{ "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 válido
Este exemplo mostra a solicitação e a resposta de um PIN válido.
Usuário | 333444 |
Google Assistant | Destrancando a 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 } }] } }
Usuário | Diminua a luz da sala de estar. |
Google Assistant | Você pode informar o código de segurança? |
{ "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" } }] } }
Respostas de erro
Estes são alguns códigos de erro que podem ser retornados com suas respostas:
- tooManyFailedAttempts - Lamentamos, muitas tentativas com falha. Acesse o app do dispositivo para concluir essa ação.
- pinIncorrect: o código de segurança está incorreto.
- userCancelled - OK
Veja a lista completa de erros e exceções.