Bot Framework V3 自适应卡片下拉框动态取值与联动实现咨询
基于Bot Framework V3的自适应卡片下拉框改造实现
数据库来源填充下拉选项的实现
完全可以通过数据库查询的方式自定义下拉框选项内容,替代原有易出现拼写错误的文本输入框,适配V3版本的实现逻辑如下:
- Bot Framework V3配套支持的自适应卡片版本中,下拉选择框对应的元素类型为
Input.ChoiceSet,只需将该元素的style属性设置为compact,即可渲染为下拉交互控件,从交互层面从根源避免用户输入拼写错误的问题。 - 你可以在构建自适应卡片JSON的流程前,先接入数据库查询逻辑:拉取预设的Group全量列表,将查询结果转换为
ChoiceSet要求的选项结构(每个选项包含value字段即提交给后端的实际标识、title字段即用户端看到的展示文本),直接嵌入到卡片的ChoiceSet节点中完成填充。 - 典型的Group下拉框结构示例:
{ "type": "Input.ChoiceSet", "id": "selectedGroup", "style": "compact", "placeholder": "请选择所属Group", "choices": [ {"value": "tech_dept", "title": "技术部"}, {"value": "product_dept", "title": "产品部"}, {"value": "operation_dept", "title": "运营部"} ] }
Group与Role的下拉联动效果实现
受Bot Framework V3配套的自适应卡片版本(最高支持1.2版本规范)限制,无法实现卡片端无后端交互的即时联动,可通过两轮卡片交互的路径实现近似的联动体验:
- 第一轮交互卡片:仅展示Group下拉选择框,配套提交按钮。用户选定Group并提交选择后,Bot端通过卡片提交的回调接口捕获用户选中的Group值。
- 第二轮内容加载:Bot端拿到用户选中的Group值后,触发数据库联表查询,拉取该Group关联的所有Role列表,重新构建一张新的自适应卡片:
- 将用户上一轮提交的Group值设置为只读展示的文本内容,避免用户重复选择
- 将查询到的Role列表按照上述ChoiceSet的结构,填充到新的Role下拉选择框中
- 将需要隐式传递的用户选择数据通过不可见的
Input.Text字段存储,随后续卡片提交回传后端
- 这种实现方式完全可以适配不同Group关联Role数量差异较大的场景,无需提前把全量Role列表塞进初始卡片,能有效降低初始卡片的体积,提升交互易用性。
注意事项:Bot Framework V3为已停止维护的旧版本,所有实现逻辑需要规避依赖自适应卡片2.0+版本的动态绑定、卡片端即时交互能力,避免在Web Chat、Teams等多渠道渲染时出现兼容性问题。
内容的提问来源于stack exchange,提问作者Pavan Dittakavi
相关产品推荐
相关产品推荐

