如何使用C#解析QnAMaker响应以生成卡片或展示图片
QnAMaker 富文本响应解析的官方支持与实现路径
官方提供的C#解析能力
微软没有针对QnAMaker单独开发专属的富文本解析类,但在官方Bot技术栈内有成熟的内置组件可以直接使用:
- Bot Framework SDK 内置了完整的Markdown渲染与解析逻辑,全流程支持识别QnAMaker返回内容里的普通文本、超链接、内嵌图片格式,原生不需要手动编写解析规则。
- SDK底层依赖的Markdig库是微软官方开源维护的高性能C# Markdown解析器,是所有Bot相关组件处理Markdown内容的通用实现,完全可以脱离Bot框架独立在其他C#项目中使用。
可直接落地的实现方法
- 如果开发场景基于Bot Framework技术栈
常规展示场景下不需要手动解析QnAMaker返回的原始字符串,SDK会自动把Markdown格式的内容转换成对应渠道可展示的交互元素;如果需要提取结构化内容来拼接自定义交互卡片,直接调用SDK暴露的Markdown解析接口,就能把原始响应拆成独立的内容块:- 普通文本块:提取纯展示文案
- 链接块:提取按钮展示文本与跳转地址
- 图片块:提取图片描述与资源地址
- 如果是单独调用QnAMaker接口、没有引入全量Bot SDK
可以直接使用Markdig类库,对QnAMaker返回的字符串做语法树解析,遍历树节点时过滤出链接、图片类型的节点,即可拿到结构化的内容。
这种解析方式能避免自己写正则时碰到的格式转义、特殊字符嵌入等边界问题,适配绝大多数在QnAMaker后台配置的富文本格式。
针对你当前收到的QnAMaker响应,通过上述方法可以稳定拆分出三类独立内容:
- 基础展示文本:A new way to interact
- 可交互链接:显示文本为 FIND OUT MORE
- 可展示图片:对应内容中的内嵌图片资源
拆分完成后就可以自由组合成自适应卡片、英雄卡片等自定义交互组件,不需要额外处理格式兼容问题。
内容的提问来源于stack exchange,提问作者dalton5
相关产品推荐
相关产品推荐

