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

如何在Teams应用安装后获取历史参与者对话信息及BotFramework SDK方案

Teams Bot 获取历史对话信息方案及SDK实现方法

核心思路

Teams 不会主动向已安装的 Bot 推送历史对话数据,需通过主动调用 API 拉取,主要依赖 BotFramework SDK 的对话历史接口 或 Microsoft Graph API,前提是配置好对应权限并完成身份验证。

步骤1:配置必要权限

  • 在 Azure AD 中为 Bot 注册应用,添加以下应用权限(根据需求选择):
    • Chat.Read.All:允许读取所有一对一/群聊对话内容
    • Chat.ReadBasic.All:仅读取对话基本信息(不含消息内容)
    • ChannelMessage.Read.All:读取团队频道内的历史消息
  • 完成权限授予(需管理员同意)

步骤2:获取目标对话ID

对话ID是拉取历史的关键标识,可通过两种方式获取:

  • 当 Bot 被添加到对话时,ConversationUpdate 事件的 payload 中会包含 conversation.id 字段,可直接存储
  • 通过 Graph API 调用 GET /me/chats(用户上下文)或 GET /chats(应用权限),列出所有对话并筛选目标对话的 id

步骤3:BotFramework SDK 实现方法(以 C# 为例)

使用 SDK 内置的 GetConversationHistoryAsync 方法拉取历史对话:

using Microsoft.Bot.Connector;
using Microsoft.Bot.Connector.Authentication;
using System.Threading.Tasks;

public async Task GetChatHistory()
{
    // 初始化 Bot 凭据
    var appCredentials = new MicrosoftAppCredentials("<你的Bot App ID>", "<你的Bot App Secret>");
    var botClient = new BotFrameworkHttpClient(appCredentials, new System.Net.Http.HttpClient());

    // 目标对话ID和服务地址(可从ConversationUpdate事件或Graph API获取)
    string conversationId = "<目标对话ID>";
    string serviceUrl = "<对话的ServiceUrl>";

    // 配置历史查询参数
    var queryParams = new TranscriptHistoryQuery
    {
        MaxCount = 50, // 最多拉取50条消息
        StartTime = System.DateTimeOffset.UtcNow.AddDays(-30) // 拉取30天内的消息
    };

    // 调用接口获取历史对话
    var transcript = await botClient.GetConversationHistoryAsync(serviceUrl, conversationId, queryParams);

    // 遍历处理历史消息
    foreach (var activity in transcript.Activities)
    {
        // 处理消息内容,如activity.Text、activity.From等
    }
}

替代方案:使用 Microsoft Graph API

若需要更灵活的筛选或扩展能力,可直接调用 Graph API:

GET https://graph.microsoft.com/v1.0/chats/{chat-id}/messages?$top=50&$filter=createdDateTime ge 2024-01-01T00:00:00Z

在 SDK 中可通过 GraphServiceClient 实现,需注入已完成身份验证的客户端实例。

注意事项

  • 历史消息拉取的范围受权限限制,需确保申请的权限与需求匹配
  • ServiceUrl 需与对话所属的 Teams 区域一致,若不确定可通过 Graph API 获取对话详情
  • 若拉取团队频道历史,需使用 GET /teams/{team-id}/channels/{channel-id}/messages 接口

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:45:27