Как вызвать ответ для Custom Intent? - PullRequest
0 голосов
/ 02 февраля 2019

Недавно я создал навык Алекса 'загадка', и у меня возникли проблемы с высказываниями.Я создал намерение «GetRiddleIntent», а затем связал несколько высказываний, например, «убей меня» с этим намерением.Я не включил никаких слотов намерения.Когда я проверяю свое умение, я должен использовать имя вызова, чтобы получить результаты лямбды.

Встроенные намерения работают при вызове, например, «LaunchRequest» и «Amazon HelpRequest», но ни один из примеров высказываний для моего настраиваемого намерения не возвращает никаких результатов, я продолжаю получать сообщение «Возникла проблема с запрошенным ответом на навыки»"в результате.

Это для навыка загадки, реализуемого с использованием JAVA и ask-sdk V2.

Я попытался реализовать обработчик, отвечающий за загадки с нуля.

Отредактировал строку Загадки, чтобы убедиться, что в ней нет символов, которые могли бы вызвать какой-либо сбой ответа.

Перепутался с изменением "shouldEndSession" на true и на false (в настоящее время оно имеет значение false)

Я также скопировал ответ об ошибке из консоли разработчика в свои лямбда-конфигурации для более подробного журнала ошибок, и ничто не указывает конкретно на мой, скажем, код.Я получаю исключение java.lang.NullPointerException, которое указывает на ошибки во встроенных библиотеках, например com.amazon.ask.SkillStreamHandler.handleRequest (SkillStreamHandler.java:71)

Я также рассмотрел следующие примеры навыков вV2 за помощь, но никто не помог.https://github.com/alexa/alexa-skills-kit-sdk-for-java/tree/2.0.x/samples

package lambda.riddle.handlers;

import static com.amazon.ask.request.Predicates.intentName;

import java.util.Optional;

import com.amazon.ask.dispatcher.request.handler.HandlerInput;
import com.amazon.ask.dispatcher.request.handler.RequestHandler;
import com.amazon.ask.model.Response;

import riddle_generator.Riddle;
import riddle_generator.GenerateRiddles;



public class GetRiddleIntentHandler implements RequestHandler 
{
  public boolean canHandle(HandlerInput input)
  {
    return input.matches(intentName("GetRiddleIntent"));
  }

  @Override
  public Optional<Response> handle(HandlerInput input) 
  {

    String speechText, repromptText;

    speechText = "I am caucasian, internet famous and best known for my catchphrase, catch me outside how about that. Who am I?";
    repromptText = "I am caucasian, internet famous and best known for my catchphrase, catch me outside how about that. Who am I?";
    return input.getResponseBuilder()
        .withSimpleCard("RiddleSession", speechText)
        .withSpeech(speechText)
        .withReprompt(repromptText)
        .withShouldEndSession(false)
        .build();
  }
}

Я должен получить speechText в качестве ответа в консоли разработки, но вместо этого получить сообщение «Возникла проблема с ответом запрошенного навыка».

Lambda Console Error Log

Developer console output

Ниже приведена ошибка Ответ:

{
  "request": {
        "type": "SessionEndedRequest",
        "requestId": "amzn1.echo-api.request.338924d9-8cf9-448a-85a2-6a8bacc5e1be",
        "timestamp": "2019-02-02T12:01:04Z",
        "locale": "en-GB",
        "reason": "ERROR",
        "error": {
            "type": "INVALID_RESPONSE",
            "message": "An exception occurred while dispatching the request to the skill."
        }
    }
}
...