web-dev-qa-db-ja.com

カスタム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();
  },
};
8
Deepak Mankotia

shouldEndSessionフラグが応答JSONでtrueに設定されている場合、Alexaはセッションを終了します。

... 
"shouldEndSession": true
...

応答ビルダーで、ヘルパー関数withShouldEndSession(true)を試すことができます

 return handlerInput.responseBuilder
      .speak('bye!')
      .withShouldEndSession(true)
      .getResponse();

応答ビルダーのヘルパー関数がリストされています ここ

23
Cicil Thomas

コードスニペットでは、再プロンプト行を削除するだけでセッションを終了します。

return handlerInput.responseBuilder
  .speak('bye!')
  .getResponse();

したがって、以下の推奨ソリューションは機能しますが、冗長です。

return handlerInput.responseBuilder
      .speak('bye!')
      .withShouldEndSession(true)
      .getResponse();

上記のコードは、反対のシナリオで、再プロンプトなしでセッションを開いたままにしたい場合によく使用されます。

return handlerInput.responseBuilder
      .speak('bye!')
      .withShouldEndSession(false)
      .getResponse();
3
German