Dodatkowa weryfikacja użytkownika umożliwia dodanie drugiego etapu zabezpieczeń do poleceń głosowych. Umożliwia to dodanie dodatkowych zabezpieczeń w przypadku niektórych działań, takich jak wyłączenie kamery bezpieczeństwa lub otwarcie drzwi. Dodatkowa weryfikacja użytkownika nie jest powiązana z określoną cechą urządzenia, co pozwala Ci decydować, kiedy Google Assistant ma wysyłać prośbę o weryfikację. Możesz na przykład zdecydować się na wysłanie prośby o potwierdzenie OnOff w przypadku kamery bezpieczeństwa, ale nie w przypadku światła.OnOff W niektórych sytuacjach możesz też Assistant wzywać do rywalizacji w tym samym działaniu. Możesz na przykład poprosić Assistant o wysłanie żądania weryfikacji w celu otwarcia drzwi, jeśli brelok NFC nie znajduje się w pobliżu tych drzwi, ale nie wysyłać żądania, jeśli brelok jest w pobliżu.
Assistant może wysyłać 2 rodzaje wyzwań: wyraźne potwierdzenie lub osobisty numer identyfikacyjny (PIN). Dodaje to blok weryfikacyjny do intencji QUERY
i EXECUTE
wysyłanych z Assistant z powrotem do Twojej usługi i akceptuje odpowiedź z błędem challengeNeeded
. Assistant odsyła żądanie intencji do Twojej usługi z danymi weryfikacyjnymi w bloku weryfikacyjnym. Następnie możesz zweryfikować dane wyzwania, aby sprawdzić, czy użytkownik podał prawidłową odpowiedź zabezpieczającą.
Assistant używa dialogu, aby wydać polecenie, ale jeśli używasz Assistant na platformach innych niż głosowe, kod PIN i potwierdzenia są wyświetlane na ekranie.
Obsługiwane typy urządzeń
Dodatkowa weryfikacja użytkownika jest obsługiwana na wszystkich typach urządzeń.
Obsługiwane cechy urządzenia
Dodatkowa weryfikacja użytkownika jest obsługiwana w przypadku wszystkich cech urządzenia.
Obsługiwane typy testów
Obsługiwane typy testów dodatkowej weryfikacji użytkownika:
- Brak testu – żądanie i odpowiedź, które nie korzystają z testu weryfikacji dodatkowej.
- ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga wyraźnego potwierdzenia (tak lub nie) i może też wykorzystywać stany cech jako informacje zwrotne. Ten typ weryfikacji nie jest zalecany w przypadku urządzeń i cech związanych z bezpieczeństwem.
- pinNeeded – dodatkowa weryfikacja użytkownika, która wymaga podania osobistego numeru identyfikacyjnego (PIN). Jest to idealne rozwiązanie w przypadku urządzeń i cech związanych z bezpieczeństwem.
Brak wyzwania
W tym przykładzie pokazujemy udane żądanie EXECUTE
i odpowiedź bez wyzwania dotyczącego włączenia świateł.
Użytkownik | Włącz światła. |
Google Assistant | OK, włączam 3 światła. |
{ "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
Dodatkowe uwierzytelnianie potwierdzające użytkownika, które może używać wielu stanów w przypadku cechy lub prostego uwierzytelniania potwierdzającego.
Istnieją te rodzaje testów:ackNeeded
ackNeeded simple
Ten przykład przedstawia proste żądanie i odpowiedź z ackNeeded
wyzwaniem dotyczącym przyciemnienia światła oraz potwierdzenie przyciemnienia światła.
Użytkownik | Przyciemnij światło w salonie. |
Google Assistant | Przyciemniam światło w salonie. Na pewno? |
Użytkownik | Tak. |
Google Assistant | Przyciemniam światło w salonie. |
{ "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" }] } }
ackNeeded ze stanami cech
Dodatkowe uwierzytelnianie potwierdzenia użytkownika, które może używać stanów w przypadku cechy.
Jeśli na przykład korzystasz z cechy TemperatureSetting, a wartości thermostatMode
i thermostatTemperatureSetpoint
są ustawione, Assistant może zapytać Czy na pewno chcesz ustawić ogrzewanie klimatyzatora na 28 stopni?
Możesz też uwzględnić w odpowiedzi stan, aby Assistant wykonał określone działanie na podstawie danego żądania.
Te cechy i stany obsługują ackNeeded
ze stanami cech. Wymienienie konkretnej cechy oznacza, że obsługiwane są wszystkie jej stany.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Ten przykład pokazuje żądanie i odpowiedź z wyzwaniem ackNeeded
, które korzysta ze stanu cechy. Zmienia tryb klimatyzatora na grzanie i ustawia temperaturę na 28 stopni. Następnie Assistant prosi użytkowników o potwierdzenie włączenia ogrzewania i ustawienia temperatury na 28 stopni, ponieważ w odpowiedzi zwrócono thermostatTemperatureSetpoint
o wartości 28
jako stan.
Użytkownik | Ustaw tryb klimatyzacji na ogrzewanie. |
Google Assistant | Czy na pewno chcesz ustawić ogrzewanie na klimatyzatorze na 28 stopni? |
Użytkownik | Tak. |
Google Assistant | Ustawiam ogrzewanie na klimatyzatorze na 28 stopni. |
{ "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
W przypadku urządzeń zabezpieczających zalecane jest wyzwanie pinNeeded
.
W tym przykładzie pokazujemy początkowe żądanie i odpowiedź z pinNeeded
wyzwaniem. W tym przykładzie zwracana jest odpowiedź z wyzwaniem pinNeeded
, więc Assistant prosi o podanie kodu PIN. Na tym etapie użytkownik może podać nieprawidłowy lub prawidłowy kod PIN.
Przykładowe żądanie i odpowiedź w przypadku nieprawidłowego lub prawidłowego kodu PIN:
Użytkownik | Otwórz drzwi. |
Google Assistant | Czy możesz podać kod zabezpieczający? |
{ "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" } }] } }
Błędny kod PIN
Ten przykład pokazuje żądanie i odpowiedź z wyzwaniem challengeFailedPinNeeded
. Z tego wyzwania należy skorzystać po nieudanym pierwszym wyzwaniu pinNeeded
.
Gdy zwracany jest typ challengeFailedPinNeeded
,Assistant ponownie prosi o kod zabezpieczający. Jeśli użytkownik wykona zbyt wiele nieudanych prób, możesz zwrócić tooManyFailedAttempts
odpowiedź z błędem. Zobacz Komunikaty o błędach.
Użytkownik | 333222 |
Google Assistant | Kod jest nieprawidłowy. Czy możesz podać kod zabezpieczający? |
{ "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" } }] } }
Prawidłowy kod PIN
Ten przykład pokazuje żądanie i odpowiedź dotyczące prawidłowego kodu PIN.
Użytkownik | 333444 |
Google Assistant | Otwieram zamek w drzwiach. |
{ "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 } }] } }
Użytkownik | Przyciemnij światło w salonie. |
Google Assistant | Czy możesz podać kod zabezpieczający? |
{ "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" } }] } }
Odpowiedzi na błędy
Oto niektóre kody błędów, które mogą być zwracane w odpowiedziach:
- tooManyFailedAttempts – Przepraszamy, zbyt wiele nieudanych prób. Otwórz aplikację na urządzeniu, aby dokończyć tę czynność.
- pinIncorrect – Kod jest nieprawidłowy.
- userCancelled – OK
Zobacz pełną listę błędów i wyjątków.