Я пытаюсь использовать Alexa Presentation Language . Я хочу знать, как включить динамические строки (например, Output Speech и Title ) в node.js ( Binding , если быть точным).
Если я использую некоторые статические строки для outputSpeech
и вставляю их в apl_template_export.json
, тогда навык работает правильно, и я вижу результат на дисплее устройства. Но когда я пытаюсь использовать привязку , навык терпит неудачу. Хотя ошибки нет, но я не вижу вывода на дисплее устройства (см. Изображение).
![enter image description here](https://i.stack.imgur.com/sbX11.png)
Вот что я до сих пор пробовал:
handlerInput.responseBuilder
.addDirective({
type: 'Alexa.Presentation.APL.RenderDocument',
version: '1.0',
document: require('./apl_template_export.json'),
dataSources: {
"bodyTemplate1Data": {
"type": "object",
"objectId": "bt1Sample",
"title": urlParams.type,
"textContent": {
"primaryText": {
"type": "PlainText",
"text": outputSpeech
}
}
}
}
})
.speak(outputSpeech)
.getResponse();
apl_template_export.json :
{
"type": "APL",
"version": "1.0",
"import": [
{
"name": "alexa-layouts",
"version": "1.0.0"
}
],
"mainTemplate": {
"parameters": [
"payload"
],
"items": [
{
"type": "Text",
"text": "${dataSources.bodyTemplate1Data.textContent.primaryText.text}"
}
]
}
}
Если я заменим ${dataSources.bodyTemplate1Data.textContent.primaryText.text}
реальным текстом (например, «Hello World» ), умение будет работать как задумано.
Я взял ссылку от здесь и здесь , исходный репозиторий: https://github.com/alexa-labs/skill-sample-nodejs-level-up-riddles
Может кто-нибудь сказать мне, что здесь происходит не так?
UPDATE
Я изменил переменную text
на это:
"items": [
{
"type": "Text",
"text": "Type: ${type}\nDatasources: ${dataSources != null} \nBodyTemplate: ${dataSources.bodyTemplate1Data != null}"
}
]
И я получаю это как вывод:
Type: undefined
Datasources: false
BodyTemplate: false
Таким образом, проблема не в рендеринге вывода, вместо этого шаблон не может загрузить dataSources
, что является реальной проблемой.
Он даже не может загрузить type
переменную, значение которой уже определено в шаблоне.