Добро пожаловать в Центр разработчиков Google Home, новое место, где можно научиться разрабатывать действия для умного дома. Примечание. Вы продолжите создавать действия в консоли действий.

Дополнительная проверка пользователя

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Вторичная проверка пользователя позволяет добавить второй фактор безопасности к голосовым командам. Это позволяет вам добавить дополнительную безопасность для определенных действий, таких как отключение камеры безопасности или открытие двери. Вторичная проверка пользователя не привязана к конкретной характеристике устройства, что позволяет вам решать, когда Google Assistant должен выдавать вызов. Например, вы можете выдать запрос для черты OnOff для камеры видеонаблюдения, но не выдавать запрос для черты OnOff для света. У вас также могут быть проблемы с Google Assistant в определенных ситуациях для одного и того же действия. Например, вы можете попросить Google Assistant выдать запрос на открытие двери, если брелок NFC не находится в непосредственной близости от этой двери, но не выдавать запрос, если брелок присутствует.

Google Assistant может выдавать два типа запросов — явное подтверждение или личный идентификационный номер (PIN). Это добавляет блок запроса к намерениям QUERY и EXECUTE , отправленным из Google Assistant, обратно к вашему действию, и принимает ответ об ошибке challengeNeeded . Затем Google Assistant отправляет обратно запрос о намерении на ваше действие с данными вызова в блоке вызова. Затем вы можете проверить данные запроса, чтобы определить, дал ли пользователь правильный ответ безопасности.

Google Assistant использует диалог для вызова вызова, но если вы используете Google Assistant на не голосовых поверхностях, PIN-код и подтверждения выполняются на экране.

Поддерживаемые типы устройств

Вторичная проверка пользователя поддерживается на всех типах устройств.

Характеристики поддерживаемых устройств

Вторичная проверка пользователя поддерживается для всех характеристик устройства.

Поддерживаемые типы задач

Ниже перечислены поддерживаемые типы запросов на проверку второстепенных пользователей.

  • Без запроса — запрос и ответ, в которых не используется дополнительный запрос проверки пользователя.
  • ackNeeded — вторичная проверка пользователя, требующая явного подтверждения (да или нет), а также может использовать состояния признаков в качестве обратной связи. Этот тип вызова не рекомендуется для устройств и свойств безопасности.
  • pinNeeded — вторичная проверка пользователя, для которой требуется персональный идентификационный номер (ПИН-код), который идеально подходит для устройств и признаков безопасности.

Нет вызова

В этом примере показан успешный запрос EXECUTE и ответ без запроса на включение света.

Пользователь Включить свет.
Google Ассистент Хорошо, включаю 3 лампочки.
Запрос
{
  "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
          }
        }]
      }]
    }
  }]
}
Ответ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "on": true,
        "online": true
      }
    }]
  }
}

ackNeeded

Вторичная аутентификация подтверждения пользователя, которая может использовать несколько состояний для признака или простая аутентификация подтверждения.

Существуют следующие типы вызовов ackNeeded :

ackNeeded простой

В этом примере показан простой запрос и ответ с вызовом ackNeeded для приглушения света и подтверждением приглушения света.

Пользователь Приглушите свет в гостиной.
Google Ассистент Приглушение света в гостиной. Ты уверен?
Пользователь Да.
Google Ассистент Приглушение света в гостиной.
Запрос 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
          }
        }]
      }]
    }
  }]
}
Ответ 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Запрос 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
          }
        }]
      }]
    }
  }]
}
Ответ 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS"
    }]
  }
}

ackNeeded с трейт-состояниями

Вторичная аутентификация подтверждения пользователя, которая может использовать состояния для характеристики. Например, если вы работаете с трейтом TemperatureSetting и заданы как thermostatMode , так и thermostatTemperatureSetpoint , Google Assistant может спросить : «Вы уверены, что хотите установить температуру кондиционера на 28 градусов?»

Вы также можете включить состояние в ответ, чтобы Google Assistant выполнял определенное действие на основе данного запроса.

Следующие трейты и состояния поддерживают ackNeeded с трейт-состояниями. Список определенного признака указывает на то, что все его состояния поддерживаются.

В этом примере показаны запрос и ответ с вызовом ackNeeded , который использует состояние признака. Он меняет режим работы кондиционера на обогрев и устанавливает температуру 28 градусов. Затем Google Assistant запрашивает у пользователей подтверждение включения нагрева и установки температуры на 28 градусов, поскольку в качестве состояния в ответе возвращается значение thermostatTemperatureSetpoint , равное 28 .

Пользователь Установите режим переменного тока на обогрев.
Google Ассистент Вы уверены, что хотите настроить температуру кондиционера на 28 градусов?
Пользователь Да.
Google Ассистент Установка тепла на кондиционере на 28 градусов.
Запрос 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"
          }
        }]
      }]
    }
  }]
}
Ответ 1
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      },
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "ackNeeded"
      }
    }]
  }
}
Запрос 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
          }
        }]
      }]
    }
  }]
}
Ответ 2
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "thermostatMode": "heat",
        "thermostatTemperatureSetpoint": 28
      }
    }]
  }
}

булавкаНеобходимо

pinNeeded рекомендуется для устройств безопасности.

В этом примере показаны первоначальный запрос и ответ с вызовом pinNeeded . Пример возвращает ответ с вызовом pinNeeded , поэтому Google Assistant запрашивает пин-код. На этом этапе пользователь может указать неправильный или действительный PIN-код.

Пример запроса и ответа для неправильного или действительного PIN-кода:

Пользователь Откройте дверь.
Google Ассистент Могу я узнать ваш защитный код?
Запрос
{
  "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
          }
        }]
      }]
    }
  }]
}
Ответ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Неверный PIN-код

В этом примере показаны запрос и ответ с challengeFailedPinNeeded challengeFailedPinNeeded. Этот вызов следует использовать после неудачного исходного вызова pinNeeded .

Когда возвращается тип challengeFailedPinNeeded , Google Assistant снова запрашивает код безопасности. Если пользователь выполняет слишком много неудачных попыток, вы можете вернуть ответ об ошибке tooManyFailedAttempts . См. ответы об ошибках .

Пользователь 333222
Google Ассистент Извините, защитный код неверен. Могу я узнать ваш защитный код?
Запрос
{
  "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"
          }
        }]
      }]
    }
  }]
}
Ответ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "challengeFailedPinNeeded"
      }
    }]
  }
}

Действительный PIN-код

В этом примере показаны запрос и ответ действительного PIN-кода.

Пользователь 333444
Google Ассистент Отпирание двери.
Запрос
{
  "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"
          }
        }]
      }]
    }
  }]
}
Ответ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "SUCCESS",
      "states": {
        "isLocked": false,
        "isJammed": false
      }
    }]
  }
}
Пользователь Приглушите свет в гостиной.
Google Ассистент Могу я узнать ваш защитный код?
Запрос
{
  "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
          }
        }]
      }]
    }
  }]
}
Ответ
{
  "requestId": "ff36a3cc-ec34-11e6-b1a0-64510650abcf",
  "payload": {
    "commands": [{
      "ids": ["123"],
      "status": "ERROR",
      "errorCode": "challengeNeeded",
      "challengeNeeded": {
        "type": "pinNeeded"
      }
    }]
  }
}

Ответы на ошибки

Вот некоторые коды ошибок, которые могут быть возвращены вместе с вашими ответами:

  • challengeFailedNotSetupдля этого действия требуется код безопасности, но он не настроен в приложении вашего устройства.
  • tooManyFailedAttemptsИзвините, слишком много неудачных попыток. Пожалуйста, перейдите в приложение вашего устройства, чтобы выполнить это действие.
  • pinIncorrect - К сожалению, код безопасности неверен.
  • userCancelled - ​​Хорошо.

См. полный список ошибок и исключений .