Событие Alexa APL Pager OnPageChanged вызывается только при касании - PullRequest
1 голос
/ 30 сентября 2019

Я создал небольшой пример проекта для проверки команды AutoPage в сочетании с событием OnPageChanged. Однако событие кажется только вызванным, если я сам касаюсь экрана и меняю страницу. Событие не вызывается автоматической подкачкой страниц. Я не смог найти никакой информации об этом в официальной документации: https://developer.amazon.com/de/docs/alexa-presentation-language/apl-pager.html#pager_on_page_changed_property Это мой документ:

{
  "type": "APL",
  "version": "1.1",
  "settings": {},
  "theme": "dark",
  "import": [],
  "resources": [],
  "styles": {},
  "onMount": [],
  "graphics": {},
  "commands": {},
  "layouts": {},
  "mainTemplate": {
    "parameters": [
      "payload"
    ],
    "items": [
      {
        "type": "Pager",
        "id": "pagerComponentId",
        "onPageChanged": [
          {
            "type": "SendEvent"
          }
        ],
        "navigation": "wrap",
        "height": "100%",
        "width": "100%",
        "item": [
          {
            "type": "Container",
            "height": "200dp",
            "width": "300dp",
            "paddingTop": "16dp",
            "paddingLeft": "16dp",
            "paddingRight": "16dp",
            "paddingBottom": "16dp",
            "items": [
              {
                "type": "Image",
                "height": "200dp",
                "width": "300dp",
                "source": "https://d2o906d8ln7ui1.cloudfront.net/placeholder_image.png"
              }
            ]
          },
          {
            "type": "Container",
            "items": [
              {
                "type": "Image",
                "height": "200dp",
                "width": "300dp",
                "source": "https://d2o906d8ln7ui1.cloudfront.net/placeholder_image.png"
              }
            ]
          },
          {
            "type": "Container",
            "items": [
              {
                "type": "Image",
                "height": "200dp",
                "width": "300dp",
                "source": "https://d2o906d8ln7ui1.cloudfront.net/placeholder_image.png"
              }
            ]
          }
        ]
      }
    ]
  }
}

Вот так я инициирую его в коде

return handlerInput.responseBuilder
        //.speak(speechText)
        .addDirective({
            type: 'Alexa.Presentation.APL.RenderDocument',
            token: 'pagerToken',
            version: '1.0',
            document: require('./aplu/main2.json'),
            datasources: {
                data: {
                },
            }
        })
        .addDirective({
            type: 'Alexa.Presentation.APL.ExecuteCommands',
            token: 'pagerToken',
            commands: [

                        {
                            'type': 'AutoPage',
                            'componentId': 'pagerComponentId',
                            'delay': 3000,
                            'duration': 2000,
                        }
                    ]
        })
        .getResponse();

И это мой обработчик событий:

const test = {
    canHandle(handlerInput){
        return (handlerInput.requestEnvelope.request.type === 'Alexa.Presentation.APL.UserEvent') },
    handle(handlerInput) {
        return handlerInput.responseBuilder
            .speak("Test")
            .getResponse();
    }

};

Как я уже сказал, тест на вывод речи будет работать, только если я сам касаюсь экрана. Сам автоматический пейджинг работает. Он предназначен для работы таким образом? Или я что-то не так делаю?

...