You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Bot在Microsoft Teams私聊中无需@即可解析消息的问题

解决Teams私聊中Azure Bot无需@即可响应消息的问题

问题原因

Teams私聊场景默认仅当消息中@Bot名称时,才会将消息转发给Azure Bot;而频道场景下,只要Bot加入频道,所有消息都会被转发。这是Teams默认的消息路由规则,和应用权限配置无关。

解决方案

要实现私聊无需@Bot即可触发响应,需修改Azure Bot的Teams频道配置:

  • 登录Azure门户,找到你的Bot资源
  • 进入Channels页面,找到Microsoft Teams频道,点击Configure
  • 在配置界面中找到消息传递模式(Message delivery mode)选项,选择始终传递消息(Always deliver messages)
  • 保存配置,等待5-10分钟让设置生效

代码适配说明

你的现有代码逻辑无需大幅调整,因为私聊消息不带@Bot名称时,activity.Text就是纯消息内容,原正则表达式@"#(\d+)"依然能正常匹配#123455这类格式的消息。以下是修正符号后的核心代码:

protected override async Task OnMessageActivityAsync(ITurnContext<IMessageActivity> turnContext, CancellationToken cancellationToken)
{
    var activity = turnContext.Activity;
    var submitActionData = turnContext.Activity.Value as JObject;
    string action = null;
    if (submitActionData != null)
    {
        action = submitActionData["action"]?.ToString();
    }
    var text = activity.Text.Trim().ToLower();
    Regex regex = new Regex(@"#(\d+)");
    MatchCollection matches = regex.Matches(text);
    if (matches.Count > 0)
    {
        List<string> identifiers = new List<string>();
        foreach (Match match in matches)
        {
            identifiers.Add(match.Value.Replace("#", ""));
        }
        await FetchDataAndSendAdaptiveCardAsync(turnContext, identifiers, cancellationToken);
    }
}

注意事项

  • 配置生效后,私聊中所有消息都会发送给Bot,可根据需求在代码中添加过滤逻辑,避免不必要的响应
  • 该配置仅影响私聊场景,频道的消息转发规则不受影响

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 02:58:17