Exchange ItemID отличается от GlobalAppointmentID для Outlook AddIn
Проблема, с которой я сталкиваюсь, заключается в том, что GlobalAppointmentID назначения Outlook, созданного с помощью Outlook FormRegion, отличается от ItemID при использовании управляемого API EWS.
Я создаю надстройку Outlook, которая позволяет пользователям добавлять информацию о клиентах и проектах на собрание. Надстройка также хранит идентификатор встречи и данные собрания в базе данных, и служба периодически проверяет этот идентификатор, чтобы обновить данные о встрече.
Итак, вот как я использую AddIn:
Outlook.AppointmentItem appointement = (Outlook.AppointmentItem)this.OutlookItem;
appointement.Save();
string ExchangeID = appointement.GlobalAppointmentID;
Здесь GlobalAppointmentID: 040000008200E00074C5B7101A82E0080000000060CADC517255CE01000000000000000010000000847A9CD89052DC49BA28DC8AAFBBB4BA
Но управляемый API EWS ожидает что-то вроде: AAMkADViNTJlZTg5LTIwYWMtNGY3My1howziltziotm3otk3nzk1yqbgaaaaaaaefbmehamsrzur9avsphpmbwcysaa5hwpmransowsnkrckaaaaxal/AACysaa5HwPMRanSoWSnKrckAAAAXCxwaaa=
Привязать назначение к службе. Есть возможность решить эту проблему, но только с помощью автоматически генерируемые прокси, а не управляемый API ссылка на прокси-решение
Так есть ли способ, чтобы либо с помощью управляемого поиска API для GlobalAppointementID или из Outlook addin, и получить идентификатор элемента?
2 ответа:
Идентификаторы могут быть представлены различными способами. Outlook использует первую форму, EWS-вторую.
Для преобразования используйте методConvertID .Вот примеры запросов / ответов в формате raw SOAP (с этими примерами вы должны быть в состоянии реализовать их с помощью API):
Outlook HexEntryID для обмена EWSID<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> </soapenv:Header> <soapenv:Body> <mes:ConvertId DestinationFormat="EwsId"> <mes:SourceIds> <typ:AlternateId Format="HexEntryId" Id="0000000068C940C[snip]63136C3D0000" Mailbox="user@domain.com"/> </mes:SourceIds> </mes:ConvertId> </soapenv:Body> </soapenv:Envelope> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="14" MinorVersion="0" MajorBuildNumber="722" MinorBuildNumber="0" Version="Exchange2010" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:ConvertIdResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:ConvertIdResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:AlternateId xsi:type="t:AlternateIdType" Format="EwsId" Id="AQMkADkyZTQxNjUzL[snip]YxNsPQAAAA==" Mailbox="user@domain.com"/> </m:ConvertIdResponseMessage> </m:ResponseMessages> </m:ConvertIdResponse> </s:Body> </s:Envelope>
Обмен EWSID на Outlook HexEntryID:
<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"/> </soapenv:Header> <soapenv:Body> <mes:ConvertId DestinationFormat="HexEntryId"> <mes:SourceIds> <typ:AlternateId Format="EwsId" Id="AQMkADkyZTQxNjUzLTcwZTQtNGRlNS04M2VmLWMxYmIBNWJi[snip]YxNsPQAAAA==" Mailbox="user@domain.com"/> </mes:SourceIds> </mes:ConvertId> </soapenv:Body> </soapenv:Envelope> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="14" MinorVersion="0" MajorBuildNumber="722" MinorBuildNumber="0" Version="Exchange2010" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:ConvertIdResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:ConvertIdResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:AlternateId xsi:type="t:AlternateIdType" Format="HexEntryId" Id="0000000068C940[snip]136C3D0000" Mailbox="user@domain.com"/> </m:ConvertIdResponseMessage> </m:ResponseMessages> </m:ConvertIdResponse> </s:Body> </s:Envelope>
Обратите внимание, что есть разница в использовании этих двух типов идентификаторов при использовании повторяющиеся встречи и события:
Если идентификаторы EWS отличаются для каждого отдельного события, то идентификатор шестнадцатеричной записи Outlook идентичен для всех:Ответ FindItem для повторяющегося события с одним исключением-обратите внимание на различные ItemIDs:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="14" MinorVersion="0" MajorBuildNumber="722" MinorBuildNumber="0" Version="Exchange2010" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:FindItemResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:RootFolder TotalItemsInView="10" IncludesLastItemInRange="true"> <t:Items> <t:CalendarItem> <t:ItemId Id="AAMkADkyZTQxNjUzLTcwZTQtNGRlNS04M2VmLWMxYmJiNWJiNTBlNgFRAAgI0B8WRv2AAEYAAAAAgq3iY5OVdkmtnHS/lxCbwgcAhKYXWHH/akCFAFNVQGZiCgAAAAAAIQAAhKYXWHH/akCFAFNVQGZiCgACKa9YrQAAEA==" ChangeKey="DwAAABYAAACEphdYcf9qQIUAU1VAZmIKAAIpr2i3"/> <t:ItemClass>IPM.Appointment.Occurrence</t:ItemClass> <t:Subject>Recurring appointment with one exception</t:Subject> <t:Sensitivity>Normal</t:Sensitivity> <t:DateTimeCreated>2013-05-22T06:51:26Z</t:DateTimeCreated> <t:LastModifiedTime>2013-05-22T06:52:20Z</t:LastModifiedTime> <t:Start>2013-05-15T10:30:00Z</t:Start> <t:End>2013-05-15T11:00:00Z</t:End> <t:IsRecurring>true</t:IsRecurring> <t:CalendarItemType>Occurrence</t:CalendarItemType> </t:CalendarItem> <t:CalendarItem> <t:ItemId Id="AAMkADkyZTQxNjUzLTcwZTQtNGRlNS04M2VmLWMxYmJiNWJiNTBlNgFRAAgI0B/fcWdAAEYAAAAAgq3iY5OVdkmtnHS/lxCbwgcAhKYXWHH/akCFAFNVQGZiCgAAAAAAIQAAhKYXWHH/akCFAFNVQGZiCgACKa9YrQAAEA==" ChangeKey="DwAAABYAAACEphdYcf9qQIUAU1VAZmIKAAIpr2i3"/> <t:ItemClass>IPM.OLE.CLASS.{00061055-0000-0000-C000-000000000046}</t:ItemClass> <t:Subject>The exception</t:Subject> <t:Sensitivity>Normal</t:Sensitivity> <t:DateTimeCreated>2013-05-22T06:51:58Z</t:DateTimeCreated> <t:LastModifiedTime>2013-05-22T06:52:20Z</t:LastModifiedTime> <t:Start>2013-05-16T12:00:00Z</t:Start> <t:End>2013-05-16T12:30:00Z</t:End> <t:IsRecurring>true</t:IsRecurring> <t:CalendarItemType>Exception</t:CalendarItemType> </t:CalendarItem> [snip] Other occurrences removed [snip] </t:Items> </m:RootFolder> </m:FindItemResponseMessage> </m:ResponseMessages> </m:FindItemResponse> </s:Body> </s:Envelope>
Преобразование EWSID в HexEntryID для обоих этих ItemIDs приводит к
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="14" MinorVersion="0" MajorBuildNumber="722" MinorBuildNumber="0" Version="Exchange2010" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:ConvertIdResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:ConvertIdResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:AlternateId xsi:type="t:AlternateIdType" Format="HexEntryId" Id="0000000082ADE26393957649AD9C74BF97109BC2070084A6175871FF6A40850053554066620A000000000021000084A6175871FF6A40850053554066620A000229AF58AD0000" Mailbox="user@domain.com"/> </m:ConvertIdResponseMessage> </m:ResponseMessages> </m:ConvertIdResponse> </s:Body> </s:Envelope> <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Header> <h:ServerVersionInfo MajorVersion="14" MinorVersion="0" MajorBuildNumber="722" MinorBuildNumber="0" Version="Exchange2010" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"/> </s:Header> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <m:ConvertIdResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:ConvertIdResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:AlternateId xsi:type="t:AlternateIdType" Format="HexEntryId" Id="0000000082ADE26393957649AD9C74BF97109BC2070084A6175871FF6A40850053554066620A000000000021000084A6175871FF6A40850053554066620A000229AF58AD0000" Mailbox="user@domain.com"/> </m:ConvertIdResponseMessage> </m:ResponseMessages> </m:ConvertIdResponse> </s:Body> </s:Envelope>
Перспективы назначении идентификатор обертывания внешние (ческих) назначение ИДС. Вам нужно разобрать его: http://msdn.microsoft.com/en-us/library/ee157690 (v=exchg.80).aspx