AWS Lex v2中如何引用子槽用于对话或条件判断?
AWS Lex v2复合子槽引用解决方案
1. 引用firstName子槽输出个性化感谢语
在Lex的响应模板中,直接使用{fullName.firstName}语法嵌入子槽值,示例响应文本:
谢谢,{fullName.firstName}
只要fullName复合槽已成功收集到firstName的值,就能自动替换为对应内容(如“谢谢,John”)。
2. 根据year子槽做条件判断(区分新旧车辆)
Lex v2的响应模板不支持直接条件分支,需通过**对话代码钩子(Lambda函数)**实现逻辑判断:
- 从会话状态中提取车辆year子槽值
- 基于年份阈值执行不同处理逻辑
示例Python Lambda代码:
def lambda_handler(event, context): # 提取复合槽中的year子槽值 vehicle_slot = event['sessionState']['intent']['slots'].get('车辆信息') if vehicle_slot and vehicle_slot['value']['interpretedValue'].get('year'): vehicle_year = vehicle_slot['value']['interpretedValue']['year'] # 自定义新旧车分界年份(示例为2020年) if int(vehicle_year) >= 2020: response_content = "您的新车将享受优先检测服务" else: response_content = "我们会为您的旧车做全面的部件检查" else: response_content = "请提供您的车辆年份信息" # 返回处理后的响应 return { "sessionState": { "dialogAction": {"type": "Close"}, "intent": event['sessionState']['intent'] }, "messages": [{"contentType": "PlainText", "content": response_content}] }
3. 引用model子槽输出车辆关怀语
同样在响应模板中使用{车辆信息.model}语法,示例响应文本:
我们会悉心照料您的{车辆信息.model}
该语法会自动替换为收集到的model值(如“我们会悉心照料您的Camry”)。
注意事项
- 子槽名称区分大小写,需与复合槽定义的名称完全一致
- Lambda中提取子槽时,需遵循Lex v2的会话状态结构:
event['sessionState']['intent']['slots']['复合槽名']['value']['interpretedValue']['子槽名'] - 响应模板中无需添加
$符号,直接使用{复合槽名.子槽名}即可引用子槽值
内容的提问来源于stack exchange,提问作者Travis Don Kindred
相关产品推荐
相关产品推荐

