Я использую ASK SDK V2 для node.js для развития навыка alexa.Согласно документации, нам нужно добавить Inprogress, а также обработчики диалоговых окон Completed для реализации делегирования диалога.Он работает правильно, но ответ каким-то образом переопределяет ожидаемый ответ.
Обработчик намерений Inprogress:
const InProgressGetAuthors = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'GetAuthors' &&
handlerInput.requestEnvelope.request.dialogState !== 'COMPLETED';
},
handle(handlerInput) {
const currentIntent = handlerInput.requestEnvelope.request.intent;
if (handlerInput.requestEnvelope.request.dialogState === "STARTED") {
return handlerInput.responseBuilder
.addDelegateDirective(currentIntent)
.getResponse();
} else if (handlerInput.requestEnvelope.request.dialogState !== 'COMPLETED') {
return handlerInput.responseBuilder
.addDelegateDirective()
.getResponse();
} else {
return currentIntent;
}
}
}
Обработчик завершенных намерений:
const CompletedGetAuthors = {
canHandle(handlerInput) {
return handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
handlerInput.requestEnvelope.request.intent.name === 'GetAuthors';
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak(author_propmt)
.reprompt(author_propmt)
.withStandardCard(
author_title,
author_copy,
author.imageUrl,
author.imageUrl
)
.withShouldEndSession(false)
.getResponse();
}
}
В обработчике заполненного намерения я отправляю карточку в ответе.Он произносит текст, но в ответ карта не отображается.
Объект ответа:
{
"body": {
"version": "1.0",
"response": {
"directives": [
{
"type": "Dialog.Delegate"
}
]
},
"sessionAttributes": {},
"userAgent": "ask-node/2.0.9 Node/v6.10.3"
}
}
Если вы посмотрите на тело ответа, карта отсутствует.Что я делаю неправильно ?Может кто-нибудь, пожалуйста, дайте мне знать?
Спасибо