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
相关产品推荐
相关产品推荐

