Mettre à jour des rendez-vous et des réunions à l’aide d’EWS dans ExchangeUpdate appointments and meetings by using EWS in Exchange

Découvrez comment mettre à jour des rendez-vous et des réunions à l’aide de l’API managée EWS ou EWS dans Exchange.Learn how to update appointments and meetings by using the EWS Managed API or EWS in 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 Appointment de l'API managée EWS ou l'élément CalendarItem d'EWS.The essential difference between meetings and appointments is that meetings have attendees, and appointments don't. Both appointments and meetings can be single instances or part of a recurring series, but because appointments don't include attendees, rooms, or resources, they do not require a message to be sent. Internally, Exchange uses the same object for both meetings and appointments. You use the EWS Managed API Appointment class or the EWS CalendarItem element to work with meetings and appointments.

Tableau 1. Méthode de l’API managée EWS et opérations EWS pour la mise à jour des rendez-vous et des réunionsTable 1. EWS Managed API method and EWS operations for updating appointments and meetings

Méthode d'API managée EWSEWS Managed API method Opérations EWS correspondantesCorresponding EWS operations
Rendez-vous. UpdateAppointment.Update
UpdateItemUpdateItem

UpdateItemResponseUpdateItemResponse

Mettre à jour un rendez-vous à l’aide de l’API managée EWSUpdate an appointment by using the EWS Managed API

L’exemple de code suivant montre comment utiliser l' objet de rendez-vous 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 calendrier.The following code example shows how to use the Appointment object to update properties associated with an appointment and the Update method to save the appointment to your calendar folder.

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.This example assumes that you have authenticated to an Exchange server and have acquired an ExchangeService object named service. La variable locale appointmentId est un identificateur associé à un rendez-vous existant.The local variable appointmentId is an identifier associated with an existing appointment.

// 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’EWSUpdate an appointment by using EWS

Les codes XML de demande et de réponse dans les exemples suivants correspondent aux appels effectués par le code de l’API managée EWS dans Update a rendez-vous à l’aide de l’API managée EWS.The request and response XML in the following examples correspond to calls made by the EWS Managed API code in Update an appointment by using the EWS Managed API.

L’exemple suivant montre le code XML de la demande lorsque vous utilisez l’opération UpdateItem pour mettre à jour un rendez-vous.The following example shows the request XML when you use the UpdateItem operation to update an appointment.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
       xmlns:t="https://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 code XML renvoyé en réponse à une demande UpdateItem .The following example shows the XML that is returned in response to an UpdateItem request. [!REMARQUE] Les attributs ItemId et ChangeKey ont été réduits pour une meilleure lisibilité.The ItemId and ChangeKey attributes have been shortened for readability.

<?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="https://schemas.microsoft.com/exchange/services/2006/types" xmlns="https://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="https://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 une réunion à l’aide de l’API managée EWSUpdate a meeting by using the EWS Managed API

Lors de la mise à jour d’une réunion, outre l’enregistrement de l’élément de rendez-vous modifié dans le dossier calendrier, vous souhaitez généralement envoyer aux participants des demandes de réunion mises à jour.When you update a meeting, in addition to saving the modified appointment item to the calendar folder, you also typically want to send updated meeting requests to attendees. L’exemple de code suivant montre comment mettre à jour une réunion et envoyer des demandes de réunion.The following code example shows how to update a meeting and send meeting requests.

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.This example assumes that you have authenticated to an Exchange server and have acquired an ExchangeService object named service. La variable locale meetingId est un identificateur qui est associé à un rendez-vous existant.The local variable meetingId is an identifier that is associated with an existing appointment.

// 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éfini les propriétés sur l’objet appointment, enregistrez la réunion dans votre dossier calendrier et envoyez les demandes de réunion mises à jour à l’aide de la méthode Update .After setting the properties on the Appointment object, save the meeting to your calendar folder and send updated meeting requests by using the Update method.

Vous pouvez transmettre l’une des deux valeurs d’énumération en tant que paramètres lorsque vous appelez la méthode Update :You can pass in one of two enumeration values as parameters when you call the Update method:

Lorsque vous définissez la valeur d’énumération ConflictResolutionMode sur AlwaysOverwrite, votre version de la réunion sera toujours enregistrée dans le dossier de calendrier.When you set the ConflictResolutionMode enumeration value to AlwaysOverwrite, your version of the meeting will always be saved to the calendar folder.

Mettre à jour une réunion à l’aide d’EWSUpdate a meeting by using EWS

Les codes XML de demande et de réponse dans les exemples suivants correspondent aux appels effectués par le code de l’API managée EWS dans mettre à jour une réunion à l’aide de l’API managée EWS.The request and response XML in the following examples correspond to calls made by the EWS Managed API code in Update a meeting by using the EWS Managed API.

L’exemple suivant montre le code XML de la demande lorsque vous utilisez l’opération UpdateItem pour mettre à jour une réunion.The following example shows the request XML when you use the UpdateItem operation to update a meeting.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages"
               xmlns:t="https://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 code XML renvoyé en réponse à une demande UpdateItem .The following example shows the XML that is returned in response to an UpdateItem request. Les attributs ChangeKey et ItemId ont été réduits pour des raisons de lisibilité.The ChangeKey and ItemId attributes have been shortened for readability.

<?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="https://schemas.microsoft.com/exchange/services/2006/types" 
 xmlns="https://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="https://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="https://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 aussiSee also