web-dev-qa-db-fra.com

Comment terminer la session pour une compétence Alexa personnalisée?

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

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

23
Cicil Thomas

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();
3
German