Exchange EWS ID转换

时间:2017-11-27 21:55:28

标签: exchangewebservices

我正在尝试构建一个EWS(通过SOAP - 它是一个PHP应用程序,没有.net!)应用程序,它查找任意用户的约会,然后查找(如果可能的话)约会详细信息。 / p>

我使用GetUserAvailability调用并从中获取CalendarEvent。到目前为止一切顺利,对于我在Outlook中拥有查看权限的事件,我在CalendarEventDetails内获得CalendarEvent块。然而ID在随后的GetItem电话中无法使用:

    来自CalendarEventDetails的{​​li> ID:00000000D18EFE3E27D8FA498176E18417AF9E590700B2A9C65B63B7D74B9028423C9EEB4F6800000000010D0000B2A9C65B63B7D74B9028423C9EEB4F6800008765890B0000
  • 来自CalendarItem调用检索到的FindItem的ID(位于目标用户的“日历”文件夹中):AAMkAGM5ODcxMzhjLTRkMGYtNDVmNC1iOTc5LTMyNWIyZTJhNWVjZABGAAAAAADRjv4+J9j6SYF24YQXr55ZBwCyqcZbY7fXS5AoQjye609oAAAAAAENAACyqcZbY7fXS5AoQjye609oAACHZYkLAAA=

当我对FindItem ID进行base64解密并将其转换为十六进制时,FindItem ID似乎包含一些标头,一个UUID和来自CalendarEventDetails的ID。

CalendarEventDetails来电时使用GetItem ID需要做什么?

1 个答案:

答案 0 :(得分:2)

  
    

00000000D18EFE3E27D8FA498176E18417AF9E590700B2A9C65B63B7D74B9028423C9EEB4F6800000000010D0000B2A9C65B63B7D74B9028423C9EEB4F6800008765890B0000

  

此Id是日历约会的HexEntryId,因此需要使用EWS https://msdn.microsoft.com/en-us/library/office/bb799665(v=exchg.150).aspx中的ConvertId操作将其转换为EWSId。您需要将Type HexEntryId转换为EWSid,例如

 <?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
      <t:RequestServerVersion Version="Exchange2010_SP2" />
    </soap:Header>
    <soap:Body>
      <m:ConvertId DestinationFormat="EwsId">
        <m:SourceIds>
          <t:AlternateId Format="HexEntryId" Id="00000000D18EFE3E27D8FA498176E18417AF9E590700B2A9C65B63B7D74B9028423C9EEB4F6800000000010D0000B2A9C65B63B7D74B9028423C9EEB4F6800008765890B0000" Mailbox="user@domain.com" />
        </m:SourceIds>
      </m:ConvertId>
    </soap:Body>
  </soap:Envelope>