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żytkownika pozwala dodać zabezpieczenia dwupoziomowe do poleceń głosowych. W ten sposób możesz zwiększyć bezpieczeństwo niektórych działań, na przykład wyłączenie kamery monitoringu lub otwarcie drzwi. Dodatkowa weryfikacja użytkownika nie jest powiązana z określoną cechą urządzenia, na której możesz zdecydować, kiedy Asystent Google ma wykonać test zabezpieczający. Możesz na przykład wykonać test zabezpieczający dla funkcji wyłączenia dla kamery monitoringu, ale nie dla wyzwania Włączone. Testy Asystenta Google mogą też być przeprowadzane w określonych sytuacjach. Możesz na przykład poprosić Asystenta Google o przesłanie testu zabezpieczającego otwieranie drzwi, jeśli zbliżona brama NFC nie znajdzie się w pobliżu drzwi i nie wyświetli testu zabezpieczającego

Asystent Google może stosować 2 rodzaje testów zabezpieczających – potwierdzenie lub osobisty numer identyfikacyjny (PIN). Spowoduje to dodanie blokady wyzwania do intencji QUERY i EXECUTE wysłanych przez Asystenta Google z powrotem do Twojego działania oraz zaakceptowanie odpowiedzi w odpowiedzi na błąd challengeNeeded. Następnie Google wysyła do zamiaru żądanie z danymi wyzwania w bloku wyzwania. Następnie możesz zweryfikować dane testu, aby określić, czy użytkownik podał prawidłową odpowiedź dotyczącą bezpieczeństwa.

Asystent Google użyje okna dialogowego, ale jeśli użyjesz Asystenta Google na platformach innych niż głosowe, kod PIN i potwierdzenia zostaną wyświetlone na ekranie.

Obsługiwane typy urządzeń

Dodatkowa weryfikacja użytkownika 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 obsługiwane typy testów dodatkowych użytkowników:

  • Brak testu zabezpieczającego – żądanie i odpowiedź, które nie korzystają z dodatkowego testu weryfikacji użytkowników.
  • ackNeeded – dodatkowa weryfikacja użytkownika, która wymaga jednoznacznego potwierdzenia (może odpowiadać tak lub nie), i może też używać stanów cech jako informacji zwrotnych. Ten typ testu nie jest zalecany w przypadku urządzeń zabezpieczających i cech.
  • pinNeeded – dodatkowy identyfikator użytkownika, który wymaga osobistego numeru identyfikacyjnego (PIN), co jest doskonałym rozwiązaniem w przypadku urządzeń i cech zabezpieczeń.

Brak wyzwań

Ten przykład pokazuje udane żądanie EXECUTE i odpowiedź bez wyzwania włączenia światła.

Użytkownik Włącz światło.
Asystent Google 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, które może obejmować wiele stanów jako cechy lub proste uwierzytelnianie potwierdzenia.

Te typy wyzwań w ackNeeded to:

Prosty film

Ten przykład przedstawia proste żądanie i odpowiedź z wyzwaniem ackNeeded do przyciemnienia światła oraz potwierdzeniem przyciemnienia światła.

Użytkownik Przyciemnij światło w salonie.
Asystent Google Przyciemniam światło w salonie. Na pewno?
Użytkownik Tak.
Asystent Google 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"
    }]
  }
}

ackNeeded with statusy cech

Dodatkowe uwierzytelnianie potwierdzenia użytkownika, które może zawierać stany dla cechy. Jeśli na przykład pracujesz z atrybutem TemperatureSettings i ustawisz zarówno wartość thermostatMode, jak i thermostatTemperatureSetpoint, Asystent Google może zapytać Czy na pewno chcesz ustawić ogrzewanie na 28 stopni?

Możesz też dodać stan w odpowiedzi, aby Asystent Google wykonał określoną czynność na podstawie danego żądania.

Wymienione poniżej typy i stany obsługują ackNeeded. Spis konkretnej cechy wskazuje, że obsługiwane są wszystkie jej stany.

Ten przykład pokazuje żądanie i odpowiedź z wyzwaniem ackNeeded wykorzystującym stan cech. Przełącza tryb klimatyzacji na ciepło i ustawia temperaturę na 28 stopni. Następnie Asystent Google prosi użytkowników o włączenie potwierdzenia i ustawienie temperatury na 28 stopni, ponieważ w odpowiedzi zwracany jest stan thermostatTemperatureSetpoint z 28.

Użytkownik Przełącz tryb na klimatyzację na ogrzewanie.
Asystent Google Czy na pewno chcesz ustawić ogrzewanie na klimatyzację na 28 stopni?
Użytkownik Tak.
Asystent Google Ustawiam ogrzewanie na klimatyzację 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
      }
    }]
  }
}

Pinezka

W przypadku urządzeń zabezpieczających zalecane jest wyzwanie pinNeeded.

Ten przykład pokazuje wstępne żądanie i odpowiedź z testem pinNeeded. Ten przykład zwraca odpowiedź z testem pinNeeded, więc Asystent Google prosi o kod PIN. Na tym etapie użytkownik może podać nieprawidłowy lub prawidłowy kod PIN.

Przykładowe żądanie i odpowiedzi dotyczące nieprawidłowego lub prawidłowego kodu PIN:

Użytkownik Odblokuj drzwi.
Asystent Google 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 testem challengeFailedPinNeeded. To wyzwanie powinno zostać użyte po pierwszym wyzwaniu pinNeeded.

Gdy typ challengeFailedPinNeeded jest zwracany, Asystent Google ponownie prosi o kod zabezpieczający. Jeśli użytkownik podejdzie zbyt wiele nieudanych prób, możesz zwrócić odpowiedź z błędem tooManyFailedAttempts. Zobacz Odpowiedzi na błędy.

Użytkownik 333222
Asystent Google 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 PIN

Ten przykład pokazuje żądanie i odpowiedzi na prawidłowy kod PIN.

Użytkownik 333444
Asystent Google 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.
Asystent Google 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 mogą zostać zwrócone wraz z odpowiedziami:

  • challengeFailedNotSetupTa czynność wymaga kodu zabezpieczającego, ale nie został on skonfigurowany w aplikacji na urządzeniu.
  • tooManyFailedAttemptsZbyt wiele nieudanych prób. Otwórz aplikację na urządzeniu, aby wykonać tę czynność.
  • pinIncorrectKod zabezpieczający jest nieprawidłowy.
  • userCancelledOK.

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