Как закончить сеанс для пользовательского навыка Alexa?
Я создаю собственный навык для Alexa. Я хочу закрыть сессию на AMAZON.StopIntent
, Как я могу добиться этого с помощью кода ниже?
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();
},
};
2 ответа
Решение
Alexa завершает сеанс, когда в ответе JSON для флага shouldEndSession установлено значение true.
...
"shouldEndSession": true
...
В своем построителе ответов вы можете попробовать с помощью вспомогательной функции withShouldEndSession(true)
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
Вспомогательные функции построителя ответов перечислены здесь
В своем фрагменте кода вы можете завершить сеанс, просто удалив строку reprompt:
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
поэтому предлагаемое ниже решение работает, но оно избыточно:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
Приведенный выше код часто используется в противоположном сценарии, когда вы хотите оставить сеанс открытым без повторной проверки:
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();