如何控制C# Bot Framework中Prompt对话框的尺寸?
修改Prompt.Dialog宽度的可行方案
嘿,我之前开发Bot Framework聊天机器人时也碰到过这个问题——默认的Prompt对话框确实没法直接通过Size/Width这类属性调整,但有几个实用的办法能解决:
1. 给Web Chat组件加自定义CSS样式
如果你的Bot是通过Web Chat嵌入网页的,最直接的方式就是用CSS覆盖默认对话框样式。先打开浏览器开发者工具,找到Prompt对话框对应的DOM元素(旧版类名一般是wc-message-dialog,新版可能是ms-dialog),然后添加如下样式:
/* 自定义对话框宽度,这里设置最大宽度800px,同时自适应容器90%宽度 */ .wc-message-dialog { max-width: 800px !important; width: 90% !important; margin: 0 auto; /* 让对话框居中显示 */ }
记得加!important来覆盖框架默认样式,不同版本的Web Chat类名可能有小变化,一定要用开发者工具确认准确的类名。
2. 改用Adaptive Card实现自定义选择界面
如果想要更灵活的样式控制,完全可以放弃默认的Prompt.Dialog,用Adaptive Card来做选项选择。Adaptive Card支持直接设置宽度,还能自定义布局和样式,示例如下:
{ "type": "AdaptiveCard", "version": "1.0", "width": "700px", /* 自定义卡片宽度 */ "body": [ { "type": "TextBlock", "text": "请选择您需要的服务:", "size": "Medium", "weight": "Bolder" } ], "actions": [ { "type": "Action.Submit", "title": "账户查询", "data": "account_query" }, { "type": "Action.Submit", "title": "业务办理", "data": "business_handle" }, { "type": "Action.Submit", "title": "人工客服", "data": "human_service" } ] }
在Bot代码里发送这个Adaptive Card,用户看到的就是你自定义宽度的选择界面,体验更统一。
3. 针对特定渠道的调整
如果你的Bot部署在Teams、Skype这类平台,这些渠道对卡片样式有自己的规范,Web Chat的CSS方法可能不适用。这种情况下,建议用对应渠道的自定义卡片格式(比如Teams的Office 365 Connector Card),或者通过渠道提供的样式API来调整宽度。
总结下来,Web Chat场景用CSS自定义最快捷,想要全渠道统一体验就选Adaptive Card,根据你的部署渠道挑合适的方法就行~
内容的提问来源于stack exchange,提问作者Vivienne
相关产品推荐
相关产品推荐

