Search code examples
amazon-web-servicesaws-lambdaamazon-iamchatbotamazon-lex

How to troubleshoot this AWS lambda error - An error has occurred: Received error response from Lambda: Unhandled?


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!


Solution

  • 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.