AWS Lex调用Lambda报KeyError: 'currentIntent'问题求助
问题排查方案:KeyError: 'currentIntent' in Lex-Lambda集成
核心原因
你的Lambda代码基于Lex V1请求结构编写(依赖currentIntent字段),但当前使用的是Lex V2版本,两者请求Payload结构差异显著,导致代码无法找到currentIntent键触发错误。
具体修复步骤
- 确认Lex版本
- 登录AWS Lex控制台,检查机器人版本:V2界面会显示"会话状态""意图确认设置"等模块,与V1界面区分明显。
- 适配Lambda代码到Lex V2结构
Lex V2中意图信息位于event['sessionState']['intent'],而非V1的event['currentIntent']。修复示例:
原V1代码片段:
修改为V2兼容代码:intent = event['currentIntent'] city = intent['slots']['City']intent = event['sessionState']['intent'] city = intent['slots']['City']['value']['interpretedValue'] - 更新测试数据匹配V2结构
Lex V2测试请求示例(替换为你的实际意图和槽位):{ "sessionId": "test-session-id", "sessionState": { "intent": { "name": "WeatherIntent", "slots": { "City": { "value": { "interpretedValue": "Beijing" } } }, "state": "FulfillmentInProgress" } }, "inputTranscript": "北京的天气" } - 重新配置Lex-Lambda集成
- 在Lex V2控制台的机器人"别名"设置中,确认关联的Lambda函数版本正确,触发类型按需选择"初始化和完成"或"完成"。
- 验证日志
修复后重新测试,查看CloudWatch日志是否仍存在KeyError,若出现槽位取值类错误,针对性调整字段路径。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

