Навык должен закрываться при использовании команды exist без возврата ответа об ошибке - Alexa skill Certification Issue - PullRequest
0 голосов
/ 18 апреля 2020

Я получаю эту ошибку при отправке на сертификацию навыка alexa:

"Навык должен закрываться при использовании команды существовать без возврата ответа об ошибке."

Навык не закрывает сессию и не реагирует соответствующим образом, когда пользователи говорят "выход". Вместо этого навык возвращает ответ об ошибке. Убедитесь, что навык не возвращает ошибок при получении SessionEndedRequests, отправленных Alexa.

Уже проверен навык на наличие проблем, и ошибок нет. Я попробовал команду «Выход» и обнаружил ошибку типа «

». Возникла проблема с ответом запрошенного навыка

Не могли бы вы помочь мне решить эту проблему. У меня уже есть AMAZON.StopIntent, который управляет запросом на остановку. Все сеансы закрываются с помощью .withShouldEndSession (true), но проблема остается для сертификации. Я пытался добавить высказывание "exit" в AMAZON.StopIntent и до сих пор не решил свой проблема. Есть идеи?

Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2020

Разработчик Alexa должен включать обработчик запросов, как показано ниже,

  • HelpIntentHandler ()
  • CancelAndStopIntentHandler ()
  • SessionEndedRequestHandler ()

А также, например, обработчик ошибок,

exports.handler = skillBuilder
  .withSkillId("amzn1.ask.skill.1")
  .addRequestHandlers(
    HelloWorldIntentHandler,
    LaunchRequestHandler,
    HelpIntentHandler,
    CancelAndStopIntentHandler,
    SessionEndedRequestHandler,
  )
  .addErrorHandlers(ErrorHandler)
  .lambda();

Вы можете добавить их вот так,

 const HelpIntentHandler = {
      canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
          && handlerInput.requestEnvelope.request.intent.name === 'AMAZON.HelpIntent';
      },
      handle(handlerInput) {
        const speechText = 'Your skill help content will be here';

        return handlerInput.responseBuilder
          .speak(speechText)
          .reprompt(speechText)
          .getResponse();
      },
    };

    const CancelAndStopIntentHandler = {
      canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'IntentRequest'
          && (handlerInput.requestEnvelope.request.intent.name === 'AMAZON.CancelIntent'
            || handlerInput.requestEnvelope.request.intent.name === 'AMAZON.StopIntent');
      },
      handle(handlerInput) {
        const speechText = 'Goodbye!';

        return handlerInput.responseBuilder
          .speak(speechText)
          .getResponse();
      },
    };


    const SessionEndedRequestHandler = {
      canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'SessionEndedRequest';
      },
      handle(handlerInput) {
        console.log(`Session ended with reason: ${handlerInput.requestEnvelope.request.reason}`);

        return handlerInput.responseBuilder.getResponse();
      },
    };

    const ErrorHandler = {
      canHandle() {
        return true;
      },
      handle(handlerInput, error) {
        console.log(`Error handled: ${error.message}`);

        return handlerInput.responseBuilder
          .speak('Sorry, I can\'t understand the command. Please say again.')
          .getResponse();
      },
    };

Также вы можете узнать больше о голосовом взаимодействии и тестировании взаимодействия с пользователем и можете проверить свои навыки вручную для сертификации.

...