Weryfikacja dodatkowego użytkownika

Dodatkowa weryfikacja użytkownika umożliwia dodanie drugiego poziomu zabezpieczeń do poleceń głosowych. Dzięki temu możesz dodać dodatkową ochronę w przypadku niektórych działań, takich jak wyłączenie kamery bezpieczeństwa czy otwarcie drzwi. Dodatkowa weryfikacja użytkownika nie jest powiązana z określonym atrybutem urządzenia, co pozwala Ci decydować, kiedy Google Assistant ma wysłać wyzwanie. Możesz na przykład wybrać wyzwanie dotyczące cechy OnOff dla kamery bezpieczeństwa, ale nie wyzwanie dotyczące cechy OnOff dla światła. W niektórych sytuacjach możesz też mieć Assistantwyzwania w odniesieniu do tego samego działania. Możesz na przykład poprosić Assistant o wysłanie prośby o potwierdzenie tożsamości, aby otworzyć drzwi, jeśli brelok NFC nie znajduje się w pobliżu drzwi, ale nie żądaj potwierdzenia, jeśli brelok jest obecny.

Assistant może wysłać 2 rodzaje wyzwań: potwierdzenie lub osobisty numer identyfikacyjny (PIN). Dodaje to blokowanie wyzwania do intencji QUERYEXECUTE wysyłanych z Assistant z powrotem do Twojego działania i akceptuje odpowiedź błędu challengeNeeded. Assistant wysyła żądanie intencji do Twojego działania z danymi wyzwania w bloku wyzwania. Następnie możesz zweryfikować dane wyzwania, aby sprawdzić, czy użytkownik podał prawidłową odpowiedź bezpieczeństwa.

Assistant używa dialogu do zadawania pytania, ale jeśli używasz Assistant na urządzeniach bez obsługi mowy, kod PIN i potwierdzenie są wyświetlane na ekranie.

Obsługiwane typy urządzeń

Dodatkowa weryfikacja użytkownika jest obsługiwana na wszystkich typach urządzeń.

Obsługiwane właściwości urządzeń

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

Obsługiwane typy testów

Obsługiwane typy testów weryfikujących dodatkowej weryfikacji użytkownika:

  • Brak wyzwania – żądanie i odpowiedź, które nie używają wyzwania weryfikacji dodatkowej użytkownika.
  • ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga wyraźnego potwierdzenia (tak lub nie), a także może używać stanów cech jako informacji zwrotnej. Ten typ wyzwania nie jest zalecany w przypadku urządzeń i cech związanych z bezpieczeństwem.
  • pinNeeded – dodatkowa weryfikacja użytkownika, która wymaga podania osobistego numeru identyfikacyjnego (PIN). Jest to idealne rozwiązanie w przypadku urządzeń zabezpieczających i właściwości.

Brak wyzwania

Ten przykład pokazuje prawidłowe EXECUTE zapytanie i odpowiedź bez problemu z włącznikiem ś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

uwierzytelnianie potwierdzenia użytkownika dodatkowego, które może używać wielu stanów w przypadku cechy lub prostego uwierzytelniania potwierdzenia;

Istnieją te typy wyzwań: ackNeeded

ackNeeded simple

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

ackNeeded z stanami cech

uwierzytelnianie za pomocą potwierdzenia przez użytkownika dodatkowego, które może używać stanów w przypadku cechy; Jeśli na przykład pracujesz z właściwością TemperatureSetting, a obie wartości thermostatModethermostatTemperatureSetpoint są ustawione, Assistant może zapytać: Czy na pewno chcesz ustawić temperaturę klimatyzacji na 28 stopni?

Możesz też uwzględnić stan w odpowiedzi, aby Assistant wykonać określone działanie na podstawie danego żądania.

Te cechy i stany obsługują ackNeeded z stanami cech. Wyświetlenie konkretnej cechy oznacza, że wszystkie jej stany są obsługiwane.

Ten przykład pokazuje żądanie i odpowiedź z wyzwaniem ackNeeded, które korzysta ze stanu cechy. Zmienia tryb klimatyzatora na ogrzewanie i ustawia temperaturę na 28 stopni. Następnie Assistant prosi użytkowników o potwierdzenie, aby włączyć ogrzewanie i ustawić temperaturę na 28 stopnie, ponieważ thermostatTemperatureSetpoint 28 jest zwracany jako stan w odpowiedzi.

Użytkownik Ustaw tryb klimatyzacji na ogrzewanie.
Google Assistant Czy na pewno chcesz ustawić temperaturę klimatyzacji na 28 stopni?
Użytkownik Tak.
Google Assistant Ustawiam ogrzewanie klimatyzacji na 28 stopni.
Wniosek 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

W przypadku urządzeń zabezpieczających zalecamy użycie wyzwania pinNeeded.

Ten przykład pokazuje początkowe żądanie i odpowiedź z wyzwaniem pinNeeded. Przykład zwraca odpowiedź z wyzwaniem pinNeeded, więc usługa Assistant prosi o kod PIN. W tym momencie użytkownik może podać nieprawidłowy lub prawidłowy kod PIN.

Przykład żądania i odpowiedzi w przypadku nieprawidłowego lub prawidłowego kodu PIN:

Użytkownik Otwórz drzwi.
Google Assistant Czy możesz podać 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 wyzwaniem challengeFailedPinNeeded. To wyzwanie powinno być używane po nieudanym pierwszym wyzwaniu pinNeeded.

Gdy zwrócisz typ challengeFailedPinNeeded, Assistant ponownie poprosi o kod bezpieczeństwa. 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 jest nieprawidłowy. Czy możesz podać 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ź dla 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 Czy możesz podać 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 kody błędów, które mogą zostać zwrócone z odpowiedziami:

  • tooManyFailedAttemptsPrzepraszamy, ale nastąpiło zbyt wiele nieudanych prób. Otwórz aplikację na urządzeniu, aby dokończyć tę czynność.
  • pinIncorrectkod zabezpieczający jest nieprawidłowy.
  • userCancelledOK.

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