Dodatkowa weryfikacja użytkowników pozwala na korzystanie z weryfikacji dwuetapowej za pomocą poleceń głosowych. Dzięki temu możesz zwiększyć bezpieczeństwo w przypadku określonych działań, takich jak wyłączenie kamery monitoringu lub otwarcie drzwi. Weryfikacja dodatkowego użytkownika nie jest powiązana z konkretną cechą urządzenia, dzięki czemu możesz zdecydować, kiedy Google Assistant ma wykonać test. Możesz na przykład wysłać wyzwanie dla atrybutu OnOff dla kamery monitoringu, ale nie uruchomić wyzwania dla OnOff w przypadku lampki. W określonych sytuacjach możesz też wykonać Assistant wyzwania dla tego samego działania. Możesz na przykład Assistant poprosić o otwarcie drzwi, jeśli zbliżenie zbliżenia NFC nie znajdzie się w pobliżu drzwi, a w przypadku blokady zbliżeniowej problem nie wystąpi.
Assistant może wysyłać 2 typy wyzwań – jednoznaczne potwierdzenie lub osobisty numer identyfikacyjny (PIN). Spowoduje to dodanie bloku zabezpieczającego do intencji QUERY
i EXECUTE
intencji wysłanych z powrotem do działania (Assistant) oraz przyjmie odpowiedź o błędzie challengeNeeded
. Assistant wysyła żądanie intencji do działania z danymi wyzwania w bloku wyzwania. Następnie możesz zweryfikować dane wyzwania, aby określić, czy użytkownik podał prawidłową odpowiedź dotyczącą bezpieczeństwa.
Assistant używa okna do przeprowadzenia wyzwania, ale jeśli używasz Assistant na platformach innych niż Voice, kod PIN i potwierdzenia są widoczne na ekranie.
Obsługiwane typy urządzeń
Weryfikacja dodatkowych użytkowników 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 wyzwań
Oto typy dodatkowych testów zabezpieczających weryfikację użytkownika:
- Brak testu zabezpieczającego – żądanie i odpowiedź, które nie korzystają z dodatkowego wyzwania weryfikacji użytkownika.
- ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga jednoznacznego potwierdzenia (tak lub nie), i jako opinie można też używać stanów cech. Ten typ wyzwania nie jest zalecany w przypadku urządzeń zabezpieczających ani cech.
- pinNeeded – dodatkowa weryfikacja użytkownika, która wymaga podania osobistego numeru identyfikacyjnego (PIN), co idealnie sprawdza się w przypadku urządzeń i cech ochronnych.
Brak wyzwania
Ten przykład pokazuje udane żądanie EXECUTE
i odpowiedź bez próby włączenia świateł.
Użytkownik | Włącz światło. |
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
Uwierzytelnianie dodatkowego użytkownika, które może używać wielu stanów jako cechy lub prostego uwierzytelniania potwierdzenia.
Dostępne są następujące typy wyzwań ackNeeded
:
Prosty element
Ten przykład pokazuje proste żądanie i odpowiedź z wyzwaniem ackNeeded
przyciemnienia światła i potwierdzeniem 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 z uwzględnieniem cech
Uwierzytelnianie dodatkowego użytkownika, które może używać stanów jako cechy.
Jeśli na przykład korzystasz z funkcji TemperatureSetting i masz ustawioną wartość thermostatMode
i thermostatTemperatureSetpoint
, Assistant może zapytać, czy na pewno chcesz ustawić ogrzewanie na 28 stopni?
Możesz też dodać stan do odpowiedzi, by usługa Assistant wykonała konkretne działanie na podstawie danego żądania.
Poniższe cechy i stany obsługują ackNeeded
ze stanem cech. Lista konkretnych cech wskazuje, że są one obsługiwane.
- AlarDisarm
currentArmLevel
currentStatusReport
- Wypełnij
- blokada
- Wyłączone
on
- OpenClose
- Scena
- Temperatura
thermostatMode
thermostatTemperatureSetpoint
thermostatTemperatureSetpointHigh
thermostatTemperatureSetpointLow
Ten przykład pokazuje żądanie i odpowiedź z wyzwaniem ackNeeded
, które korzysta ze stanu cech. Przełącza tryb klimatyzacji na podgrzewanie i ustawia temperaturę na 28 stopni. Następnie Assistant prosi użytkowników o pozwolenie na włączenie ogrzewania i ustawienie temperatury na 28 stopni, ponieważ w odpowiedzi zwracany jest stan thermostatTemperatureSetpoint
parametru 28
.
Użytkownik | Przełącz tryb na klimatyzację na ogrzewanie. |
Google Assistant | Czy na pewno chcesz ustawić ogrzewanie na klimatyzację na 28 stopni? |
Użytkownik | Tak. |
Google Assistant | Ustawiam ogrzewanie na klimatyzację 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 } }] } }
potrzebne
W przypadku urządzeń zabezpieczających zalecane jest wyzwanie pinNeeded
.
Ten przykład pokazuje początkowe żądanie i odpowiedź z wyzwaniem pinNeeded
. Ten przykład zwraca odpowiedź z wyzwaniem pinNeeded
, więc Assistant prosi o przypinanie. Na tym etapie użytkownik może podać nieprawidłowy kod PIN lub kod PIN.
Przykładowe żądanie i odpowiedź z nieprawidłowym lub prawidłowym kodem PIN:
Użytkownik | Odblokuj drzwi. |
Google Assistant | Czy mogę otrzymać 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
. Tego wyzwania należy używać po początkowym wyzwaniu pinNeeded
.
Gdy zwracany jest typ challengeFailedPinNeeded
, Assistant ponownie prosi o kod zabezpieczający. Jeśli użytkownik podejmie zbyt wiele nieudanych prób, możesz zwrócić odpowiedź tooManyFailedAttempts
. Zobacz Odpowiedzi na błędy.
Użytkownik | 333222 |
Google Assistant | Kod jest nieprawidłowy. Czy mogę otrzymać 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 prawidłowego kodu PIN i odpowiedzi na nie.
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 mogę otrzymać 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 można zwrócić wraz z odpowiedziami:
challengeFailedNotSetup
– To działanie wymaga podania kodu zabezpieczającego, ale nie został on skonfigurowany w aplikacji na urządzeniu.tooManyFailedAttempts
– Zbyt wiele nieudanych prób. Przejdź do aplikacji na urządzeniu i wykonaj tę czynność.pinIncorrect
– Kod bezpieczeństwa jest niepoprawny.userCancelled
– OK.
Zobacz pełną listę błędów i wyjątków.