Witamy w Google Home Developer Center – nowym miejscu, z którego dowiesz się, jak tworzyć inteligentne działania domowe. Uwaga: nadal będziesz tworzyć działania w konsoli Actions.

Weryfikacja dodatkowego użytkownika

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

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.
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 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.
Żądanie 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 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.

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.
Żądanie 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
      }
    }]
  }
}

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?
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. 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?
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 prawidłowego kodu PIN i odpowiedzi na nie.

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 mogę otrzymać 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 można zwrócić wraz z odpowiedziami:

  • challengeFailedNotSetupTo działanie wymaga podania kodu zabezpieczającego, ale nie został on skonfigurowany w aplikacji na urządzeniu.
  • tooManyFailedAttemptsZbyt wiele nieudanych prób. Przejdź do aplikacji na urządzeniu i wykonaj tę czynność.
  • pinIncorrectKod bezpieczeństwa jest niepoprawny.
  • userCancelledOK.

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