Dodatkowa weryfikacja użytkownika pozwala dodawać do poleceń głosowych zabezpieczenia drugiego składnika. Dzięki temu możesz zwiększyć bezpieczeństwo w przypadku niektórych działań, np. wyłączenia kamery monitoringu lub otwarcia drzwi. Dodatkowa weryfikacja użytkownika nie jest powiązana z konkretną cechą urządzenia, która pozwala Ci zdecydować, kiedy wyświetlić test zabezpieczający Google Assistant. Możesz na przykład wybrać wyzwanie dla cechy OnOff dla kamery monitoringu, ale nie wybrać cechy OnOff dla światła. W określonych sytuacjach podczas wykonywania tego samego działania mogą też mieć problemy z Assistant. Możesz na przykład poprosić Assistant o wystawienie testu zabezpieczającego otwarcie drzwi, gdy w pobliżu tych drzwi nie znajduje się pilot, ale nie uruchamiać go, jeśli jest w nim dostępny pilot.
Assistant może generować 2 typy testów zabezpieczających: jednoznaczne potwierdzenie lub osobisty numer identyfikacyjny (PIN). Spowoduje to dodanie bloku wyzwania do intencji QUERY
i EXECUTE
wysyłanych z powrotem do działania z usługi Assistant i zaakceptuje odpowiedź błędu challengeNeeded
. Assistant następnie wysyła do działania żądanie intencji z danymi wyzwania w bloku wyzwania. Następnie możesz zweryfikować dane testu zabezpieczającego, aby określić, czy użytkownik udzielił prawidłowej odpowiedzi dotyczącej zabezpieczeń.
Assistant używa okna do uruchomienia wyzwania, ale jeśli używasz interfejsu Assistant na platformach innych niż głosowe, kod PIN i potwierdzenia są wykonywane na ekranie.
Obsługiwane typy urządzeń
Dodatkowa weryfikacja użytkownika jest obsługiwana na wszystkich typach urządzeń.
Obsługiwane traits urządzeń
Dodatkowa weryfikacja użytkownika jest obsługiwana w przypadku wszystkich cech urządzenia.
Obsługiwane typy testów zabezpieczających
Oto obsługiwane typy dodatkowych testów zabezpieczających weryfikację użytkownika:
- Brak testu zabezpieczającego – żądanie i odpowiedź bez dodatkowej weryfikacji użytkownika.
- ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga jednoznacznego potwierdzenia (tak lub nie) i może też używać stanów cech jako opinii w odpowiedzi. Ten typ testu nie jest zalecany w przypadku urządzeń i cech zabezpieczających.
- pinNeeded – dodatkowa weryfikacja użytkownika, która wymaga podania osobistego numeru identyfikacyjnego (PIN), co jest idealnym rozwiązaniem w przypadku urządzeń zabezpieczających i funkcji zabezpieczających.
Brak wyzwania
Ten przykład pokazuje pomyślne żądanie i odpowiedź EXECUTE
bez wyzwania związanego z włączeniem światła.
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
Dodatkowy uwierzytelnianie potwierdzania użytkownika, które może stosować wiele stanów w przypadku cechy lub prostego uwierzytelniania potwierdzającego.
Dostępne są te typy wyzwań ackNeeded
:
Wymagane proste potwierdzenie
Ten przykład przedstawia proste żądanie i odpowiedź z wyzwaniem ackNeeded
dotyczącym przyciemnienia światła i potwierdzeniem przyciemnienia światła.
Użytkownik | Przyciemnij światło w salonie. |
Google Assistant | Przyciemniam światło w salonie. Czy 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" }] } }
Potrzebne ze stanami cech
Dodatkowy uwierzytelnianie potwierdzania użytkownika, które może używać stanów w przypadku cechy.
Jeśli na przykład używasz cechy TemperatureSetting, a obiekty thermostatMode
i thermostatTemperatureSetpoint
są skonfigurowane, Assistant może zapytać Czy na pewno chcesz ustawić ogrzewanie klimatyzatora na 28 stopni?
W odpowiedzi możesz też określić stan, aby usługa Assistant wykonywała określone działanie w odpowiedzi na dane żądanie.
Te cechy i stany obsługują stan ackNeeded
ze stanami cech. Wykaz konkretnej cechy wskazuje, że obsługiwane są wszystkie stany.
- ArmDisarm
currentArmLevel
currentStatusReport
- Fill
- LockUnlock
- OnOff
on
- OpenClose
- Scene
- TemperatureSetting
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Ten przykład zawiera żądanie i odpowiedź z testem ackNeeded
, który używa stanu cechy. Przełącza tryb klimatyzacji na ogrzewanie i ustawia temperaturę na 28 stopni. Następnie Assistant prosi użytkowników o potwierdzenie, że włączyli ogrzewanie i ustawili temperaturę na 28 stopni, ponieważ jako stan w odpowiedzi zwracana jest wartość thermostatTemperatureSetpoint
o wartości 28
.
Użytkownik | Ustaw tryb klimatyzacji na ogrzewanie. |
Google Assistant | Czy na pewno chcesz ustawić ogrzewanie klimatyzatora na 28 stopni? |
Użytkownik | Tak. |
Google Assistantnt | Ustawiam ogrzewanie w 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
Test pinNeeded
jest zalecany dla urządzeń zabezpieczających.
Ten przykład pokazuje początkowe żądanie i odpowiedź z testem zabezpieczającym pinNeeded
. W tym przykładzie odpowiedź zawiera zadanie pinNeeded
, więc Assistant prosi o pinezkę. W tym momencie użytkownik może podać nieprawidł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ć mi swój 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 zawiera żądanie i odpowiedź z testem challengeFailedPinNeeded
. Tego wyzwania należy użyć, gdy pierwsze wyzwanie pinNeeded
się nie powiedzie.
Gdy zwracany jest typ challengeFailedPinNeeded
, Assistant jeszcze raz prosi o kod zabezpieczający. Jeśli użytkownik wykona zbyt wiele nieudanych prób, możesz zwrócić odpowiedź o błędzie tooManyFailedAttempts
. Zobacz Odpowiedzi na błędy.
Użytkownik | 333222 |
Google Assistant | Kod zabezpieczający jest nieprawidłowy. Czy możesz podać mi swój 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ź na prawidłowy kod PIN.
Użytkownik | 333444 |
Google Assistant | Otwieram drzwi. |
{ "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ć mi swój 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ą wystąpić wraz z udzielaniem odpowiedzi:
- tooManyFailedAttempts – zbyt wiele nieudanych prób. Aby to zrobić, otwórz aplikację na urządzeniu.
- pinIncorrect – kod zabezpieczający jest nieprawidłowy.
- userCancelled – OK
Zobacz pełną listę błędów i wyjątków.