Je crée une compétence personnalisée pour Alexa. Je souhaite clore la session le Amazon.StopIntent
. Comment puis-je y parvenir avec le code ci-dessous?
const ExitHandler = {
canHandle(handlerInput) {
const request = handlerInput.requestEnvelope.request;
return request.type === 'IntentRequest'
&& (request.intent.name === 'Amazon.StopIntent');
},
handle(handlerInput) {
return handlerInput.responseBuilder
.speak('bye!')
.reprompt('bye!')
.getResponse();
},
};
Alexa met fin à la session lorsque l'indicateur shouldEndSession est défini sur true dans la réponse JSON.
...
"shouldEndSession": true
...
Dans votre générateur de réponses, pouvez-vous essayer avec la fonction d'assistance avecShouldEndSession (true)
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
Les fonctions d'aide du générateur de réponses sont répertoriées ici
Dans votre extrait de code, vous mettriez fin à la session simplement en supprimant la ligne de ré-invite:
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
donc la solution suggérée ci-dessous fonctionne mais elle est redondante:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
Le code ci-dessus est souvent utilisé dans le scénario opposé, lorsque vous souhaitez garder la session ouverte sans invite:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();