Пакет тестов для действий при ошибке Google Smart Home

Я реализую действие Smart Home, и во время выполнения тестов в Test Suite я получил следующее сообщение об ошибке во время теста характеристики яркости:

Starting test...
  Utterance (1/1): Ok Google. Set the Dimmer brightness to 75 percent . . . . . . . . . . . . . . . . . . . . FAIL
AssertionError: Expected state to include: {"brightness":{"xRange":[55,95]}}, actual state: {"on":true}: expected false to be true

Все onoff запросы работают нормально, и Test Suite не жалуется, просто скажите «PASS», как положено.

Но запрос BrightnessAbsolute был получен и успешно обработан моим серверным приложением (и я даже вижу, что индикаторы были изменены во время выполнения Test Suite), возвращая ответ JSON обратно в формате, описанном в документация.

Запрос:

{
   "inputs":{
      "0":{
         "context":{
            "locale_country":"CA",
            "locale_language":"en"
         },
         "intent":"action.devices.EXECUTE",
         "payload":{
            "commands":{
               "0":{
                  "devices":{
                     "0":{
                        "id":"xxxxxxxx"
                     }
                  },
                  "execution":{
                     "0":{
                        "command":"action.devices.commands.BrightnessAbsolute",
                        "params":{
                           "brightness":75
                        }
                     }
                  }
               }
            }
         }
      }
   },
   "requestId":"12608597522424949295"
}

Ответ:

{
   "requestId":"12608597522424949295",
   "payload":{
      "commands":{
         "0":{
            "ids":{
               "0":"xxxxxxxx"
            },
            "status":"SUCCESS",
            "states":{
               "on":true,
               "brightness":75,
               "online":true
            }
         }
      }
   }
}

Кто-нибудь знает, как пройти этот тест в Test Suite? Спасибо.


person Felipe Galante    schedule 30.09.2019    source источник
comment
Вы реализуете состояние отчета в своем действии?   -  person Nick Felker    schedule 30.09.2019
comment
Привет, Ник! Я реализую состояние отчета, но я отправляю отчет в HomeGraph только тогда, когда устройство было изменено другим приложением, а не Google Assistant, а не после любого запроса со стороны Google Assistant. Итак, в этом случае должен ли я всегда отправлять отчет о состоянии также после EXECUTE намерений?   -  person Felipe Galante    schedule 30.09.2019


Ответы (1)


Набор тестов проверяет команды на основе состояния, указанного в Home Graph для каждого устройства. под тестом. Важно отметить, что ответ EXECUTE используется только для предоставления прямого результата обратно пользователю (т. Е. Голос через Ассистента или пользовательский интерфейс в приложении Home), и эти ответы не обновляют состояние Home Graph. В настоящее время только Report State API обновляет Home Graph для данного устройства. .

Поскольку для обновления Home Graph требуется Report State, полезно вызвать API, следуя SYNC, чтобы предоставить Home Graph исходное состояние устройства. Это особенно важно, если вы вызываете Report State только при изменениях (т.е. не когда устройству поступает команда в состояние, в котором оно уже находится). Это может быть то, что вы испытываете, поскольку набор тестов сообщает, что в Home Graph нет значения для яркости.

Если вы не следуете этому шаблону, то вызов Report State после каждого EXECUTE также обеспечит актуальность Home Graph, но потребует от вас дополнительных вызовов API.

person devunwired    schedule 01.10.2019