Ich gehe zunächst davon aus, dass Sie das Alexa-SDK während Ihrer Entwicklung verwenden. Wenn Sie nicht wissen, dass das ist, benutzen Sie bitte diesen Link finden Sie unter:
https://github.com/alexa/alexa-skills-kit-sdk-for-nodejs
Es gibt mehrere Möglichkeiten, wie Sie Fragen zu Ihrem Geschick in Ihrer Absicht Schema brechen kann. Sie können entweder individuelle Absichten wie "QuestionOneIntent" und "QuestionTwoIntent" oder eine einzelne Absicht "QuestionIntent" sein, wobei die Slot-Werte in diesen Abstimmungen einzelnen Fragen entsprechen. Da der ursprüngliche Beitrag nicht viele Informationen gegeben hat, kann ich nicht sagen, welche Struktur die beste Einstellung wäre.
Es gibt zwei allgemeine Arten von Antworten in der Alexa-SDK. ": tell" wird Alexa dazu bringen, eine Antwort zu geben und sofort in ihren Ruhezustand zurückzukehren (nicht auf Sie zu hören). ": ask" sagt eine Antwort, wartet 8 Sekunden und folgt mit einer wiederholten Nachricht, während Sie darauf warten, dass Sie einen weiteren Befehl geben.
Wie für die Sitzung am Leben in einem Gespräch zu halten, können Sie einfach Ihre Antwort emittieren von
mit
var speechOutput = "This is the answer to Question"
var speechOutputReprompt = "Do you have any more questions?"
this.emit(":ask", speechOutput, speechOutputReprompt)
Dies ermöglicht für die Sitzung geöffnet zu bleiben und der Benutzer weiterhin mehr Fragen stellen. Sie müssen eine weitere Absicht festlegen, die die Sitzung schließt, wenn Sie mit "Nein" antworten und die Variable "sentEndSession" auf "true" setzen. Hier ist ein Beispiel, wie ich den Code strukturieren könnte:
"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;
}
}
}
}