Mettre à jour des rendez-vous et des réunions à l’aide d’EWS dans Exchange
Découvrez comment mettre à jour les rendez-vous et les réunions en utilisant l'API gérée par le EWS ou le EWS dans Exchange.
La principale différence entre les réunions et les rendez-vous réside dans la présence de participants aux réunions, mais pas aux rendez-vous. Les rendez-vous et les réunions peuvent être des instances uniques ou faire partie d'une série périodique. Cependant, les rendez-vous n'incluant ni participants, ni salles, ni ressources, ne nécessitent pas l'envoi d'un message. En interne, Exchange utilise le même objet pour les réunions et pour les rendez-vous. Pour utiliser les réunions et les rendez-vous, vous devez utiliser la classe de rendez-vous de l'API managée EWS ou l'élément CalendarItem d'EWS.
Tableau 1. Méthode d’API managée EWS et opérations EWS pour la mise à jour des rendez-vous et des réunions
Méthode d'API managée EWS | Opérations EWS correspondantes |
---|---|
Appointment.Update |
UpdateItem UpdateItemResponse |
Mettre à jour un dossier à l’aide de l’API gérée par EWS
L'exemple de code suivant montre comment utiliser l'objet Appointment pour mettre à jour les propriétés associées à un rendez-vous et la méthode Update pour enregistrer le rendez-vous dans votre dossier de calendrier.
Cet exemple suppose que vous ont été authentifiés auprès d'un serveur Exchange et que vous avez acquis un ExchangeService object named service. La variable locale est appointmentId
un identificateur associé à un rendez-vous existant.
// Instantiate an appointment object by binding to it by using the ItemId.
// As a best practice, limit the properties returned to only the ones you need.
Appointment appointment = Appointment.Bind(service, appointmentId, new PropertySet(AppointmentSchema.Subject, AppointmentSchema.Start, AppointmentSchema.End));
string oldSubject = appointment.Subject;
// Update properties on the appointment with a new subject, start time, and end time.
appointment.Subject = appointment.Subject + " moved one hour later and to the day after " + appointment.Start.DayOfWeek + "!";
appointment.Start.AddHours(25);
appointment.End.AddHours(25);
// Unless explicitly specified, the default is to use SendToAllAndSaveCopy.
// This can convert an appointment into a meeting. To avoid this,
// explicitly set SendToNone on non-meetings.
SendInvitationsOrCancellationsMode mode = appointment.IsMeeting ?
SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy : SendInvitationsOrCancellationsMode.SendToNone;
// Send the update request to the Exchange server.
appointment.Update(ConflictResolutionMode.AlwaysOverwrite, mode);
// Verify the update.
Console.WriteLine("Subject for the appointment was \"" + oldSubject + "\". The new subject is \"" + appointment.Subject + "\"");
Mettre à jour un rendez-vous à l’aide d’EWS
La demande et la réponse XML dans les exemples suivants correspondent aux appels effectués par le code de l'API gérée par le SAP dans Mettre à jour un rendez-vous en utilisant l'API gérée par le SAP.
L'exemple suivant montre la requête XML lorsque vous utilisez l'opération UpdateItem pour mettre à jour un rendez-vous.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Pacific Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToNone">
<m:ItemChanges>
<t:ItemChange>
<t:ItemId Id="AAMkA" ChangeKey="DwAAAB" />
<t:Updates>
<t:SetItemField>
<t:FieldURI FieldURI="item:Subject" />
<t:CalendarItem>
<t:Subject>Tennis Lesson moved one hour later and to the day after Wednesday!</t:Subject>
</t:CalendarItem>
</t:SetItemField>
</t:Updates>
</t:ItemChange>
</m:ItemChanges>
</m:UpdateItem>
</soap:Body>
</soap:Envelope>
L'exemple suivant montre le XML qui est renvoyé en réponse à une demande UpdateItem. [!REMARQUE] Les attributs ItemId et ChangeKey ont été réduits pour une meilleure lisibilité.
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="815" MinorBuildNumber="6" Version="V2_7"
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<m:UpdateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="https://schemas.microsoft.com/exc
hange/services/2006/types">
<m:ResponseMessages>
<m:UpdateItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Items>
<t:CalendarItem>
<t:ItemId Id="AAMkA" ChangeKey="DwAAAB" />
</t:CalendarItem>
</m:Items>
<m:ConflictResults>
<t:Count>0</t:Count>
</m:ConflictResults>
</m:UpdateItemResponseMessage>
</m:ResponseMessages>
</m:UpdateItemResponse>
</s:Body>
</s:Envelope>
Mettre à jour un dossier à l’aide de l’API gérée par EWS
Lorsque vous mettez à jour une réunion, en plus d’enregistrer l’élément de rendez-vous modifié dans le dossier calendrier, vous souhaitez généralement envoyer des demandes de réunion mises à jour aux participants. L’exemple de code suivant montre comment mettre à jour une réunion et envoyer des demandes de réunion.
Cet exemple suppose que vous ont été authentifiés auprès d'un serveur Exchange et que vous avez acquis un ExchangeService object named service. La variable locale meetingId
est un identifiant qui est associé à un rendez-vous existant.
// Instantiate an appointment object by binding to it using the ItemId.
// As a best practice, limit the properties returned to only the Appointment ID.
Appointment meeting = Appointment.Bind(service, meetingId, new PropertySet(AppointmentSchema.Subject,
AppointmentSchema.Location,
AppointmentSchema.RequiredAttendees,
AppointmentSchema.Resources));
string oldSubject = meeting.Subject;
// Update properties on the appointment with a new subject, location, an additional required attendee, and a resource.
meeting.Subject = "Team building exercise has moved!";
meeting.Location = "4567 Contoso Way, Redmond, OH 33333, USA";
meeting.RequiredAttendees.Add("alisa@contoso.com");
meeting.Resources.Add("dlpprojector@contoso.com");
// Send the update request to the Exchange server.
meeting.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToAllAndSaveCopy);
// Verify the update.
Console.WriteLine("Subject for the meeting was \"" + oldSubject + "\". The new subject is \"" + meeting.Subject + "\"");
Après avoir définir les propriétés sur l’objet Appointment , enregistrez la réunion dans votre dossier de calendrier et envoyez des demandes de réunion mises à jour à l’aide de la méthode Update .
Vous pouvez passer l'une des deux valeurs d'énumération comme paramètres lorsque vous appelez la méthode Update:
Enumération ConflictResolutionMode - Détermine comment les états conflictuels entre le client et le serveur sont traités.
Enumération SendInvitationsOrCancellationsMode - Affecte l'envoi et la sauvegarde des demandes de mise à jour des réunions.
Lorsque vous définissez la valeur de l'énumération ConflictResolutionMode sur AlwaysOverwrite, votre version de la réunion sera toujours enregistrée dans le dossier du calendrier.
Mettre à jour une réunion en utilisant le EWS
La demande et la réponse XML dans les exemples suivants correspondent aux appels effectués par le code de l'API gérée par le EWS dans Mettre à jour une réunion à l'aide de l'API gérée par le EWS.
L'exemple suivant montre la requête XML lorsque vous utilisez l'opération UpdateItem pour mettre à jour une réunion.
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"
xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2007_SP1" />
<t:TimeZoneContext>
<t:TimeZoneDefinition Id="Pacific Standard Time" />
</t:TimeZoneContext>
</soap:Header>
<soap:Body>
<m:UpdateItem MessageDisposition="SaveOnly" ConflictResolution="AlwaysOverwrite" SendMeetingInvitationsOrCancellations="SendToAllAndSaveCopy">
<m:ItemChanges>
<t:ItemChange>
<t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
<t:Updates>
<t:SetItemField>
<t:FieldURI FieldURI="item:Subject" />
<t:CalendarItem>
<t:Subject>Team building exercise has moved!</t:Subject>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:Location" />
<t:CalendarItem>
<t:Location>4567 Contoso Way, Redmond, OH 33333, USA</t:Location>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:RequiredAttendees" />
<t:CalendarItem>
<t:RequiredAttendees>
<t:Attendee>
<t:Mailbox>
<t:Name>Mack.Chaves@contoso.com</t:Name>
<t:EmailAddress>Mack.Chaves@contoso.com</t:EmailAddress>
<t:RoutingType>SMTP</t:RoutingType>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:Name>Sadie.Daniels@contoso.com</t:Name>
<t:EmailAddress>Sadie.Daniels@contoso.com</t:EmailAddress>
<t:RoutingType>SMTP</t:RoutingType>
</t:Mailbox>
</t:Attendee>
<t:Attendee>
<t:Mailbox>
<t:EmailAddress>alisa@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
</t:RequiredAttendees>
</t:CalendarItem>
</t:SetItemField>
<t:SetItemField>
<t:FieldURI FieldURI="calendar:Resources" />
<t:CalendarItem>
<t:Resources>
<t:Attendee>
<t:Mailbox>
<t:EmailAddress>dlpprojector@contoso.com</t:EmailAddress>
</t:Mailbox>
</t:Attendee>
</t:Resources>
</t:CalendarItem>
</t:SetItemField>
</t:Updates>
</t:ItemChange>
</m:ItemChanges>
</m:UpdateItem>
</soap:Body>
</soap:Envelope>
L'exemple suivant montre le XML qui est renvoyé en réponse à une demande UpdateItem. Les attributs ChangeKey et ItemId ont été raccourcis pour plus de lisibilité.
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="0" MajorBuildNumber="815" MinorBuildNumber="6" Version="V2_7"
xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types"
xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<m:UpdateItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:UpdateItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:Items>
<t:CalendarItem>
<t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
</t:CalendarItem>
</m:Items>
<m:ConflictResults>
<t:Count>0</t:Count>
</m:ConflictResults>
</m:UpdateItemResponseMessage>
</m:ResponseMessages>
</m:UpdateItemResponse>
</s:Body>
</s:Envelope>
Voir aussi
- Calendriers et EWS dans Exchange
- Créer des rendez-vous et des réunions à l’aide d’EWS dans Exchange 2013
- Créer des rendez-vous et des réunions à l’aide d’EWS dans Exchange
- Supprimer des rendez-vous et annuler des réunions à l'aide d’EWS dans Exchange
- Proposer une nouvelle heure de réunion à l'aide d’EWS dans Exchange