我是 AWS 的新手。我正在使用 aws lex 和 aws lambda c# 构建聊天机器人。我正在使用示例 aws lambda C# 程序
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;
}
}
}
}
我在 aws lex 中创建了一个插槽来映射第一个参数输入。但我总是收到此错误 发生错误:收到来自 Lambda 的错误响应:未处理
在Chrome网络选项卡中,我可以看到与身份验证相关的错误-424失败依赖项。
请帮助如何排查 AWS lex 使用的 AWS lambda C# 错误。我遇到了云监视,但我不确定。
谢谢!
Lex 和 Lambda 之间的通信不像普通函数那样简单。Amazon Lex 希望 Lambda 以特定的 JSON 格式输出,插槽详细信息等数据也会以类似的 JSON 格式发送到 Lambda。您可以在此处找到它们的蓝图:Lambda 函数输入事件和响应格式。确保 C# 代码也以类似的方式返回 JSON,以便 Lex 能够理解并执行进一步的处理。
希望对您有所帮助!
以下是对我有用的方法:
Lex 以类类型发送请求LexEvent
并期望以类类型LexResponse
响应。所以我将参数从 string
更改为 LexEvent
,并将返回类型从 string
更改为 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
}
但我不确定问题的根本原因。