如何在Microsoft Teams会议进行时获取实时参会者数据?
解决Teams会议实时参会者数据获取问题
方案1:Teams Meeting SDK 实时事件订阅
- 依托Teams客户端的
microsoftTeams.meeting命名空间,通过订阅参会者变更事件获取实时数据,这是最直接的原生方案。 - 核心实现代码:
// 初始化Teams SDK microsoftTeams.initialize(); // 监听参会者列表变更 microsoftTeams.meeting.participants.onParticipantsChanged((participants) => { const totalCount = participants.length; const hostInfo = participants.find(p => p.role === 'Presenter' && p.isHost); console.log(`当前参会人数:${totalCount}`); console.log(`主持人:${hostInfo?.displayName || '未识别'}`); // 这里可处理参会者列表的实时更新逻辑 }); - 前提:应用必须是会议侧加载应用或会议选项卡应用,且需在会议运行时获取会议上下文权限。
方案2:Teams Real-Time Media SDK(音视频场景适配)
- 如果你的应用涉及音视频交互,可通过Real-Time Media SDK的参与者跟踪能力,实时捕获参会者的加入/离开、角色变更等状态。
- 核心逻辑:通过
CallAgent实例监听participantsUpdated事件,事件触发时返回最新的参会者完整集合。
方案3:Graph API + 轮询优化(折中方案)
- 若SDK方案受限于权限或场景,可对Graph API做短间隔轮询(建议5-10秒一次),调用
GET /me/onlineMeetings/{meetingId}/participants接口,对比前后两次返回的数据集,推导实时变化。 - 注意:需确保应用拥有
OnlineMeetingParticipant.Read.All权限,轮询间隔不宜过短,避免触发API限流机制。
Live Share SDK 失败排查补充
- Live Share SDK核心能力是协作同步(如白板、内容共享),参会者数据属于附加能力,失败大概率是这两个原因:
- 未正确初始化
LiveShareHost,未获取到有效会议上下文 - 应用未被授予会议协作相关权限
- 未正确初始化
- 若要尝试修复,可参考以下初始化代码:
import { LiveShareHost } from "@microsoft/live-share"; const host = await LiveShareHost.create(); host.participants.subscribe((participants) => { console.log("实时参会者列表:", participants); });
内容的提问来源于stack exchange,提问作者Prathamesh Gogawale
相关产品推荐
相关产品推荐

