Я занимаюсь разработкой навыков Alexa и у меня возникли некоторые проблемы в лямбда-выражении (написанном на Java) при разборе события ввода.
Мой класс Lamba такой
public class AWSLambdaLaunch implements RequestHandler<RequestEnvelope, ResponseEnvelope>{
@Override
public ResponseEnvelope handleRequest(RequestEnvelope requestEnvelope, Context context) {
//...
}
}
Но я получаю следующую ошибку
com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class com.amazon.ask.model.RequestEnvelope]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@543c6f6d; line: 1, column: 2]
No suitable constructor found for type [simple type, class com.amazon.ask.model.RequestEnvelope]: can not instantiate from JSON object (missing default constructor or creator, or perhaps need to add/enable type information?)\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@543c6f6d; line: 1, column: 2]
Так что я думаю, что проблема в том, что нет способа проанализировать входной объект в объект RequestEnvelope из com.amazon.ask.model.RequestEnvelope.
Я также попробовал com.amazon.ask.dispatcher.request.handler.HandlerInput с тем же результатом.
Если я изменю
public class AWSLambdaLaunch implements RequestHandler<RequestEnvelope, ResponseEnvelope>
декларация с этим
public class AWSLambdaLaunch implements RequestHandler<Map<String, Object>, ResponseEnvelope>
Я не получаю ошибок, и все работает нормально, но я нахожу более «грязным» для извлечения элементов и значений из вложенных HashMaps
Поэтому мне интересно, есть ли способ напрямую проанализировать ввод в POJO или есть уже созданный POJO, который я могу использовать.
[edit] Вот код для RequestEnvelope класса из java aws sdk. Как отметил @ apandey846, в классе нет конструктора по умолчанию, так что, возможно, в этом проблема. Есть ли способ, которым я могу использовать это?
[edit] Я уже проверил, что полное имя класса для обработчика правильно настроено на вкладке конфигурации Lambda, как указано здесь alexa-java-sdk-issue-102 . Я думаю, что issue-104 - это еще одна проблема, на которую ссылается только из-за шаблона.