usar tutorial porque funcion expresiones example crear aws amazon-web-services aws-lambda amazon-iam chatbot amazon-lex

amazon web services - tutorial - Cómo solucionar este error de AWS lambda: se ha producido un error: Respuesta de error recibida de Lambda: ¿No se ha manejado?



invoke lambda aws (2)

Soy nuevo en AWS. Soy build chatbot usando aws lex y aws lambda c #. Estoy usando el programa aws lambda C # de la muestra

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; } } } }

Creé una ranura en aws lex para mapear la entrada del primer parámetro. Pero siempre recibo este error. Ha ocurrido un error: Respuesta de error recibida de Lambda: no controlada.

En la pestaña de red de Chrome pude ver Error-424 Failed Dependency, que está relacionado con la autenticación.

Ayúdenos a solucionar el error de AWS lambda C # que utiliza aws lex. Encontré CloudWatch pero no estoy seguro de eso.

¡Gracias!


Esto es lo que funcionó para mí:

Lex envía la solicitud en el tipo LexEvent Class y espera una respuesta en el tipo LexResponse Class. Así que cambié mi parámetro de string a LexEvent y devuelvo el tipo de string a 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 }

Pero no estoy seguro sobre la causa raíz del problema.


La comunicación entre Lex y Lambda no es directa como las funciones normales. Amazon Lex espera que la salida de Lambda en un formato JSON particular y datos como los detalles de la ranura, etc. también se envían a Lambda en un JSON similar. Puede encontrar los planos aquí: evento de entrada de función lambda y formato de respuesta . Asegúrese de que su código C # también devuelva un JSON de la misma manera, para que Lex pueda comprender y realizar el procesamiento posterior.

¡Espero eso ayude!