如何在AWS Lex V2中通过Lambda后端实现带项目符号的格式化响应
解决AWS Lex V2无法显示带项目符号的格式化响应问题
问题核心
基于AWS Lex V2开发聊天机器人,通过Lambda返回响应时,期望输出带项目符号的结构化文本,但使用PlainText类型时所有内容会被压缩成单段,换行、HTML、Markdown标记均无效。
原因分析
Lex V2的PlainText类型会直接渲染纯文本,完全忽略换行符、格式化标签或Markdown语法,所有内容会被合并为一行显示。
可行解决方案
方案1:使用Markdown类型消息
Lex V2原生支持Markdown格式的消息,只需将Lambda返回的contentType改为"Markdown",并使用标准Markdown列表语法:
'messages': [ { "contentType": "Markdown", "content": f"Here are the details of your order:\n- Order ID: {row['orderId']}\n- Created on: {row['Date']}" } ]
这种方式能让Lex正确渲染项目符号和换行,在Lex Web UI及多数前端集成中都能正常显示。
方案2:使用Response Card构建结构化卡片
如果部分前端对Markdown支持有限,可以用Lex的Response Card生成结构化字段列表,兼容性更强:
'messages': [ { "contentType": "ResponseCard", "content": "", "responseCard": { "version": "1", "contentType": "application/vnd.amazonaws.card.generic", "genericAttachments": [ { "title": "Here are the details of your order:", "fields": [ {"label": "Order ID", "value": f"{row['orderId']}"}, {"label": "Created on", "value": f"{row['Date']}"} ] } ] } } ]
该方案会生成带标题和字段的卡片,内容排版规整,所有Lex官方前端都支持。
为什么之前的尝试无效
- 用
\n换行但使用PlainText类型:Lex会自动过滤换行符; - 使用HTML标签:PlainText类型会将标签视为普通文本,不会解析;
- 用Markdown语法但未指定
Markdown类型:Lex无法识别PlainText中的Markdown标记。
内容的提问来源于stack exchange,提问作者Nageswar Kumar Murmu
相关产品推荐
相关产品推荐

