我將首先假定您在開發過程中使用了alexa-sdk。如果你不知道,那就是,請查看以下鏈接:
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
有多種方法可以打破的問題,以你的技能在你的意圖的模式。它們既可以是單獨的意圖,例如「QuestionOneIntent」和「QuestionTwoIntent」,也可以是單個意圖「QuestionIntent」,其中這些意圖中的槽值對應於單個問題。由於原文並未提供太多信息,我不能說哪種結構是最好的設置。
在alexa-sdk中有兩種常見類型的響應。 「:告訴」將使Alexa說出迴應,並立即回到她的閒置狀態(不聽你的)。 「:詢問」會說出回覆,等待8秒鐘,然後在等待您發出另一個命令的同時跟進重新提示消息。
至於保持會話有效的對話,你可以簡單地通過使用
var speechOutput = "This is the answer to Question"
var speechOutputReprompt = "Do you have any more questions?"
this.emit(":ask", speechOutput, speechOutputReprompt)
這將使您的會話保持打開狀態,用戶可以繼續問更多的問題發出你的迴應。如果您對reprompt回答「No」,您將不得不做出另一個關閉會話的意圖,從而使shouldEndSession變量爲true。以下是我如何構造代碼的示例:
"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;
}
}
}
}