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!