Weryfikacja dodatkowego użytkownika

Dodatkowa weryfikacja użytkowników pozwala dodać do poleceń głosowych uwierzytelnianie dwuskładnikowe. Dzięki temu możesz zwiększyć bezpieczeństwo niektórych działań, takich jak wyłączenie kamery monitoringu czy otwarcie drzwi. Dodatkowa weryfikacja użytkownika nie jest powiązana z konkretną cechą urządzenia, która pozwala zdecydować, kiedy Google Assistant ma wykonać test zabezpieczający logowanie. Możesz na przykład ustawić dla kamery monitoringu wyzwanie cech OnOff, ale nie rzucać wyzwania dla OnOff. W określonych sytuacjach możesz też mieć Assistant problemów z wykonaniem tego samego działania. Możesz na przykład poprosić Assistant o wysłanie prośby o weryfikację otwarcia drzwi, jeśli pilot NFC nie znajduje się w pobliżu drzwi. Jeśli w pobliżu jest kluczyk, nie będzie on uruchamiał wyzwania.

Assistant może nakładać 2 rodzaje testów zabezpieczających – potwierdzenie otrzymania zgody lub osobisty numer identyfikacyjny (PIN). Spowoduje to dodanie blokady wyzwania do intencji QUERY i EXECUTE wysłanych przez Assistant z powrotem do działania, co spowoduje otrzymanie odpowiedzi o błędzie challengeNeeded. Assistant następnie wysyła do Twojego 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ł właściwej odpowiedzi.

Assistant używa okna do wystawiania wyzwania, ale jeśli używasz Assistant na platformach innych niż głosowe, PIN i potwierdzenia są przeprowadzane na ekranie.

Obsługiwane typy urządzeń

Dodatkowa weryfikacja użytkownika jest obsługiwana na urządzeniach wszystkich typów.

Obsługiwane traits urządzeń

Dodatkowa weryfikacja użytkownika jest obsługiwana w przypadku wszystkich cech urządzenia.

Obsługiwane rodzaje wyzwań

Obsługiwane są dodatkowe typy testów zabezpieczających weryfikację użytkowników:

  • Brak testu zabezpieczającego – żądanie i odpowiedź, które nie zawierają 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 odpowiedzi zwrotnych. Ten typ wyzwania nie jest zalecany w przypadku urządzeń zabezpieczających i cech.
  • 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 cech charakteru.

Brak wyzwania

Ten przykład pokazuje udane żądanie i odpowiedź EXECUTE, ale bez próby włączenia światła.

Użytkownik Włącz światło.
Google Assistant OK, włączam 3 światła.
Prośba
{
  "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
          }
        }]
      }]
    }
  }]
}
Odpowiedź
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Dodatkowe uwierzytelnianie użytkownika, które może wykorzystywać wiele stanów na potrzeby cechy lub proste uwierzytelnianie w ramach potwierdzenia.

Istnieje ackNeeded typów wyzwań, takich jak:

potwierdzone i proste

W tym przykładzie widać proste żądanie i odpowiedź z zadaniem ackNeeded polegającym na przyciemnieniu światła i potwierdzeniem przyciemnienia.

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.
Prośba 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
          }
        }]
      }]
    }
  }]
}
Odpowiedź 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Prośba 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
          }
        }]
      }]
    }
  }]
}
Odpowiedź 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

Potrzebowane z uwzględnieniem stanów cech

Dodatkowe uwierzytelnianie użytkownika, które może wykorzystywać stany dla danej cechy. Jeśli np. pracujesz z cechą TemperatureSetting, a obie opcje są ustawione na thermostatMode i thermostatTemperatureSetpoint, Assistant może zapytać: Czy na pewno chcesz ustawić ogrzewanie klimatyzatora na 28 stopni?

W odpowiedzi możesz też umieścić stan, by usługa Assistant wykonała określone działanie na podstawie danego żądania.

Poniższe cechy i stany obsługują ackNeeded z różnymi stanami cech. Wskazanie konkretnej cechy wskazuje, że obsługiwane są wszystkie jej stany.

Ten przykład przedstawia żądanie i odpowiedź z wyzwaniem ackNeeded używającym stanu cechy. Przełącza tryb klimatyzacji na ogrzewanie i ustawia temperaturę na 28 stopni. Następnie Assistant prosi użytkowników o potwierdzenie, że chcą włączyć ogrzewanie i ustawić temperaturę na 28 stopni, ponieważ stan thermostatTemperatureSetpoint z 28 jest zwracany w odpowiedzi.

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 klimatyzatora na 28 stopni.
Prośba 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"
          }
        }]
      }]
    }
  }]
}
Odpowiedź 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Prośba 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
          }
        }]
      }]
    }
  }]
}
Odpowiedź 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

pinNeeded

Test pinNeeded jest zalecany w przypadku urządzeń zabezpieczających.

Ten przykład przedstawia wstępne żądanie i odpowiedź z testem pinNeeded. Ten przykład zwraca odpowiedź zawierającą zadanie pinNeeded, więc Assistant prosi o kod PIN. W tym momencie użytkownik może podać nieprawidłowy lub prawidłowy kod PIN.

Przykładowe żądanie i odpowiedź na nieprawidłowy lub prawidłowy kod PIN:

Użytkownik Odblokuj drzwi.
Google Assistant Możesz podać mi kod zabezpieczający?
Prośba
{
  "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
          }
        }]
      }]
    }
  }]
}
Odpowiedź
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Błędny kod PIN

Ten przykład przedstawia żądanie i odpowiedź z testem challengeFailedPinNeeded. Tego wyzwania należy użyć, gdy pierwsze wyzwanie pinNeeded się nie powiedzie.

Gdy zostanie zwrócony typ challengeFailedPinNeeded, Assistant ponownie poprosi o podanie kodu zabezpieczającego. Jeśli użytkownik wykona zbyt wiele nieudanych prób, możesz zwrócić odpowiedź o błędzie tooManyFailedAttempts. Patrz Odpowiedzi na błędy.

Użytkownik 333222
Google Assistant Kod jest nieprawidłowy. Możesz podać mi kod zabezpieczający?
Prośba
{
  "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"
          }
        }]
      }]
    }
  }]
}
Odpowiedź
{
  "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ź prawidłowego kodu PIN.

Użytkownik 333444
Google Assistant Otwieram drzwi.
Prośba
{
  "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"
          }
        }]
      }]
    }
  }]
}
Odpowiedź
{
  "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 Możesz podać mi kod zabezpieczający?
Prośba
{
  "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
          }
        }]
      }]
    }
  }]
}
Odpowiedź
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Odpowiedzi z błędami

Oto kilka kodów błędów, które mogą zostać zwrócone w odpowiedziach:

  • challengeFailedNotSetupto działanie wymaga kodu zabezpieczającego, który nie został skonfigurowany w aplikacji na urządzeniu.
  • tooManyFailedAttemptsNiestety, zbyt wiele nieudanych prób. Aby to zrobić, otwórz aplikację na urządzeniu.
  • pinIncorrectKod zabezpieczający jest nieprawidłowy
  • userCancelledOK.

Zobacz pełną listę błędów i wyjątków.