Реакция на ошибку с помощью Google Smart Home (термостат)

Я не могу понять синтаксис Json для ошибок, которые я пробовал

return {
        "requestId": self.request_id,
        "payload": {
            "commands": [{
                "ids": [self.device_id],
                "status": "OFFLINE",
                "errorCode": "deviceTurnedOff"
            }]
        }
    }

и

return {
        "requestId": self.request_id,
        "payload": {
            "errorCode": "authFailure",
            "commands": [{
                "devices":  [{
                    "ids": [self.device_id],
                    "status": "ERROR",
                    "errorCode": "deviceTurnedOff"
                }]
            }]
        }
    }

и

return {
      "requestId": self.request_id,
      "payload": {
        "errorCode": self.error_code
      }
    }

ни один из приведенных выше синтаксисов не работает, большую часть времени Google Home говорит, что ваши действия выполнены, но я возвращаю ошибку Json.

Я прочитал документацию по действиям Google, но не понял.


person Umair    schedule 31.07.2017    source источник


Ответы (1)


Я придумал несколько полезных нагрузок, и мне удалось заставить их успешно вызывать ошибки с помощью симулятора AoG после консультации с документы.

Фрагмент Node.js:

let resBody = {
    requestId: request.requestId,
    payload: {
        "errorCode": "notSupported"
    }
}
response.status(200).json(resBody);

Вы уверены, что requestId совпадает с запросом на умный дом? Как вы тестируете эти ошибки?

person Nick Felker    schedule 31.07.2017
comment
да! идентификатор запроса такой же, и я пробовал этот синтаксис json для ответа на ошибку, но не работал. Я также консультируюсь с документами, но это не работает, даже до того, как 2 дня Google Home не давал мне ответа на отключение имя_устройства, сегодня он дал мне ответ на это, и я не изменил ни одного фрагмента кода. - person Umair; 01.08.2017
comment
Какую структуру вы используете для возврата этих сообщений JSON? Это не похоже на Node JS. Правильно ли обрабатывается ваш объект return какой-либо функцией более высокого уровня? - person Nick Felker; 02.08.2017
comment
Я использую python (без фреймворка) google home -> AWS API Gateway -> AWS lambda. Если это проблема, оставшиеся навыки не будут работать. я создаю Google Home Smart Skill (Термостат). Я могу изменить температуру, включить / выключить, изменить режим, увеличить / уменьшить температуру, все работает нормально, кроме реакции на ошибку. Я имею в виду, что если устройство находится в автономном режиме, я возвращаю { "requestId": "same as found in request", "payload": { "errorCode": "deviceTurnedOff" } } Я протестировал ответ json с помощью Postman, также он совпадает с определением в документе. - person Umair; 02.08.2017
comment
Просматривая документы для лямбда-выражений я не уверен, что self является подходящей переменной для получения значений из запроса Smart Home. Вы должны увидеть полный журнал выходных данных в консоли Lambda. На что это похоже? - person Nick Felker; 02.08.2017
comment
хорошо, сэр! self в python означает этот класс. Я думаю, вы понятия не имеете, что происходит :) - person Umair; 03.08.2017
comment
Я не очень хорошо знаком с лямбда-выражениями или серверным Python, поэтому я не уверен, откуда именно возникла проблема. Хотя это не похоже на проблему конкретно с Умным домом. - person Nick Felker; 03.08.2017
comment
Спасибо за помощь в любом случае :) - person Umair; 04.08.2017