Как закончить сеанс для пользовательского навыка Alexa? - PullRequest
0 голосов
/ 04 июля 2018

Я создаю собственный навык для 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 ]

0 голосов
/ 07 сентября 2018

В своем фрагменте кода вы можете завершить сеанс, просто удалив строку повторной репликации:

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

поэтому предлагаемое ниже решение работает, но оно избыточно:

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

Приведенный выше код часто используется в противоположном сценарии, когда вы хотите оставить сеанс открытым без повторной реплики:

return handlerInput.responseBuilder
      .speak('bye!')
      .withShouldEndSession(false)
      .getResponse();
0 голосов
/ 04 июля 2018

Alexa завершает сеанс, когда в ответе JSON установлен флаг shouldEndSession , равный true.

... 
"shouldEndSession": true
...

В вашем построителе ответов вы можете попробовать использовать вспомогательную функцию withShouldEndSession (true)

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

Перечислены вспомогательные функции построителя ответов здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...