How to troubleshoot this AWS lambda error - An error has occurred: Received error response from Lambda: Unhandled?
Solution 1
Here is what worked for me:
Lex sends request in LexEvent
Class type and expects response in LexResponse
Class type.So i changed my parameter from string
to LexEvent
and return type from string
to LexResponse
.
public LexResponse FunctionHandler(LexEvent lexEvent, ILambdaContext context)
{
//Your logic goes here.
IIntentProcessor process;
switch (lexEvent.CurrentIntent.Name)
{
case "BookHotel":
process = new BookHotelIntentProcessor();
break;
case "BookCar":
process = new BookCarIntentProcessor();
break;
case "Greetings":
process = new GreetingIntentProcessor();
break;
case "Help":
process = new HelpIntentProcessor();
break;
default:
throw new Exception($"Intent with name {lexEvent.CurrentIntent.Name} not supported");
}
return process.Process(lexEvent, context);// This is my custom logic to return LexResponse
}
But i'm not sure about the root cause of the issue.
Solution 2
The communication between Lex and Lambda is not straight forward like normal functions. Amazon Lex expects output from Lambda in a particular JSON format and data like slot details etc are also sent to Lambda in a similar JSON. You can find the blueprints for them here: Lambda Function Input Event and Response Format. Make sure your C# code also return a JSON in the similar fashion, so that Lex can understand and do the further processing.
Hope it helps!
ManirajSS
Fav quote: High quality code doesn't happen by accident - it takes patience and precision
Updated on June 04, 2022Comments
-
ManirajSS almost 2 years
I'm new to AWS. I'm build chatbot using aws lex and aws lambda c#. I'm using sample aws lambda C# program
namespace AWSLambda4 { public class Function { /// <summary> /// A simple function that takes a string and does a ToUpper /// </summary> /// <param name="input"></param> /// <param name="context"></param> /// <returns></returns> public string FunctionHandler(string input, ILambdaContext context) { try { return input?.ToUpper(); } catch (Exception e) { return "sorry i could not process your request due to " + e.Message; } } } }
I created a slot in aws lex to map first parameter input . But i'm always getting this error An error has occurred: Received error response from Lambda: Unhandled
In Chrome network tab i could see Error- 424 Failed Dependency which is related to authentication.
Please help how to troubleshoot AWS lambda C# error which is used by aws lex. I came across cloudwatch but I'm not sure about that.
Thanks!
-
ManirajSS almost 7 yearsLambda have both handled and un-handled error.Since it is unhandled error the lambda method itself not invoked i guess.And lex console states
Error- 424 Failed Dependency
which is related to authentication.So i think its more related to configuration related error rather than coding related error. -
yashhy almost 7 years@ManirajSS I have an error which says
Received invalid response from Lambda
and in network tab it seems to be a 424. do you know the possible route cause? -
ManirajSS almost 7 years@yashhy i have resolved my issue. Please see my answer and let me know if you have any doubts.
-
yashhy almost 7 yearsas @Repakula mentioned the 424 error response seems to be a Lex return type issue? and in my case im using nodejs and following the sample structure like stated here
-
yashhy almost 7 yearsI solved the problem as suggested by @ Repakula see the detailed answer here