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

使用TeamsFx SDK获取会议信息时提示Invalid meeting id错误

问题原因

你收到的报错:

"Invalid meeting id 19:meeting_MzU0MzFhYTQtNjlmOS00NGI4LTg1MTYtMGI3ZTkwOWYwMzk4@thread.v2."
核心原因是接口参数和ID类型不匹配:

  • 从Teams上下文拿到的context.meetingId是base64编码值,用atob()解码后得到的是会议关联的聊天线程ID,格式为19:meeting_xxx@thread.v2,也就是你报错信息里的那串值
  • Microsoft Graph的/me/onlineMeetings/{meetingId}接口要求传入的是GUID格式的会议唯一标识,不支持直接传入聊天线程ID,传错就会触发无效ID报错
  • 你观察到的「chatId经base64编码后与meetingId相等」是正常现象,二者本身就是编码/解码的对应关系,不是可以直接传入onlineMeetings根路径接口的会议ID。
正确实现方法

你不需要手动拼接、转码找GUID格式的会议ID,直接调用Graph专门提供的「通过聊天ID查询关联在线会议」的接口即可,步骤如下:

  1. 确保你的TeamsFx项目已经申请了委托类型的Graph权限:Chat.Read、OnlineMeetings.Read,并且完成管理员同意
  2. 从Teams上下文中解码拿到chatId
  3. 调用/me/chats/{chatId}/onlineMeeting接口获取完整会议信息,这个接口原生支持传入19:meeting_xxx@thread.v2格式的聊天线程ID
  4. 接口返回的会议对象中,id字段就是GUID格式的标准会议ID,后续如果需要调用其他onlineMeetings相关接口,直接用这个值即可。

修正后的可运行代码:

const getMeetingInfos = (graph: Client) => {
  return new Promise((resolve, reject) => {
    microsoftTeams.getContext(async (context) => {
      try {
        // 解码得到会议对应的聊天线程ID,兼容直接从context取chatId的场景
        const relatedChatId = context.meetingId ? atob(context.meetingId) : context.chatId;
        // 调用匹配的Graph接口查询会议信息
        const meetingInfo = await graph.api(`/me/chats/${relatedChatId}/onlineMeeting`).get();
        resolve(meetingInfo);
      } catch (error) {
        console.error("获取会议信息失败:", error);
        reject(error);
      }
    })
  })
}
注意事项
  • 上述代码仅能在会议内的选项卡、会议侧栏、会议对话扩展等会议场景下运行,非会议场景下context.meetingId为空,无法获取对应数据
  • 如果调用接口返回403权限错误,先检查权限是否配置正确、是否完成了租户管理员同意,不要用应用权限调用该接口,必须使用当前登录用户的委托权限
  • 接口返回的会议信息包含会议加入链接、开始/结束时间、参会人权限配置、会议ID等全部字段,不需要再额外调用其他接口补全数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:42:26