Weryfikacja dodatkowego użytkownika

Dodatkowa weryfikacja użytkownika umożliwia Ci włączenie do połączeń głosowych zabezpieczeń drugiego składnika. poleceń. Dzięki temu możesz zwiększyć poziom zabezpieczeń w przypadku określonych działań, na przykład: wyłączyć kamerę monitoringu lub otworzyć drzwi. Dodatkowa weryfikacja użytkownika to nie są powiązane z żadną cechą urządzenia, co pozwala określić, kiedy Google Assistant podejmuje wyzwanie. Możesz na przykład wybrać aby zadać wyzwanie dla cechy OnOff dla: kamera monitoringu, ale nie będzie wyświetlać urządzenia zabezpieczającego OnOff cechę światła. Możesz też mieć Assistant wyzwalania wyzwań w określonych sytuacjach przy wykonywaniu tego samego działania. Na przykład: może poprosić użytkownika Assistant o wysłanie prośby o test zabezpieczający otworzyć drzwi, jeśli pilot NFC nie znajduje się w jego pobliżu, ale nie uruchomić wyzwanie, jeśli jest w nim obecna pilot.

Assistant może wyświetlać 2 typy wyzwań: potwierdzenie lub osobisty numer identyfikacyjny (PIN). Powoduje to dodanie blokada testu zabezpieczającego wysyłane do użytkownika QUERY i intencje EXECUTE zostały wysłane z adresu Assistant z powrotem do Twojego działania i akceptuje błąd challengeNeeded . Assistant następnie wysyła żądanie intencji do dane o wyzwaniu w bloku wyzwania. Następnie możesz: zweryfikuj dane testu zabezpieczającego w celu określenia, czy użytkownik udzielił odpowiednich zabezpieczeń .

Assistant używa okna do uruchomienia wyzwania, ale jeśli Ty używaj aplikacji Assistant na platformach innych niż głosowe, oraz korzystaj z kodu PIN i potwierdzania tożsamości 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 – żądanie i odpowiedź, które nie zawierają tagu Dodatkowa weryfikacja użytkownika.
  • ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga jednoznacznego uznania (tak lub nie) oraz mogą też używać stanów cech jako aby przesłać opinię. Ten typ wyzwania nie jest zalecany ze względów bezpieczeństwa urządzeń i cech.
  • pinNeeded – dodatkowa weryfikacja użytkownika, która wymaga osobisty numer identyfikacyjny (PIN), który doskonale sprawdza się w przypadku urządzeń zabezpieczających. i cech.
.

Brak wyzwania

Ten przykład pokazuje pomyślne żądanie i odpowiedź EXECUTE bez parametru za zapalenie światła.

Użytkownik Włącz światła.
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 potwierdzenia użytkownika, które może używać wielu stanów do uwierzytelniania danej cechy lub prostego uwierzytelnienia.

Dostępne są te typy wyzwań ackNeeded:

Wymagane proste potwierdzenie

Ten przykład pokazuje proste żądanie i odpowiedź z wyzwaniem ackNeeded przyciemnienie światła i potwierdzenie 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"
    }]
  }
}

Potrzebne ze stanami cech

Dodatkowe uwierzytelnianie potwierdzenia użytkownika, które może używać stanów w przypadku cechę. Na przykład, jeśli pracujesz z Cecha TemperatureSetting i obie te cechy Wartości thermostatMode i thermostatTemperatureSetpoint są ustawione, Assistant może zapytać Czy na pewno chcesz ustawić ogrzewanie na klimatyzatorze do 28 stopni?

Możesz też dodać stan w odpowiedzi, Assistant wykonuje określone działanie na podstawie danej użytkownika.

Te cechy i stany obsługują stan ackNeeded ze stanami cech. O lista konkretnej cechy wskazuje, że obsługiwane są wszystkie jej stany.

Ten przykład przedstawia żądanie i odpowiedź z testem ackNeeded, który używa stanu cech. Przełącza tryb klimatyzacji na ogrzewanie i ustawia do 28 stopni. Następnie Assistant pyta użytkowników aby potwierdzić włączenie ogrzewania i ustawić temperaturę na 28 stopni stopni, ponieważ wartość thermostatTemperatureSetpoint o wartości 28 jest zwracana jako stan w odpowiedzi.

Użytkownik Ustaw tryb klimatyzacji na ogrzewanie.
Google Assistant Czy na pewno chcesz ustawić ogrzewanie klimatyzatora na 28 stopni? stopnie?
Użytkownik Tak.
Google Assistant Ustawiam ogrzewanie w klimatyzatorze 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 dla urządzeń zabezpieczających.

Ten przykład pokazuje początkowe żądanie i odpowiedź z blokiem pinNeeded do wyzwania. Przykład zwraca odpowiedź z zadaniem pinNeeded, więc Assistant prosi o kod PIN. W tym momencie użytkownik może podaj 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ć mi swój 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 pokazuje żądanie i odpowiedź z elementem challengeFailedPinNeeded do wyzwania. Tego wyzwania należy użyć po pierwszym wyzwaniu pinNeeded niepowodzenie.

Gdy zwracany jest typ challengeFailedPinNeeded, Assistant jeszcze raz prosi o kod zabezpieczający. Jeśli użytkownik wykonuje zbyt wiele nieudanych prób, możesz zwrócić tooManyFailedAttempts odpowiedź na żądanie błędu. 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?
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ź na prawidłowy kod 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 Czy możesz podać mi swój 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 na błędy

Oto niektóre kody błędów, które mogą wystąpić wraz z udzielaniem odpowiedzi:

  • tooManyFailedAttemptszbyt 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.