问题
I am creating a custom skill for Alexa. I want to close the session on AMAZON.StopIntent
. How can I achieve this with below code?
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();
},
};
回答1:
Alexa ends the session when shouldEndSession flag is set to true in the response JSON.
...
"shouldEndSession": true
...
In your response builder can you try with the helper function withShouldEndSession(true)
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
Response builder helper functions are listed here
回答2:
In your code snippet you would end the session just by removing the reprompt line:
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
so the suggested solution below works but it's redundant:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
The code above is often used in the opposite scenario, when you want to keep the session open without a reprompt:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();
来源:https://stackoverflow.com/questions/51171533/how-to-end-session-for-custom-alexa-skill