Патч Microsoft.Graph Event не добавляет новое расширение - PullRequest
1 голос
/ 25 февраля 2020

Я пытаюсь исправить существующий объект 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);
        }

Я вызываю вышеуказанное, когда хочу добавить данные расширения к существующему событию.

1 Ответ

0 голосов
/ 25 февраля 2020

Я пытаюсь выполнить то же самое sh, только через PostMan, а также не могу использовать патч. Я подозреваю, что отрывок из документации говорит не совсем то, к чему он относится, а скорее, как только расширение существует, мы можем изменить его с помощью патча.

Мне удалось создать расширение для существующего события следующим образом, информированный { ссылка }, скорее используя POST для коллекции расширений.

POST https://graph.microsoft.com/v1.0/users/<upn>/calendar/events/<event-id>/extensions

{
  "@odata.type": "microsoft.graph.openTypeExtension",
  "extensionName": "Com.<company-name>.PlacesAvailable",
  "placesAvailable": "50"
}
...