如何自定义Microsoft Teams机器人Adaptive Card不同按钮的响应确认文本
Microsoft Teams Adaptive Card 自定义按钮确认消息实现方案
核心思路
Teams平台默认的"你的响应已发送至应用"提示是系统级自动生成的,无法直接修改文本,但可以通过以下两种方式实现自定义确认效果:
方案一:禁用默认提示+主动发送自定义消息
通过给Action.Submit按钮添加Teams专属配置,关闭系统默认提示,再由机器人根据按钮类型返回对应自定义消息:
- 在Adaptive Card的按钮配置中,添加
msteams属性并设置suppressNotification: true,禁用默认提示 - 机器人接收按钮提交的请求后,根据提交的
data参数判断按钮类型,发送对应的自定义确认文本或卡片
示例Card配置(JSON):
{ "type": "AdaptiveCard", "version": "1.0", "body": [{"type": "TextBlock", "text": "请选择操作"}], "actions": [ { "type": "Action.Submit", "title": "审批通过", "data": {"action": "approve"}, "msteams": {"suppressNotification": true} }, { "type": "Action.Submit", "title": "审批拒绝", "data": {"action": "reject"}, "msteams": {"suppressNotification": true} } ] }
机器人后端处理示例(C#):
protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken) { if (turnContext.Activity.Value != null) { var submitData = JsonConvert.DeserializeObject<dynamic>(turnContext.Activity.Value.ToString()); string action = submitData.action; string customMsg = action switch { "approve" => "审批已通过,后续流程将启动", "reject" => "审批已拒绝,请告知提交人原因", _ => "操作已完成" }; await turnContext.SendActivityAsync(MessageFactory.Text(customMsg), cancellationToken); } }
方案二:使用Teams专属Action.Execute动作
Action.Execute是Teams独有的交互动作,点击后直接触发机器人逻辑,默认不会弹出系统提示,适合需要更复杂交互的场景:
- 将按钮类型设为
Action.Execute,通过data传递按钮标识 - 机器人后端根据
data中的标识返回对应自定义确认消息
注意事项
suppressNotification仅对Action.Submit有效,需确保Adaptive Card版本为1.0及以上- 移动端Teams对部分专属属性的支持可能存在差异,建议测试验证
- 自定义消息支持文本、Adaptive Card等多种形式,可根据需求灵活设计
内容的提问来源于stack exchange,提问作者prayaag
相关产品推荐
相关产品推荐

