2
votes

La mise à jour de la date de fin d'une réunion récursive via l'API Graph ne fonctionne pas

J'utilise actuellement l'API Office Graph pour gérer les réunions des utilisateurs Calendriers. Je me suis abonné pour recevoir des notifications si un événement est créé, mis à jour et supprimé à l'aide de la requête "/ subscriptions"! Mes utilisateurs utilisent le fuseau horaire de Lisbonne (en été = UTC + 1, en hiver = UTC)

Lorsqu'un événement est créé dans Office 365 par un utilisateur, du côté de mon application, si l'événement est une réunion récursive sans date de fin je mets à jour (via l'API Graph) la réunion pour qu'elle ait une date de fin . [Remarque: l'une des règles de ma candidature est qu'aucune réunion ne dure plus de 365 jours.]

Problème: la série est réduite à la date de fin que j'ai mise à jour via l'API, mais l'heure est laissée avec le mauvais fuseau horaire. J'ai déjà essayé de demander l'API sans fuseau horaire et j'ai déjà demandé une mise à jour avec le fuseau horaire UTC et le fuseau horaire UTC +1 et j'ai toujours le même problème. Côté bureau, après ma mise à jour, l'heure de la réunion est d'une heure en moins.

L'image suivante est un exemple de série, qui n'a pas de plage de fin:

 entrez la description de l'image ici

Je récupère quelques réunions d'enfants avant la mise à jour et c'est correct. Au Portugal, le jour du changement d'heure est le 2019-03-30, donc le jour 30 commence à 10h00 UTC et le jour 31 09:00 UTC:

 entrez la description de l'image ici

Ici, j'envoie la demande à Office 365 pour mettre à jour la fin de la récurrence (date de fin):

 entrez la description de l'image ici

Après avoir envoyé la demande de mise à jour, je récupère les mêmes enfants et le 30/03/2019 et le 31/03/2019 commencent tous les deux à 10h00. Après cette mise à jour dans l'agenda client, les réunions ont des heures de début et de fin incorrectes:

 entrez la description de l'image ici

J'ai déjà essayé de mettre dans le domaine de l'API Graph recurrenctTImeZone: UTC, GMT Standard Time et simplement ne rien mettre et j'ai toujours le même retour. Je ne peux pas résoudre ce problème.

Avez-vous une idée de ce qui pourrait ne pas aller?


2 commentaires

Envoyez-vous d'autres valeurs dans votre requête PATCH (en plus de récurrence )?


Jason, non, je viens d'envoyer ce qui est dans l'image ci-dessus représentant la demande de ma mise à jour de fin de récurrence.


3 Réponses :


0
votes

Vous pouvez effectivement l'utiliser dans l'en-tête des requêtes

Prefer: outlook.timezone="Central Standard Time"

De cette façon, il sait dans quel fuseau horaire vous voulez travailler avec vos calculs. Une documentation supplémentaire à ce sujet est disponible ici https://docs.microsoft.com/en-us/graph/api/user-list-events?view=graph-rest-1.0#support-various-time-zones a>


1 commentaires

Nous vous avons déjà envoyé quoi suggérer dans l'en-tête GET and UPDATE et cela n'a pas fonctionné. Le problème est exactement le même.



0
votes

Je ne reproduis pas ce comportement avec un utilisateur dans le fuseau horaire Pacific Standard Time OU le fuseau horaire GMT Standard Time. Pour plus de clarté, je fais tous les tests avec Postman, et je n'ai pas utilisé l'en-tête Prefer: outlook.timezone que Jeremy a souligné ci-dessus.

J'ai créé un rendez-vous quotidien sans fin pour l'utilisateur à 14 heures du Pacifique, soit 22 heures UTC. Notez également que l'heure d'été commence dans ce fuseau horaire le 10 mars. Comme vous pouvez le voir ci-dessous, les heures sont correctes sur les instances avant et après la mise à jour.

J'ai également répété cette même séquence d'événements pour un utilisateur dans le fuseau horaire GMT Standard (configuré comme ceci dans Outlook sur le Web):

 OOW config

J'ai obtenu exactement les mêmes résultats pour cet utilisateur.

Je suggère que lorsque vous corrigez la récurrence, vous utilisez toujours la recurrenceTimeZone de la récurrence d'origine. Vous avez peut-être corrompu la récurrence en appliquant un correctif avec UTC à l'origine.

Obtenir l'événement après la création dans Outlook sur le Web

{
  "value": [
    {
      "id": "AAMkAGE1NWM...",
      "originalStartTimeZone": "Pacific Standard Time",
      "originalEndTimeZone": "Pacific Standard Time",
      "start": {
        "dateTime": "2019-03-09T22:00:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2019-03-09T22:30:00.0000000",
        "timeZone": "UTC"
      }
    },
    {
      "@odata.etag": "W/\"bReRxUIs3kGIyXXcVJg69AAANf7nZQ==\"",
      "id": "AAMkAGE1NWM...",
      "originalStartTimeZone": "Pacific Standard Time",
      "originalEndTimeZone": "Pacific Standard Time",
      "start": {
        "dateTime": "2019-03-10T21:00:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2019-03-10T21:30:00.0000000",
        "timeZone": "UTC"
      }
    }
  ]
}
GET /me/events/{id}/instances?startDateTime=2019-03-09T00:00:00&endDateTime=2019-03-11T00:00:00&
$select=originalStartTimeZone,originalEndTimeZone,start,end

Récupérer les instances avant de modifier

Notez le décalage des heures de début / fin.

PATCH /me/events/{id}

{
  "recurrence": {
    "pattern": {
      "type": "daily",
      "interval": 1,
      "month": 0,
      "dayOfMonth": 0,
      "firstDayOfWeek": "sunday",
      "index": "first"
    },
    "range": {
      "type": "endDate",
      "startDate": "2019-01-24",
      "endDate": "2020-01-23",
      "recurrenceTimeZone": "Pacific Standard Time",
      "numberOfOccurrences": 0
    }
  }
}
{
  "value": [
    {
      "id": "AAMkAGE1NWM...",
      "originalStartTimeZone": "Pacific Standard Time",
      "originalEndTimeZone": "Pacific Standard Time",
      "start": {
        "dateTime": "2019-03-09T22:00:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2019-03-09T22:30:00.0000000",
        "timeZone": "UTC"
      }
    },
    {
      "@odata.etag": "W/\"bReRxUIs3kGIyXXcVJg69AAANf7nZQ==\"",
      "id": "AAMkAGE1NWM...",
      "originalStartTimeZone": "Pacific Standard Time",
      "originalEndTimeZone": "Pacific Standard Time",
      "start": {
        "dateTime": "2019-03-10T21:00:00.0000000",
        "timeZone": "UTC"
      },
      "end": {
        "dateTime": "2019-03-10T21:30:00.0000000",
        "timeZone": "UTC"
      }
    }
  ]
}

Mettre à jour la récurrence de l'événement pour ajouter une date de fin

Notez que j'ai laissé recurrenceTimeZone comme même valeur que l'original.

GET /me/events/{id}/instances?startDateTime=2019-03-09T00:00:00&endDateTime=2019-03-11T00:00:00&
$select=originalStartTimeZone,originalEndTimeZone,start,end

Récupérer les instances après modification

Notez que les heures de début / fin sont toujours décalées correctement .

{
  "id": "AAMkAGE1NWM...",
  "originalStartTimeZone": "Pacific Standard Time",
  "originalEndTimeZone": "Pacific Standard Time",
  "start": {
    "dateTime": "2019-01-24T22:00:00.0000000",
    "timeZone": "UTC"
  },
  "end": {
    "dateTime": "2019-01-24T22:30:00.0000000",
    "timeZone": "UTC"
  },
  "recurrence": {
    "pattern": {
      "type": "daily",
      "interval": 1,
      "month": 0,
      "dayOfMonth": 0,
      "firstDayOfWeek": "sunday",
      "index": "first"
    },
    "range": {
      "type": "noEnd",
      "startDate": "2019-01-24",
      "endDate": "0001-01-01",
      "recurrenceTimeZone": "Pacific Standard Time",
      "numberOfOccurrences": 0
    }
  }
}
GET /me/events/{id}&$select=originalStartTimeZone,originalEndTimeZone,start,end,recurrence


0 commentaires

3
votes

Après plusieurs tentatives de résolution, j'ai pu parler à l'équipe de développement Office 365 et j'ai été surpris par les commentaires négatifs.

Ils ont indiqué qu'en fait il existe un bogue inconnu dans l'API Graph de Microsoft dans cette situation spécifique et qu'ils ne garantissent pas la résolution de ce bogue!

Leur suggestion est que nous utilisions le API du calendrier Outlook Rest API uniquement pour cette situation. En conclusion, à cause de cette erreur inconnue déjà assumée par Microsoft, je devrai implémenter 2 API différentes dans ma plateforme: l'API Microsoft Graph qui est actuellement recommandée par Microsoft, et l'API Outlook Calendar Rest à cause de ce bogue.

Solution de repos de l'API du calendrier Outlook:

  1. Créer un événement répété sans date de fin

 entrez la description de l'image ici

  1. Récupérer la vue du calendrier

 entrez la description de l'image ici

  1. Obtenir la récurrence de l'événement

 entrez la description de l'image ici

  1. Mettre à jour l'événement

 entrez la description de l'image ici

  1. Récupérer la vue du calendrier après la mise à jour

 entrez la description de l'image ici


0 commentaires