Я пытаюсь использовать язык презентации Alexa. Я хочу знать, как включить динамические строки (например, Output Speech и Title) в node.js (Binding, чтобы быть конкретным).
Если я использую некоторые статические строки для outputSpeech
и помещаю их в apl_template_export.json
, тогда навык работает правильно, и я могу видеть результат на Дисплее устройства. Но когда я пытаюсь использовать привязка, навык не выполняется. Хотя ошибки нет, но я также не вижу вывода на дисплее устройства (см. Изображение).
Вот что я пробовал до сих пор:
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
Может ли кто-нибудь сказать мне, что здесь не так?
ОБНОВИТЬ
Я изменил переменную text
на это:
"items": [
{
"type": "Text",
"text": "Type: ${type}\nDatasources: ${dataSources != null} \nBodyTemplate: ${dataSources.bodyTemplate1Data != null}"
}
]
И я получаю это как результат:
Type: undefined
Datasources: false
BodyTemplate: false
Таким образом, проблема не в рендеринге вывода, вместо этого шаблон не может загрузить dataSources
, это и есть настоящая проблема.
Он даже не может загрузить type
переменную, значение которой уже определено в шаблоне.
SessionEndedRequestHandler
. Но я думаю, что проблема не вSessionEndedRequestHandler
, поскольку я еще запускаю Навык и завершаю его. (shouldEndSession
этоFalse
) - person Nikhil Wagh   schedule 07.01.2019