Создание встреч и собраний с помощью EWS в Exchange 2013Create appointments and meetings by using EWS in Exchange 2013

Узнайте, как создавать встречи и собрания с помощью управляемого API EWS или EWS в Exchange.Learn how to create appointments and meetings by using the EWS Managed API or EWS in Exchange.

Существенным различием между собраниями и встречами является то, что собрания имеют участников, а встречи — нет.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. На внутреннем сервере Exchange использует один и тот же объект для собраний и встреч.Internally, Exchange uses the same object for both meetings and appointments. Для работы с собраниями и встречами используется класс встречи управляемого API EWS или элемент EWS [календаритем](https://msdn.microsoft.com/library/Title Topic ID Project Name Writer Editor Publish Preview.aspx) .You use the EWS Managed API Appointment class or the EWS [CalendarItem](https://msdn.microsoft.com/library/Title Topic ID Project Name Writer Editor Publish Preview.aspx) element to work with meetings and appointments.

Таблица 1. Методы управляемого API EWS и операции EWS для работы с встречами и собраниямиTable 1. EWS Managed API methods and EWS operations for working with appointments and meetings

Метод управляемого API EWSEWS Managed API method Операция EWSEWS operation
Встреча. сохранениеAppointment.Save
Операция CreateItem (элемент календаря)CreateItem operation (calendar item)
Item.BindItem.Bind
Операция GetItem (элемент календаря)GetItem operation (calendar item)

Создание встречи с помощью управляемого API EWSCreate an appointment by using the EWS Managed API

В приведенном ниже примере кода показано, как использовать объект встреча для создания встречи, метод Save для сохранения в папке календаря и метод Item. Bind для проверки того, что встреча создана.The following code example shows how to use the Appointment object to create an appointment, the Save method to save it to your calendar folder, and the Item.Bind method to verify that the appointment was created.

В этом примере предполагается, что вы прошли проверку подлинности на сервере Exchange и приобрели объект ExchangeService с именем Service.This example assumes that you have authenticated to an Exchange server and have acquired an ExchangeService object named service.

Appointment appointment = new Appointment(service);
// Set the properties on the appointment object to create the appointment.
appointment.Subject = "Tennis lesson";
appointment.Body = "Focus on backhand this week.";
appointment.Start = DateTime.Now.AddDays(2);
appointment.End = appointment.Start.AddHours(1);
appointment.Location = "Tennis club";
appointment.ReminderDueBy = DateTime.Now;
// Save the appointment to your calendar.
appointment.Save(SendInvitationsMode.SendToNone);
// Verify that the appointment was created by using the appointment's item ID.
Item item = Item.Bind(service, appointment.Id, new PropertySet(ItemSchema.Subject));
Console.WriteLine("\nAppointment created: " + item.Subject + "\n");

После задания свойств объекта встреча сохраните встречу в папке "Календарь" с помощью метода Save объекта встречи.After setting the properties on the appointment object, you save the appointment to the calendar folder by using the appointment object's Save method.

Обратите внимание, что на этапе проверки вы используете идентификатор элемента, связанный с встречей, чтобы убедиться в том, что встреча находится в папке "Календарь".Note that in the verification step, you use the item Id associated with the appointment to verify that the appointment is in the calendar folder. Рекомендуется ограничить свойства, возвращаемые сервером, только тем, что вам нужно — в данном случае это тема встречи.As a best practice, limit the properties returned by the server to only what you need — in this case, the appointment's subject.

Создание встречи с помощью EWSCreate an appointment by using EWS

XML-код запроса и ответа в приведенных ниже примерах соответствует вызовам, выполняемым кодом управляемого API EWS в разделе Создание встречи с помощью управляемого API EWS.The request and response XML in the following examples correspond to calls made by the EWS Managed API code in Create an appointment by using the EWS Managed API. Также отображаются запрос и XML-код ответа, проверяющий наличие элементов встречи в папке "Календарь".The request and response XML that verifies that the appointment items are in the calendar folder are shown as well.

В следующем примере показан XML-код запроса при использовании операции CreateItem для создания встречи.The following example shows the request XML when you use the CreateItem operation to create 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:CreateItem SendMeetingInvitations="SendToNone">
      <m:Items>
        <t:CalendarItem>
          <t:Subject>Tennis lesson</t:Subject>
          <t:Body BodyType="HTML">Focus on backhand this week.</t:Body>
          <t:ReminderDueBy>2013-09-19T14:37:10.732-07:00</t:ReminderDueBy>
          <t:Start>2013-09-21T19:00:00.000Z</t:Start>
          <t:End>2013-09-21T20:00:00.000Z</t:End>
          <t:Location>Tennis club</t:Location>
          <t:MeetingTimeZone TimeZoneName="Pacific Standard Time" />
        </t:CalendarItem>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

В следующем примере показан XML-код отклика, возвращаемый операцией CreateItem .The following example shows the response XML that is returned by the CreateItem operation.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.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="775" MinorBuildNumber="7" Version="V2_4" 
 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:CreateItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" 
  xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:CreateItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:CalendarItem>
              <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
            </t:CalendarItem>
          </m:Items>
        </m:CreateItemResponseMessage>
      </m:ResponseMessages>
    </m:CreateItemResponse>
  </s:Body>
</s:Envelope>

В следующем примере показан XML-код запроса, который создается при использовании операции GetItem для проверки того, что встреча создана.The following example shows the request XML that is generated when you use the GetItem operation to verify that the appointment was created.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.The ItemId and ChangeKey attributes have been shortened for readability.

<?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:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Subject" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

В следующем примере показан XML-код отклика, возвращенный операцией GetItem .The following example shows the response XML that is returned by the GetItem operation.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.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="775" MinorBuildNumber="7" Version="V2_4" 
 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:GetItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:CalendarItem>
              <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
              <t:Subject>Tennis lesson</t:Subject>
            </t:CalendarItem>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

Создание собрания с помощью управляемого API EWSCreate a meeting by using the EWS Managed API

При создании собрания в дополнение к сохранению элемента в папке "Календарь", как правило, вы также хотите отправлять приглашения на собрания участникам.When you create a meeting, in addition to saving an item to the calendar folder, you also typically want to send meeting requests to attendees. В приведенном ниже примере кода показано, как создать собрание и отправить приглашения на собрания.The following code example shows how to create a meeting and send meeting requests.

В этом примере предполагается, что вы прошли проверку подлинности на сервере Exchange и приобрели объект ExchangeService с именем Service.This example assumes that you have authenticated to an Exchange server and have acquired an ExchangeService object named service.

Appointment meeting = new Appointment(service);
// Set the properties on the meeting object to create the meeting.
meeting.Subject = "Team building exercise";
meeting.Body = "Let's learn to really work as a team and then have lunch!";
meeting.Start = DateTime.Now.AddDays(2);            
meeting.End = meeting.Start.AddHours(4);
meeting.Location = "Conference Room 12";
meeting.RequiredAttendees.Add("Mack@contoso.com");
meeting.RequiredAttendees.Add("Sadie@contoso.com");
meeting.OptionalAttendees.Add("Magdalena@contoso.com");
meeting.ReminderMinutesBeforeStart = 60;
// Save the meeting to the Calendar folder and send the meeting request.
meeting.Save(SendInvitationsMode.SendToAllAndSaveCopy);
// Verify that the meeting was created.
Item item = Item.Bind(service, meeting.Id, new PropertySet(ItemSchema.Subject));
Console.WriteLine("\nMeeting created: " + item.Subject + "\n");

После задания свойств объекта " встреча " сохраните собрание в папке "Календарь" с помощью метода Save .After setting the properties on the Appointment object, save the meeting to your calendar folder by using the Save method. Когда вы устанавливаете значение перечисления сендинвитатионсмоде в сендонлитоалл или сендтоалландсавекопи, приглашения отправляются участникам.When you set the SendInvitationsMode enumeration value to SendOnlyToAll or SendToAllAndSaveCopy, invitations are sent to attendees.

Используйте идентификатор элемента, связанный с собранием, чтобы убедиться, что он был сохранен в папке "Календарь".Use the item Id associated with the meeting to verify that it was saved in the calendar folder. Рекомендуется ограничить свойства, возвращаемые сервером, только тем, что вам нужно — в данном случае это тема собрания.As a best practice, limit the properties returned by the server to only what you need - in this case, the meeting's subject.

Создание собрания с помощью EWSCreate a meeting by using EWS

XML-код запроса и ответа в приведенных ниже примерах соответствует вызовам, выполняемым кодом управляемого API EWS в разделе Создание собрания с помощью управляемого API EWS.The request and response XML in the following examples correspond to calls made by the EWS Managed API code in Create a meeting by using the EWS Managed API. Также отображаются запрос и XML-код ответа, проверяющий наличие элементов собрания в папке "Календарь".The request and response XML that verifies that the meeting items are in the calendar folder are shown as well.

В следующем примере показан XML-код запроса при использовании операции CreateItem для создания собрания.The following example shows the request XML when you use the CreateItem operation to create 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:CreateItem SendMeetingInvitations="SendToAllAndSaveCopy">
      <m:Items>
        <t:CalendarItem>
          <t:Subject>Team building exercise</t:Subject>
          <t:Body BodyType="HTML">Let's learn to really work as a team and then have lunch!</t:Body>
          <t:ReminderMinutesBeforeStart>60</t:ReminderMinutesBeforeStart>
          <t:Start>2013-09-21T16:00:00.000Z</t:Start>
          <t:End>2013-09-21T20:00:00.000Z</t:End>
          <t:Location>Conference Room 12</t:Location>
          <t:RequiredAttendees>
            <t:Attendee>
              <t:Mailbox>
                <t:EmailAddress>Mack.Chaves@contoso.com</t:EmailAddress>
              </t:Mailbox>
            </t:Attendee>
            <t:Attendee>
              <t:Mailbox>
                <t:EmailAddress>Sadie.Daniels@contoso.com</t:EmailAddress>
              </t:Mailbox>
            </t:Attendee>
          </t:RequiredAttendees>
          <t:OptionalAttendees>
            <t:Attendee>
              <t:Mailbox>
                <t:EmailAddress>Magdalena.Kemp@contoso.com</t:EmailAddress>
              </t:Mailbox>
            </t:Attendee>
          </t:OptionalAttendees>
          <t:MeetingTimeZone TimeZoneName="Pacific Standard Time" />
        </t:CalendarItem>
      </m:Items>
    </m:CreateItem>
  </soap:Body>
</soap:Envelope>

В следующем примере показан XML-код отклика, возвращаемый операцией CreateItem .The following example shows the response XML that is returned by the CreateItem operation.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.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="775" MinorBuildNumber="7" Version="V2_4" 
 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:CreateItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:CreateItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:CalendarItem>
              <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
            </t:CalendarItem>
          </m:Items>
        </m:CreateItemResponseMessage>
      </m:ResponseMessages>
    </m:CreateItemResponse>
  </s:Body>
</s:Envelope>

В следующем примере показан XML-код запроса, созданный операцией GetItem при проверке того, что собрание было создано.The following example shows the request XML that is generated by the GetItem operation when you verify that the meeting was created.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.The ItemId and ChangeKey attributes have been shortened for readability.

<?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:GetItem>
      <m:ItemShape>
        <t:BaseShape>IdOnly</t:BaseShape>
        <t:AdditionalProperties>
          <t:FieldURI FieldURI="item:Subject" />
        </t:AdditionalProperties>
      </m:ItemShape>
      <m:ItemIds>
        <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
      </m:ItemIds>
    </m:GetItem>
  </soap:Body>
</soap:Envelope>

В следующем примере показан XML-код отклика, возвращенный операцией GetItem .The following example shows the response XML that is returned by the GetItem operation.

Примечание

Атрибуты ItemId и чанжекэй были сокращены для удобочитаемости.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="775" MinorBuildNumber="7" Version="V2_4" 
 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:GetItemResponse xmlns:m="https://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="https://schemas.microsoft.com/exchange/services/2006/types">
      <m:ResponseMessages>
        <m:GetItemResponseMessage ResponseClass="Success">
          <m:ResponseCode>NoError</m:ResponseCode>
          <m:Items>
            <t:CalendarItem>
              <t:ItemId Id="AAMkA" ChangeKey="DwAAA" />
              <t:Subject>Team building exercise</t:Subject>
            </t:CalendarItem>
          </m:Items>
        </m:GetItemResponseMessage>
      </m:ResponseMessages>
    </m:GetItemResponse>
  </s:Body>
</s:Envelope>

См. такжеSee also