Я пытаюсь исправить существующий объект Microsoft Graph Calendar Событие , чтобы добавить новое расширение к объекту Event , Согласно документам это должно быть возможно:
Поскольку ресурс события поддерживает расширения, вы можете использовать операцию PATCH для добавления, обновления или удаления ваших собственных данных приложения c в пользовательских свойствах. расширения в существующем экземпляре события. Подробнее
Вот метод обновления, в котором я пытаюсь добавить расширение к существующему событию:
public async Task<Event> UpdateEventAsync(string userId, string eventId, JsonPatchDocument<EventForUpdate> patchedEvent)
{
// Create a new event for updating
var newEvent = new Event();
// Get the Extension data from the patch object: IDictionary<string,object>
var extensionData = GetExtensionData(patchedEvent, newEvent);
// Create new extension and add to event object
var extension = new OpenTypeExtension()
{
ODataType = "microsoft.graph.openTypeExtension",
ExtensionName = EXTENSION_NAME,
AdditionalData = extensionData,
Id = "Microsoft.OutlookServices.OpenTypeExtension." + EXTENSION_NAME
};
newEvent.Extensions = new EventExtensionsCollectionPage() { extension };
// Create the request - unsure if Expand is necessary.
var request = graphServiceClient.Users[userId].Events[eventId].Request();
var reqExpanded = request.Expand($"extensions($filter=id%20eq%20'Microsoft.OutlookServices.OpenTypeExtension.{EXTENSION_NAME}')");
return await reqExpanded.UpdateAsync(newEvent);
}
Значение расширения на возвращаемое событие всегда null
- поэтому, похоже, не добавляется следующее расширение. Даже при последующих вызовах для получения всех событий объект расширения равен null
.
У меня есть другой код, создающий объект расширения для нового события, и это работает правильно.
В заключение, я хотел бы знать, как добавить новое расширение к существующему календарному событию в патче?
Заметки
Я проверил этот SO Вопрос - но он делает Add, тогда как я делаю UpdateAsyn c.
У меня есть работа вокруг
private async Task<Extension> AddExtension(string user, string eventId, IDictionary<string, object> metadata)
{
Extension result = null;
// Create new extension and add to event object
var extension = new OpenTypeExtension()
{
ODataType = "microsoft.graph.openTypeExtension",
ExtensionName = EXTENSION_NAME,
AdditionalData = metadata,
};
return await graphServiceClient.Users[user].Events[eventId].Extensions.Request().AddAsync(extension);
}
Я вызываю вышеуказанное, когда хочу добавить данные расширения к существующему событию.