Свойства приглашения на собрание не могут быть установлены в вызовах 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, см. Мой другой пост
Как "установить" свойства календаря только для чтения (связанные с собраниями)?