无法通过 Graph Api 为某些用户(默认为 OnlineMeetingProvider.Unknown)创建 Microsoft Teams 在线会议

Cant create Microsoft Teams online meetings for some users (Defaults to OnlineMeetingProvider.Unknown) via Graph Api

我有 5 个用户,他们在 Office 365 中看起来都一样(反正我能看到)并且拥有 Teams Exploratory 许可证。我能够为其中的两个创建在线会议(OnlineMeetingProvider="teamsForBusiness" 和 IsOnlineMeeting=true)。对于其他 3 个用户,它不会出错但不会创建在线会议(创建事件?),响应 OnlineMeetingProvider 为“未知”并且 OnlineMeeting 为空。这是相同的代码,所以必须在某处进行设置(我所做的就是更改用户的 ID)。

用于创建请求的代码:

        // Create client
        var graphServiceClient = CreateGraphClient();

        // Build event
        var newEvent = new Event()
        {
            Subject = subject,
            Body = new ItemBody() { ContentType = BodyType.Text, Content = body },
            Start = startDate,
            End = endDate,
            IsOnlineMeeting = true,
            Attendees = attendees == null ? null : GetAttendees(attendees),
            OnlineMeetingProvider = OnlineMeetingProviderType.TeamsForBusiness
        };

错误响应:

有人知道发生了什么事吗?

您可以通过将 isOnlineMeeting 设置为 true 并将 onlineMeetingProvider 设置为 parent 日历支持的在线会议提供者之一,来更改现有活动以使其作为在线会议可用。响应包括更新的事件以及在 onlineMeeting 属性.

中指定的相应在线会议信息

https://docs.microsoft.com/en-us/graph/outlook-calendar-online-meetings?tabs=http#example-update-a-meeting-to-make-it-available-as-an-online-meeting

有同样的问题,我必须将这些权限添加到我用来创建会议活动的应用程序中:

TeamSettings.Read.All、TeamSettings.ReadWrite.All

我一添加它们,isOnlineMeeting 就被正确设置为 true,并且 onlineMeetingProvider 被设置为 teamsForBusiness,如请求中所指定。

onlineMeetingUrl 始终为空,但可以从“onlineMeeting.joinUrl”属性 中获取会议 url,它由 API 自动填充。

更新: 正如@lokusking 指出的那样,即使这是正确的,看起来也不能完全解决问题。根据我的测试,为新用户创建团队事件并在响应中正确填充 isOnlineMeeting=true 和 onlineMeeting 将在创建用户帐户后的几个小时内起作用。请注意,即使是新用户,也会创建事件,只是那些属性不会包含正确的值。