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

Teams机器人开发:如何通过会话ID获取Chat ID以调用Graph API?

通过Teams机器人会话ID获取Chat ID的方法

在Teams机器人开发中,你可以直接从turnContext.Activity中提取会话ID,这个值就是Graph API所需的Chat ID,无需额外转换。具体操作如下:

核心逻辑

Teams机器人收到的Activity对象中,Conversation.Id字段的格式(如19:xxxxxx@thread.tacv2)完全符合Graph API的chat-id要求,直接复用即可。

修改后的代码示例

public async Task OnMessageActivityAsync(ITurnContext turnContext, AppState turnState, CancellationToken cancellationToken)
{
    string token = turnState.Temp.AuthTokens["graph"];
    var conversationReference = turnContext.Activity.GetConversationReference();
    
    // 直接获取Chat ID(即Teams会话ID)
    string chatId = turnContext.Activity.Conversation.Id;
    
    // 初始化Graph客户端并调用消息获取接口
    var graphClient = new GraphServiceClient(new DelegateAuthenticationProvider(requestMessage =>
    {
        requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
        return Task.CompletedTask;
    }));
    
    // 调用chats/{chat-id}/messages端点获取聊天记录
    var chatMessages = await graphClient.Chats[chatId].Messages.Request().GetAsync(cancellationToken);
}

注意事项

  • 确保你的机器人应用已在Azure AD中配置Chat.Read.All或Chat.ReadWrite.All的应用权限,并完成管理员同意,否则会出现权限不足的错误。
  • 该方法适用于一对一聊天、群聊等所有Teams会话类型,无需区分场景。

内容的提问来源于stack exchange,提问作者DevÁsith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:22:37