2017-12-12 2 views
3

Ich habe Anwendungsadministratorzugriff auf ReadWrite alle Benutzerkalender delegiert. Ich benutze die Graph API (Beta). Ressourcen werden in Office365 für Besprechungsräume erstellt.Microsoft Graph API - Aktualisierungsereignis wird für Teilnehmer nicht aktualisiert

Ich versuche, die Endzeit eines Ereignisses zu ändern, die im Gange ist (zB die Sitzung vorzeitig endet) PATCH /users/{id}/events/{id}

Ansatz 1: Patchen der Veranstaltung in den Kalender des Ressourcenpostfach

Das Aktualisieren der Start- oder Endzeit eines Ereignisses eines Ressourcenpostfachs wird nicht an die Kalender der Teilnehmer dieses Ereignisses weitergegeben. Der Kalender des Ressourcenpostfachs wird aktualisiert, aber das Ereignis bleibt für alle Teilnehmer unverändert.

z. für Ressource Mailbox [email protected] mit einem bestehenden Treffen mit ID 12345. Angenommen, das Meeting hat heute um 16:30 Uhr und endet um 17:00 UTC. Angenommen, die aktuelle Zeit ist 16:50 UTC.

$microsoftEvent = json_encode([ 
            'end' => [ 
             'dateTime' => '2017-12-13T16:50:00.0000000', 
             'timeZone' => 'UTC' 
            ] 
           ], JSON_UNESCAPED_SLASHES); 

$returnedEvent = $graph->createRequest("patch", "https://stackoverflow.com/users/[email protected]/events/12345") 
           ->attachBody($microsoftEvent) 
           ->setReturnType(\Microsoft\Graph\Model\Event::class) 
           ->execute(); 

Ansatz 2: Patchen das Ereignisses im Kalender des Organisators

, dass für die Sitzung wird angenommen, über den Veranstalter ist [email protected], und dass die Ereignis-ID in diesem Kalender des Benutzers wurde über die iCalUId in einem erhalten separate GET mit einem $filter, und wurde gefunden, 56789 zu sein.

$microsoftEvent = json_encode([ 
            'end' => [ 
             'dateTime' => '2017-12-13T16:50:00.0000000', 
             'timeZone' => 'UTC' 
            ] 
           ], JSON_UNESCAPED_SLASHES); 

$returnedEvent = $graph->createRequest("patch", "https://stackoverflow.com/users/[email protected]/events/56789") 
           ->attachBody($microsoftEvent) 
           ->setReturnType(\Microsoft\Graph\Model\Event::class) 
           ->execute(); 

In diesem Fall wird die Veranstaltung des Veranstalters wird aktualisiert, aber das Ressourcenpostfach antwortet mit

Your meeting request was declined. The invitation was declined because it occurred in the past. 

Jede Beratung schätzen würde.

+0

Ist der Benutzer, der die Veranstaltung gepatcht hat, auch der Organisator der Veranstaltung? –

+0

@MarcLaFleur Vielen Dank für Ihre Nachricht. Mein Anwendungsfall ist das Beenden oder Erweitern (über die Graph-API) eines Ereignisses, das gerade ausgeführt wird. Dies bedeutet eine Änderung der Endzeit des Ereignisses. Wenn das Ereignis des Ressourcenpostfachs gepatcht ist, werden die Teilnehmer nicht benachrichtigt, und wenn das Ereignis des Organisators gepatcht wird, antwortet das Ressourcenpostfach mit 'Ihre Besprechungsanfrage wurde abgelehnt. Die Einladung wurde abgelehnt, weil sie in der Vergangenheit stattfand. – karel

+0

Dieser Fluss ist kompliziert genug, dass es eine Herausforderung ist, den Kopf mit nur einer kurzen Beschreibung um ihn herum zu wickeln. Können Sie Ihre Frage aktualisieren und Schritt für Schritt Beispiele für Code/Anruf hinzufügen, um dieses Verhalten zu reproduzieren? –

Antwort

1

Das Aktualisieren eines Ereignisses für eine Ressource führt zu nichts, da die Ressource tatsächlich ein Teilnehmer und nicht der Organisator ist. Also ist Ansatz 1 das erwartete Verhalten. Sie müssen das Ereignis des Organisators aktualisieren und Aktualisierungen werden an alle Teilnehmer gesendet, einschließlich der Ressource.

Sie sehen also, dass die Ressource mit einer "Ablehnen" -Antwort reagiert, weil das Ereignis in der Vergangenheit begonnen hat, und ich bin nicht sicher, dass Sie das umgehen können. Es klingt, als ob der Kalenderagent, der die Ressource überwacht, es nicht erlaubt, bereits laufende Ereignisse zu ändern.

+0

Danke für die Antwort. Dies ist eine "Standard" -Ressource, die in Office365 über das Admin-Portal erstellt wurde. Gibt es Einstellungen, die aktualisiert werden können, um das Ändern eines bereits gestarteten Ereignisses zu ermöglichen? – karel

+0

Ich habe mir die Office365-Ressourceneinstellungen angesehen, aber der Kalenderagent scheint nur konfigurierbar zu sein für 1) wiederholende Besprechungen, 2) Arbeitszeitplanung, 3) Buchungsfenster und Dauerlimits und 4) automatische Annahme von Anfragen. Ich sehe keine passenden Flags über 'Set-CalendarProcessing'. Es fühlt sich an, als ob das möglich sein sollte? – karel

+0

Fragte es als eine separate Frage [hier] (https://stackoverflow.com/questions/47833599/exchange-online-unable-to-change-end-time-of-event-in-progress) – karel

Verwandte Themen