Свойства приглашения на собрание не могут быть установлены в вызовах SOAP EWS?

Я (ре) создаю (повторяющиеся) события в Exchange Server, общаясь с веб-службами Exchange с помощью чистых вызовов SOAP.

Когда эти события фактически являются приглашениями на собрание, я пытаюсь сохранить некоторые свойства собрания, которые были ранее извлечены, поэтому я помещаю их в CreateItem вызов:

AllowNewTimeProposal
AppointmentReplyTime
ConferenceType
IsCancelled
IsOnlineMeeting
IsResponseRequested
MeetingWorkspaceURL
MeetingRequestWasSent
MyResponseType
NetShowURL
Organizer
OptionalAttendees
RequiredAttendees
Resources

Сначала я получил ошибку Set action is invalid for property для свойств IsCancelled а также IsOnlineMeetingи подумал О, они, вероятно, установлены автоматически, но теперь я даже получаю их для Organizer на событие, где пользователь является организатором.

Что здесь происходит?
Все эти свойства собрания не могут быть установлены в CreateItem вызов?
Я только что случайно натолкнулся на три, которые нельзя установить - где я могу найти список того, что на самом деле можно установить (документы, например, по https://msdn.microsoft.com/en-us/library/aa580675%28v=exchg.80%29.aspx упоминают случайный элемент только для чтения, но не эти)?

Запрос:

<soapenv:Envelope
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
  xmlns:typ="http://schemas.microsoft.com/exchange/services/2006/types"
  xmlns:mes="http://schemas.microsoft.com/exchange/services/2006/messages">
<soapenv:Header>
  <typ:RequestServerVersion Version="Exchange2007_SP1"/>
  <typ:MailboxCulture>en-US</typ:MailboxCulture>
  <typ:TimeZoneContext>
     <typ:TimeZoneDefinition Id="W. Europe Standard Time"/>
  </typ:TimeZoneContext>
</soapenv:Header>
<soapenv:Body>
   <mes:CreateItem SendMeetingInvitations="SendToNone">
      <mes:SavedItemFolderId>
         <typ:DistinguishedFolderId Id="calendar">
            <typ:Mailbox>
               <typ:EmailAddress>jan@TimeTellBV567.onmicrosoft.com</typ:EmailAddress>
            </typ:Mailbox>
         </typ:DistinguishedFolderId>
      </mes:SavedItemFolderId>
      <mes:Items>
         <typ:CalendarItem>
           <typ:Subject>recuir MODI</typ:Subject>
           <typ:Body BodyType="Text"></typ:Body>
           <typ:Categories>
             <typ:String>TimeTell</typ:String>
           </typ:Categories>
           <typ:ReminderIsSet>false</typ:ReminderIsSet>
           <typ:Start>2015-07-23T11:30:00.000+02:00</typ:Start>
           <typ:End>2015-07-23T12:00:00.000+02:00</typ:End>
           <typ:IsAllDayEvent>false</typ:IsAllDayEvent>
           <typ:LegacyFreeBusyStatus>Busy</typ:LegacyFreeBusyStatus>
           <typ:Location>daar</typ:Location>
           <typ:IsResponseRequested>true</typ:IsResponseRequested>
           <typ:MyResponseType>Organizer</typ:MyResponseType>
           <typ:Organizer>
             <typ:Mailbox>
               <typ:Name>Jan</typ:Name>
               <typ:EmailAddress>jan@somewhere.onmicrosoft.com</typ:EmailAddress>
               <typ:RoutingType>SMTP</typ:RoutingType>
             </typ:Mailbox>
           </typ:Organizer>
           <typ:RequiredAttendees>
             <typ:Attendee>
               <typ:Mailbox>
                 <typ:Name>Ben</typ:Name>
                 <typ:EmailAddress>ben@somewhere.onmicrosoft.com</typ:EmailAddress>
                 <typ:RoutingType>SMTP</typ:RoutingType>
               </typ:Mailbox>
               <typ:ResponseType>Unknown</typ:ResponseType>
             </typ:Attendee>
           </typ:RequiredAttendees>
           <typ:Recurrence>
             <typ:WeeklyRecurrence>
               <typ:Interval>1</typ:Interval>
               <typ:DaysOfWeek>Thursday</typ:DaysOfWeek>
             </typ:WeeklyRecurrence>
             <typ:NoEndRecurrence>
               <typ:StartDate>2015-07-23+01:00</typ:StartDate>
             </typ:NoEndRecurrence>
           </typ:Recurrence>
           <typ:MeetingTimeZone TimeZoneName="W. Europe Standard Time"/>
           <typ:ConferenceType>0</typ:ConferenceType>
           <typ:AllowNewTimeProposal>true</typ:AllowNewTimeProposal>
           <typ:IsOnlineMeeting>false</typ:IsOnlineMeeting>
         </typ:CalendarItem>
      </mes:Items>
   </mes:CreateItem>
</soapenv:Body>
</soapenv:Envelope>

Отклик:

<Envelope>
  <Header>
    <ServerVersionInfo MajorVersion="15" MinorVersion="1" MajorBuildNumber="213" MinorBuildNumber="21" Version="V2_47"/>
  </Header>
  <Body>
    <CreateItemResponse>
      <ResponseMessages>
        <CreateItemResponseMessage ResponseClass="Error">
          <MessageText>Set action is invalid for property.</MessageText>
          <ResponseCode>ErrorInvalidPropertySet</ResponseCode>
          <DescriptiveLinkKey>0</DescriptiveLinkKey>
          <MessageXml>
            <FieldURI FieldURI="calendar:Organizer"/>
          </MessageXml>
          <Items/>
        </CreateItemResponseMessage>
      </ResponseMessages>
    </CreateItemResponse>
  </Body>
</Envelope>

В настоящее время я тестирую с организатором в его собственном каландре, против Office 365, но, как вы можете видеть из запроса, я хочу, чтобы это работало с Exchange2007_SP1 вверх.

1 ответ

(Отвечая на мой собственный вопрос)

Ммм, этот вопрос был немного ложной тревогой, но я оставляю его здесь, потому что информацию трудно найти.

Оказывается, что свойства, которые я пытался изменить, действительно были доступны только для чтения: IsCancelled, IsOnlineMeeting, MeetingRequestWasSent а также Organizer, Цитирую Ким Брэнд из ответа на пост "Организатор Exchange EWS CalendarItem Organizer" на форуме по разработке MS Exchange:

Органайзер - это свойство только для чтения, что означает, что вы не можете "установить" это свойство. Вот почему вы видите сообщение об ошибке "Задать недопустимое действие для свойства".
Организатор - это сторона, ответственная за координацию посещаемости собрания, и его значение автоматически устанавливается для пользователя, который создает CalendarItem (если не используется делегированный доступ).

Когда я оставляю вышеупомянутые свойства из моего CreateItem звоните, все работает. GetItem на созданной / обновленной встрече показывает, что Organizer действительно установлено:

<t:Organizer>
   <t:Mailbox>
      <t:Name>Jan</t:Name>
      <t:EmailAddress>/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=A9403513C6AA40E68E05776BFEA9C117-JAN</t:EmailAddress>
      <t:RoutingType>EX</t:RoutingType>
      <t:MailboxType>OneOff</t:MailboxType>
   </t:Mailbox>
</t:Organizer>


[Отредактировано, чтобы добавить]:
Можно установить свойства только для чтения через MAPI, см. Мой другой пост
Как "установить" свойства календаря только для чтения (связанные с собраниями)?

Другие вопросы по тегам