无法通过 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 属性.
中指定的相应在线会议信息
有同样的问题,我必须将这些权限添加到我用来创建会议活动的应用程序中:
TeamSettings.Read.All、TeamSettings.ReadWrite.All
我一添加它们,isOnlineMeeting 就被正确设置为 true,并且 onlineMeetingProvider 被设置为 teamsForBusiness,如请求中所指定。
onlineMeetingUrl 始终为空,但可以从“onlineMeeting.joinUrl”属性 中获取会议 url,它由 API 自动填充。
更新:
正如@lokusking 指出的那样,即使这是正确的,看起来也不能完全解决问题。根据我的测试,为新用户创建团队事件并在响应中正确填充 isOnlineMeeting=true 和 onlineMeeting 将在创建用户帐户后的几个小时内起作用。请注意,即使是新用户,也会创建事件,只是那些属性不会包含正确的值。
我有 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 属性.
中指定的相应在线会议信息有同样的问题,我必须将这些权限添加到我用来创建会议活动的应用程序中:
TeamSettings.Read.All、TeamSettings.ReadWrite.All
我一添加它们,isOnlineMeeting 就被正确设置为 true,并且 onlineMeetingProvider 被设置为 teamsForBusiness,如请求中所指定。
onlineMeetingUrl 始终为空,但可以从“onlineMeeting.joinUrl”属性 中获取会议 url,它由 API 自动填充。
更新: 正如@lokusking 指出的那样,即使这是正确的,看起来也不能完全解决问题。根据我的测试,为新用户创建团队事件并在响应中正确填充 isOnlineMeeting=true 和 onlineMeeting 将在创建用户帐户后的几个小时内起作用。请注意,即使是新用户,也会创建事件,只是那些属性不会包含正确的值。