【发布时间】:2018-12-05 22:28:34
【问题描述】:
我正在研究一项 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 个插槽将被分配占位符值)。
我怎样才能做到这一点?有没有办法以编程方式设置槽值?
This Alexa blog post 似乎描述了我的需求,但不幸的是它是使用 ASK SDK v1 编写的,所以我不确定如何使用 v2 来完成它。
【问题讨论】:
标签: javascript node.js alexa alexa-skills-kit alexa-skill