如何修改Microsoft Teams发送自适应卡片时的通知提示文本
问题根因
你设置的Summary属性是Bot Framework为无障碍读屏场景预留的卡片替代文本字段,绝大多数主流聊天渠道的系统推送通知不会读取该字段,因此会 fallback 显示默认的「Sent a card」提示。
解决方案
场景1:允许自定义通知文本同时显示在对话页面的卡片上方
这是兼容性最好的方案,适配所有Bot Framework支持的渠道,直接给Activity的Text属性赋值即可,修改后代码如下:
var connectorClient = new ConnectorClient(new Uri(serviceUrl), credentials); var response = MessageFactory.Attachment(new List<Attachment>() { GetCardAttachment() }); // 替换为你需要的自定义通知内容 response.Text = "Custom Message"; await connectorClient.Conversations.SendToConversationAsync(conversationId, (Activity)response);
场景2:不希望自定义文本出现在对话页面,仅在推送通知弹窗显示
该场景需要针对你使用的具体渠道做适配,以最常用的Microsoft Teams渠道为例,通过ChannelData配置即可实现文本仅在通知显示、不在对话页渲染,代码如下:
var connectorClient = new ConnectorClient(new Uri(serviceUrl), credentials); var response = MessageFactory.Attachment(new List<Attachment>() { GetCardAttachment() }); response.Text = "Custom Message"; // 配置Teams渠道专属参数 response.ChannelData = new { notification = new { alert = true, content = "Custom Message" }, // 开启后Text字段不会在对话界面渲染 hideText = true }; await connectorClient.Conversations.SendToConversationAsync(conversationId, (Activity)response);
如果使用其他渠道,只需查询对应渠道的Bot Framework适配规则,修改ChannelData中的对应配置项即可,核心逻辑都是用Text字段存储通知内容,通过渠道配置控制文本的显示范围。
内容的提问来源于stack exchange,提问作者saraswathi
相关产品推荐
相关产品推荐

