Я создал небольшой пример проекта для проверки команды 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();
}
};
Как я уже сказал, тест на вывод речи будет работать, только если я сам касаюсь экрана. Сам автоматический пейджинг работает. Он предназначен для работы таким образом? Или я что-то не так делаю?