我将首先假设您在开发过程中使用的是 alexa-sdk。如果您不知道那是,请查看此链接:
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
您可以通过多种方式将问题分解为您的意图架构中的技能。它们可以是单个意图,例如“QuestionOneIntent”和“QuestionTwoIntent”,也可以是单个意图“QuestionIntent”,其中这些意图中的槽值对应于单个问题。由于原始帖子没有提供太多信息,我不能说哪种结构是最好的设置。
alexa-sdk 中有两种一般类型的响应。":tell" 会让 Alexa 做出回应并立即回到她的空闲状态(不听你的)。":ask" 会说一个响应,等待 8 秒,然后在等待你给出另一个命令的同时,继续提示消息。
至于在对话中保持会话活跃,您可以简单地使用
var speechOutput = "This is the answer to Question"
var speechOutputReprompt = "Do you have any more questions?"
this.emit(":ask", speechOutput, speechOutputReprompt)
这将使您的会话保持打开状态,并且用户可以继续提出更多问题。如果您对重新提示回答“否”,您将不得不做出另一个意图来关闭会话,从而使 shouldEndSession 变量为真。这是我如何构建代码的示例:
"QuestionIntent": function(){
var responseName = ""
var slots = this.event.request.intent.slots
for (var slot in slots){
if(slots[slot].value != undefined){
responseName = slots[slot].name;
switch(responseName){
case "QuestionOneIntent":
var QuestionOneAnswer = "Answer to question one";
this.emit(":tell", QuestionOneAnswer);
break;
case "QuestionTwoIntent":
var QuestionTwoAnswer = "Answer to question two";
this.emit(":ask", QuestionTwoAnswer, QuestionTwoAnswerReprompt);
break;
default:
console.log("error");
break;
}
}
}
}