Weryfikacja dodatkowego użytkownika

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

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

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.

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.
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 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?
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 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?
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.