Я работаю над навыком Alexa, который требует многоэтапного диалога, в котором пользователь должен ответить на несколько вопросов подряд.Я пытаюсь начать работу, добавив подсказку для одного слота, проверив, подтвержден ли слот, и возвращая ответ с addElicitSlotDirective
, если это не так:
Вот весь обработчик запроса:
const isIntentRequest = require('../utils/isIntentRequest');
const sound = require('../utils/sound');
const loadUser = require('../utils/loadUser');
const loadWordByIndex = require('../utils/loadWordByIndex');
module.exports = {
canHandle(handlerInput) {
return isIntentRequest(handlerInput, 'NewWordPathIntent');
},
async handle(handlerInput) {
const user = await loadUser(handlerInput);
const { wordIndex } = user;
const word = await loadWordByIndex(wordIndex);
const slots = handlerInput.requestEnvelope.request.intent.slots;
if(!hasAnswered('NewWordEnglishAnswer')) {
return handlerInput.responseBuilder
.speak('New Word English Answer word ' + word)
.reprompt('New Word English Answer word ' + word + ' reprompt')
.addElicitSlotDirective('NewWordEnglishAnswer')
.getResponse();
}
return handlerInput.responseBuilder
.speak('You answered the new word english question')
.getResponse();
function hasAnswered(slotName) {
const slot = slots[slotName];
if(!slot) throw new Error(`Invalid answer slot: "${slotName}"`);
return slot.confirmationStatus === 'CONFIRMED';
}
},
};
Кажется, это в основном работает.Когда это намерение обрабатывается, Алекса отвечает: New Word English Answer word evidence
, что правильно, но затем она немедленно следует за ним с There was a problem with the requested skill's response
и убивает сеанс.
![Alexa dialog](https://i.stack.imgur.com/udSVR.png)
Почему это происходит?Если ответ выводится, какова проблема с ответом?