Я работаю над навыком Alexa, который в основном представляет собой викторину, где Alexa задает пользователю несколько вопросов подряд, причем тема варьируется в зависимости от состояния пользователя, хранящегося в динамо-таблице.Это работает.Я выполняю это с намерением, у которого есть слот для каждого ответа, и я использую управление диалогами, чтобы вызывать каждый ответ, пока все они не будут заполнены.Вот некоторый код для этого:
if(!answers.NewWordSpanishAnswer) {
const newWordIntroAudio = sound('intro');
const promptAudio = sound(`new-word-${word}-spanish-intro`);
return handlerInput.responseBuilder
.speak(newWordIntroAudio + promptAudio)
.reprompt(promptAudio)
.addElicitSlotDirective('NewWordSpanishAnswer')
.getResponse();
}
if(!answers.NewWordEnglishAnswer) {
const responseAudio = sound(`new-word-${word}-spanish-correct`);
const promptAudio = sound(`new-word-${word}-english-intro`);
return handlerInput.responseBuilder
.speak(responseAudio + promptAudio)
.reprompt(promptAudio)
.addElicitSlotDirective('NewWordEnglishAnswer')
.getResponse();
}
// etc. repeat for each question
Проблема в том, что мне нужно создать тест, который требует переменного числа вопросов, но слоты определены в модели, поэтому я не могу изменитьколичество ответов, необходимых для завершения намерения.Я думаю, что способ сделать это состоит в том, чтобы предоставить произвольное количество answer
слотов и назначить значения по умолчанию тем, которые мне не нужны (поэтому, если в тесте есть 3 вопроса, но есть 5 слотов, последние 2 слота будутприсваивать значения местозаполнителя).
Как это сделать?Есть ли способ установить значения слотов программно?
Этот пост блога Alexa , кажется, описывает то, что мне нужно, но, к сожалению, он написан с использованием ASK SDK v1, поэтому я не уверен, какчтобы сделать это, используя v2.