Как сделать так, чтобы Алекса последовательно выполнял указания кнопки «SetLight»? - PullRequest
0 голосов
/ 01 мая 2018

Я работаю над тем, чтобы в Alexa отображался паттерн мерцаний с использованием двух кнопок оранжевой секунды, каждая с полсекунды черного буфера. Таким образом, шаблон будет:

  • кнопка 1 на 1 секунду оранжевого цвета с половиной секунды черного цвета.

  • кнопка 2 на одну секунду оранжевого с половиной секунды черного.

  • кнопка 2 на одну секунду оранжевого цвета с половиной секунды черного цвета.

  • кнопка 1 на одну секунду оранжевого цвета с половиной секунды черного цвета.

Я пытаюсь сложить их, но на самом деле это никогда не работает. Вот код, который я использую:

        this.response._addDirective({
            "type": "GadgetController.SetLight",
            "version": 1,
            "targetGadgets": ["amzn1.ask.gadget.XXX1"],
            "parameters": {
                "triggerEvent": "none",
                "triggerEventTimeMs": 0,
                "animations": [{
                    "repeat": 1,
                    "targetLights": ["1"],
                    "sequence": [
                        {
                              "durationMs": 1000,
                              "blend": false,
                              "color": "000000"
                          },
                        {
                            "durationMs": 1000,
                            "blend": false,
                            "color": "b32d00"
                        }
                    ]
                }]
            }
        });
        this.response._addDirective({
            "type": "GadgetController.SetLight",
            "version": 1,
            "targetGadgets": ["amzn1.ask.gadget.XXXX2"],
            "parameters": {
                "triggerEvent": "none",
                "triggerEventTimeMs": 0,
                "animations": [{
                    "repeat": 1,
                    "targetLights": ["1"],
                    "sequence": [{
                            "durationMs": 1500,
                            "blend": false,
                            "color": "000000"
                        },
                        {
                            "durationMs": 1000,
                            "blend": false,
                            "color": "b32d00"
                        }
                    ]
                }]
            }
        });
        this.response._addDirective({
            "type": "GadgetController.SetLight",
            "version": 1,
            "targetGadgets": ["amzn1.ask.gadget.XXXX2"],
            "parameters": {
                "triggerEvent": "none",
                "triggerEventTimeMs": 0,
                "animations": [{
                    "repeat": 1,
                    "targetLights": ["1"],
                    "sequence": [
                        {
                              "durationMs": 2000,
                              "blend": false,
                              "color": "000000"
                          },
                        {
                            "durationMs": 1000,
                            "blend": false,
                            "color": "b32d00"
                        }
                    ]
                }]
            }
        });
        this.response._addDirective({
            "type": "GadgetController.SetLight",
            "version": 1,
            "targetGadgets": ["amzn1.ask.gadget.XXXX1"],
            "parameters": {
                "triggerEvent": "none",
                "triggerEventTimeMs": 0,
                "animations": [{
                    "repeat": 1,
                    "targetLights": ["1"],
                    "sequence": [
                        {
                              "durationMs": 2500,
                              "blend": false,
                              "color": "000000"
                          },
                        {
                            "durationMs": 1000,
                            "blend": false,
                            "color": "b32d00"
                        }
                    ]
                }]
            }
        });

Я предполагаю, что моя проблема заключается в триггерных событиях none, которые отменяют друг друга, но должен быть способ сделать это. Есть мысли?

1 Ответ

0 голосов
/ 08 мая 2018

В итоге я понял это и хотел обновить это на тот случай, если кто-нибудь еще наткнется на него.

Я пытался запустить 4 анимации подряд, используя две кнопки, но это невозможно. Вы можете иметь только одну директиву анимации (SetLight) для каждой кнопки, поэтому в этом случае я использовал две. Как только я изменил свой способ мышления на это, я смог получить две анимации, по одной для каждой кнопки, у которой была соответствующая кнопка, а другая была темной. Примеры ниже:

Директива setLight кнопки 1:

this.response._addDirective({
                "type": "GadgetController.SetLight",
                "version": 1,
                "targetGadgets": [`${deviceIds[0]}`],
                "parameters": {
                    "animations": [{
                        "repeat": 1,
                        "targetLights": ["1"],
                        "sequence": [{
                                "durationMs": 3000,
                                "blend": false,
                                "color": "000000"
                            },
                            {
                                "durationMs": 1000,
                                "blend": false,
                                "color": b32d00
                            },
                            {
                                "durationMs": 500,
                                "blend": false,
                                "color": "000000"
                            },
                            {
                                "durationMs": 1000,
                                "blend": false,
                                "color": 000000
                            },
                            {
                                "durationMs": 500,
                                "blend": false,
                                "color": "000000"
                            }
                        ]
                    }],
                    "triggerEvent": "none",
                    "triggerEventTimeMs": 0
                }

Директива setLight кнопки 2:

this.response._addDirective({
                "type": "GadgetController.SetLight",
                "version": 1,
                "targetGadgets": [`${deviceIds[0]}`],
                "parameters": {
                    "animations": [{
                        "repeat": 1,
                        "targetLights": ["1"],
                        "sequence": [{
                                "durationMs": 3000,
                                "blend": false,
                                "color": "000000"
                            },
                            {
                                "durationMs": 1000,
                                "blend": false,
                                "color": 000000
                            },
                            {
                                "durationMs": 500,
                                "blend": false,
                                "color": "000000"
                            },
                            {
                                "durationMs": 1000,
                                "blend": false,
                                "color": b32d00
                            },
                            {
                                "durationMs": 500,
                                "blend": false,
                                "color": "000000"
                            },
                            {
                                "durationMs": 10000,
                                "blend": false,
                                "color": "b32d00"
                            }
                        ]
                    }],
                    "triggerEvent": "none",
                    "triggerEventTimeMs": 0
                }

Это основной jist, надеюсь, это поможет кому-то еще.

...