2015-05-06 3 views
17

Использование Exchange push notifications Я создаю службу, которая синхронизирует данные календаря с пользователями Office365. Я использовал комбинацию Office365 Calendar REST API (для получения календарей и управления ими) и EWS API (чтобы подписаться на изменения календаря).Mapping Office365 Идентификаторы календаря REST для EWS Идентификаторы CalendarItem

Я заметил, что совсем недавно MS представила API предварительного просмотра для своих конечных точек подписки. Однако этот API по-прежнему находится в режиме предварительного просмотра, и я бы хотел избежать его использования в настоящее время.

Как только у меня есть все настройки, проблема в том, что я не могу сделать корреляцию между calendar event resource (REST) и EWS CalendarItem resource, которая возвращается в push-уведомлении. ItemId для CalendarItem и Id для события REST отличаются.

При попытке обновить события, которые я сохранил из REST API, это оказывается проблематичным, поскольку я не могу найти хороший метод связывания двух.

Любая помощь очень ценится!

Редактировать После некоторого дальнейшего копания, я на самом деле обнаружил, что календари, которые возвращаются из API REST (GET /calendars), как представляется, Message элементы в иерархии EWS. Поэтому вместо этой конечной точки, возвращающей фактические идентификаторы папок, она возвращает идентификаторы элементов, которые принадлежат к некоторой папке под названием «Common Views».

Я не уверен, почему все было разработано таким образом, но разница в кодированных идентификаторах base64 кажется очень минимальной. Я просто все еще не могу найти хороший способ связать их.

+0

Я считаю, что идентификаторы одинаковы между REST и EWS, однако EWS-данные не являются безопасными для URL (например, в идентификаторе REST, который они заменили + для _ не уверены в точном стандарте, который они использовали) –

+0

Идентификаторы определенно URL в безопасности, но они определенно отличаются (я уверен, что все они в формат base64): REST '' AQMkADczMwE5OQAxYS0wZDBkLTQwY ... EWS '' AQAhAHphY2hAcm9iaW5wb3dlcmVk ... – jstruzik

+0

Хорошо я вижу что-то другое (The идентификаторы вы разместили для меня взгляд, как будто они из разных папок), но вам действительно нужен ответ от одного из MS Guys, чтобы указать точный формат, который был использован. –

ответ

6

Таким образом, выясняется, что мои идентификаторы не совпадают с подпиской на уведомления EWS через версию Exchange2007. Exchange2007_SP1 и другие имеют совместимые EwsIds друг с другом, так что это включает Office365.

Замена - символы с / и _ символов с + позволяет мне правильно выполнять вызовы API ресурсов Office365.

И наконец, при обращении к get calendars API фактически возвращает Message типы элементов, которые находятся под папкой Common Views. Поэтому, пытаясь использовать эти идентификаторы для подписки, EWS API будет жаловаться на то, что я отправил его ItemID, а не идентификатор папки.

К счастью я обнаружил, что делает запрос к REST API с помощью GET /calendars/ews_folder_id на самом деле работает, как только вы правильно перевести идентификатор сейфового типа URI (см выше преобразования).

+0

Вы сталкивались с любыми другими персонажами (кроме «-» и «_»), которые могут потребовать замены? – aditya

+0

GET/calendars/ews_folder_id - Вы нашли какой-либо документ и т. Д., Объяснив это поведение? – aditya

Смежные вопросы