You need to enable JavaScript to run this app. Teams会议群组机器人@提及在桌面/网页端显示空白问题咨询
优惠活动
大模型
产品
解决方案
定价
更多

Teams会议群组机器人@提及在桌面/网页端显示空白问题咨询

Teams群聊机器人@提及桌面端/网页端空白问题修复方案

问题表现

  • 机器人向群组发送的带@提及的消息,桌面端、网页端聊天视图显示空白
  • 移动端、左侧通知栏可正常展示完整内容

问题根因

  1. 构造Mention对象时,仅传入了用户ID,未补全ChannelAccount的Name字段,桌面端渲染@提及需要同时匹配ID、名称、@文本三者一致性,移动端和通知栏渲染逻辑更宽松因此可以正常显示
  2. 若使用XML转义后直接显示原文,是因为未显式设置消息的TextFormat为Xml格式,默认纯文本格式会直接输出标签内容

修复步骤

  1. 构造ChannelAccount时同时传入用户ID和用户名称
  2. 给消息对象显式设置TextFormat = TextFormatTypes.Xml
  3. 优化正则捕获逻辑,直接取分组内容避免字符串分割出错

修复后代码

...
using Microsoft.Bot.Schema;
using Microsoft.Bot.Connector;
using System.Text.RegularExpressions;

using (ConnectorClient _client = new ConnectorClient(new Uri(groupChat.ServiceUrl), GetMicrosoftAppCredentials(), new HttpClient()))
{
    var theMessage = Activity.CreateMessageActivity();
    theMessage.Text = messageDto.Message;
    // 新增:设置文本格式为Xml,正确解析<at>标签
    theMessage.TextFormat = TextFormatTypes.Xml;

    // 匹配消息中的<at>标签
    var textMentions = Regex.Matches(theMessage.Text, @"<at>(.*?)<\/at>");
    var mentionObjects = new List<Entity>();

    foreach (Match textMention in textMentions)
    {
        // 直接取正则分组的用户名,无需分割字符串
        var theName = textMention.Groups[1].Value.Trim();
        if (string.IsNullOrEmpty(theName)) continue;
        
        var teamsUser = _botContext.Users.FirstOrDefault(u => u.Name.Equals(theName));
        if (teamsUser == null) continue;
        
        var mention = new Mention
        {
            // 补全ChannelAccount的Name字段,桌面端渲染必须
            Mentioned = new ChannelAccount(teamsUser.TeamsUserId, teamsUser.Name),
            Text = textMention.Value
        };
        mentionObjects.Add(mention);
    }

    theMessage.Entities = mentionObjects;

    try
    {
        var response = await _client.Conversations.SendToConversationAsync(groupChat.GroupChatId, (Activity)theMessage);
        return Ok(response.Id);
    }
    catch (Exception e)
    {
        // 建议添加异常日志便于排查问题
    }
}
...

补充验证点

如果修复后仍有问题,可以检查以下配置:

  • 确认机器人在目标群组内拥有发送提及的权限
  • 升级Teams桌面客户端到最新版本,部分旧版本存在提及渲染兼容问题
  • 确认teamsUser.TeamsUserId是正确的29/28开头的Teams用户AADID,而非其他平台的用户ID

内容的提问来源于stack exchange,提问作者Xebozone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 19:15:03