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();
},
};
shouldEndSessionフラグが応答JSONでtrueに設定されている場合、Alexaはセッションを終了します。
...
"shouldEndSession": true
...
応答ビルダーで、ヘルパー関数withShouldEndSession(true)を試すことができます
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
応答ビルダーのヘルパー関数がリストされています ここ
コードスニペットでは、再プロンプト行を削除するだけでセッションを終了します。
return handlerInput.responseBuilder
.speak('bye!')
.getResponse();
したがって、以下の推奨ソリューションは機能しますが、冗長です。
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(true)
.getResponse();
上記のコードは、反対のシナリオで、再プロンプトなしでセッションを開いたままにしたい場合によく使用されます。
return handlerInput.responseBuilder
.speak('bye!')
.withShouldEndSession(false)
.getResponse();