У меня возникли проблемы с пониманием того, как отображать изображения на эхо-шоу на экране «Сейчас воспроизводится» audioPlayer.
В настоящее время я воспроизводю аудиофайл и хочу отобразить изображение на экране «Сейчас исполняется»экран.Самым близким, что мне удалось получить, является следующий код, который отображает изображение и заголовок непосредственно перед началом звука, но затем сразу же исчезает, и эхо-шоу переходит на экран «Сейчас исполняется» без фонового изображения и метаданных.Я чувствую, что я близок, но просто не могу понять, как обновить экран «Сейчас играет», а не экран, который появляется непосредственно перед ним.
Это часть кода (которая работает как описано выше):
var handlers = {
'LaunchRequest': function() {
this.emit('PlayStream');
},
'PlayStream': function() {
let builder = new Alexa.templateBuilders.BodyTemplate1Builder();
let template = builder.setTitle('Test Title')
.setBackgroundImage(makeImage('https://link_to_my_image.png'))
.setTextContent(makePlainText('Test Text'))
.build();
this.response.speak('OK.').
audioPlayerPlay(
'REPLACE_ALL',
stream.url,
stream.url,
null,
0)
.renderTemplate(template);
this.emit(':responseReady');
}
Я просматривал эту страницу https://developer.amazon.com/docs/custom-skills/audioplayer-interface-reference.html, но не могу понять, как преобразовать структуру того, что находится на этой странице, в мой код.Я предполагаю, что из кода на странице:
{
"type": "AudioPlayer.Play",
"playBehavior": "valid playBehavior value such as ENQUEUE",
"audioItem": {
"stream": {
"url": "https://url-of-the-stream-to-play",
"token": "opaque token representing this stream",
"expectedPreviousToken": "opaque token representing the previous stream",
"offsetInMilliseconds": 0
},
"metadata": {
"title": "title of the track to display",
"subtitle": "subtitle of the track to display",
"art": {
"sources": [
{
"url": "https://url-of-the-album-art-image.png"
}
]
},
"backgroundImage": {
"sources": [
{
"url": "https://url-of-the-background-image.png"
}
]
}
}
}
}
Мне как-то нужно получить эту часть:
"metadata": {
"title": "title of the track to display",
"subtitle": "subtitle of the track to display",
"art": {
"sources": [
{
"url": "https://url-of-the-album-art-image.png"
}
]
},
В этот блок моего кода:
audioPlayerPlay(
'REPLACE_ALL',
streamInfo.url,
streamInfo.url,
null,
0)
.renderTemplate(template);
(и, возможно, может потерять часть .renderTemplate(template);
, так как она все равно кратковременно мигает, прежде чем экран «Сейчас исполняется»).
Есть идеи, как этого добиться?
Спасибо!
Обновление:
Я добавил следующее в index.js:
var metadata = {
title: "title of the track to display",
subtitle: "subtitle of the track to display",
art: {
sources: {
url: "https://url-of-the-album-art-image.png"
}
}
};
И изменил audioPlayer следующим образом:
audioPlayerPlay(
'REPLACE_ALL',
stream.url,
stream.url,
null,
0,
metadata)
.renderTemplate(template);
И изменил responseBuilder.js, как указано:
audioPlayerPlay(behavior, url, token, expectedPreviousToken, offsetInMilliseconds, metadata) {
const audioPlayerDirective = {
type : DIRECTIVE_TYPES.AUDIOPLAYER.PLAY,
playBehavior: behavior,
audioItem: {
stream: {
url: url,
token: token,
expectedPreviousToken: expectedPreviousToken,
offsetInMilliseconds: offsetInMilliseconds,
metadata : metadata
}
}
};
this._addDirective(audioPlayerDirective);
return this;
}
Но я по-прежнему не вижу ничего на экране «Сейчас играет».