通过 MS Graph 更新活动 API 删除活动中的加入按钮

Updating event via MS Graph API removing Join Button in the event

我在 Outlook 日历中创建了一个事件。该事件包含团队加入 link。 当我从 MS Graph API 更新事件时,正在删除加入按钮。

这是我正在做的示例代码:

void UpdateEventInCalendar(string eventId)
{
    var getCalEvent = Task.Run(() =>
            {
                return service.Me.Events[eventId].Request().GetAsync();
            });
    Task.WaitAll(getCalEvent);
    BodyType bodyType = BodyType.Text;
    Event eventToUpdate = getCalEvent.Result;
    Event updatedEvent = new Event();
    updatedEvent.Id = eventToUpdate.Id;
    updatedEvent.Subject = "Updated text";
    updatedEvent.ShowAs = eventToUpdate.ShowAs;
    updatedEvent.Body = new ItemBody
            {
                ContentType = bodyType,
                Content = "Some new content"
            };
    graphServiceClient.Me.Events[updatedEvent.Id].Request().UpdateAsync(updatedEvent.Id);
}

更新前的事件:

活动更新内容:

更新后事件:

如何在更新活动的同时保留活动?

尝试不更新正文,您将能够使其正常工作。看到这个 thread。是的,如果您在没有 isonlinemeeting 的情况下更新正文,团队会议 blob 将被删除,这会使 isonlinemeeting 属性 变为 false,我们将失去按钮。

作为一种解决方法,您可以尝试使用此方法来保持您的在线会议出现:

首先:在你的addEvent函数中,你的body应该是这样的

AddedEvent.Body = new ItemBody
            {
                ContentType = BodyType.Html,
                Content = "<p id = 'MsgContent'>Your Body</p>"
            };

其二:在更新事件中,可以这样改变body内容

                HtmlDocument html = new HtmlDocument();
                html.LoadHtml(EventToUpdate.Body.Content);
                html.GetElementbyId("Msgcontent").InnerHtml = "Your new body";
                updatedEvent.Body = EventToUpdate.Body;
                updatedEvent.Body.Content = html.DocumentNode.OuterHtml;