2015-05-06 16 views
17

Utilizzo di Exchange push notifications Ho creato un servizio che si sincronizza sui dati del calendario dagli utenti di Office365. Ho utilizzato una combinazione di Office365 Calendar REST API (per ottenere e gestire i calendari) e l'API EWS (per iscriversi alle modifiche del calendario).Mappatura degli ID calendario REST di Office 365 a EWS CalendarItem ID

Ho notato che recentemente MS ha introdotto un'API di anteprima per i relativi endpoint di sottoscrizione. Tuttavia, questa API è ancora in modalità di anteprima e mi piacerebbe evitare di usarla per il momento.

Una volta che ho impostato tutto, il problema è che non riesco a creare una correlazione tra lo calendar event resource (REST) e lo EWS CalendarItem resource che viene restituito su una notifica push. Il ItemId per CalendarItem e Id per l'evento REST differiscono.

Quando si tenta di aggiornare gli eventi che ho salvato dall'API REST ciò risulta problematico poiché non riesco a trovare un buon metodo per associare i due.

Qualsiasi aiuto è molto apprezzato!

Modifica Dopo qualche ulteriore scavo, in realtà ho scoperto che i calendari che vengono restituiti dal API REST (GET /calendars) sembrano essere Message elementi all'interno della gerarchia EWS. Quindi, invece di questo endpoint che restituisce gli ID cartella effettivi, restituisce gli ID oggetto che appartengono a una cartella denominata "Viste comuni".

Non sono sicuro del motivo per cui le cose sono progettate in questo modo, ma la differenza negli ID codificati Base64 sembra essere minima. Non riesco ancora a capire un buon modo per associare i due.

+0

Credo che gli ID siano gli stessi tra REST ed EWS ma i ritorni di EWS non sono sicuri da URL (ad esempio nell'ID REST hanno scambiato + per _ non sono sicuro dello standard esatto che hanno usato) –

+0

Ids sono sicuri sicuramente URL ora, ma sicuramente si differenziano (io sono abbastanza sicuro che sono tutti codificati Base64): RESTO 'AQMkADczMwE5OQAxYS0wZDBkLTQwY ...' ' EWS AQAhAHphY2hAcm9iaW5wb3dlcmVk ...' – jstruzik

+0

Ok vedo qualcosa di diverso (The Id hai postato mi sembra come se provenissero da cartelle diverse) ma hai davvero bisogno di una risposta da parte di uno degli MS Guys per dare il formato esatto che è stato usato. –

risposta

6

Quindi risulta che i miei ID non corrispondono a causa dell'abbonamento alle notifiche push di EWS tramite la versione Exchange2007. Exchange2007_SP1 e oltre hanno EwsId compatibili tra loro, quindi questo include Office365.

Sostituzione - personaggi con / e _ personaggi con + mi permette di fare correttamente le chiamate a risorse API Office365.

Infine, quando si effettua una chiamata a get calendars, l'API restituisce effettivamente i tipi di elemento Message che vivono nella cartella Common Views. Pertanto, quando si tenta di utilizzare questi ID per le sottoscrizioni, l'API EWS si lamenterà che gli ho inviato ID oggetto e non un ID cartella.

fortuna Ho scoperto che fare una richiesta per l'API REST tramite GET /calendars/ews_folder_id funziona in realtà una volta si traduce correttamente l'ID a un tipo di sicurezza di URI (vedi sopra conversione).

+0

Ti capita di incontrare altri caratteri (ad eccezione di "-" e "_") che potrebbero richiedere una sostituzione? – aditya

+0

GET/calendari/ews_folder_id - Hai trovato documenti ecc. Che spiegano questo comportamento? – aditya