EWS возвращает tzone://Microsoft/Custom для некоторых событий, как мы извлекаем информацию о часовом поясе?

#exchangewebservices #outlook-restapi

Вопрос:

Рассмотрим следующий XML CalendarItem -ответ:

                         <t:CalendarItem>
                        <t:ItemId Id="XXXXXXXXX"></t:ItemId>
                        <t:Subject>Event Title</t:Subject>
                        <t:Sensitivity>Normal</t:Sensitivity>
                        <t:DateTimeCreated>2021-09-23T01:03:43Z</t:DateTimeCreated>
                        <t:ReminderIsSet>false</t:ReminderIsSet>
                        <t:ReminderNextTime>2021-09-23T01:00:00Z</t:ReminderNextTime>
                        <t:ReminderMinutesBeforeStart>0</t:ReminderMinutesBeforeStart>
                        <t:EffectiveRights>
                            <t:CreateAssociated>false</t:CreateAssociated>
                            <t:CreateContents>false</t:CreateContents>
                            <t:CreateHierarchy>false</t:CreateHierarchy>
                            <t:Delete>true</t:Delete>
                            <t:Modify>true</t:Modify>
                            <t:Read>true</t:Read>
                            <t:ViewPrivateItems>true</t:ViewPrivateItems>
                        </t:EffectiveRights>
                        <t:LastModifiedName>User Name</t:LastModifiedName>
                        <t:LastModifiedTime>2021-09-24T11:34:13Z</t:LastModifiedTime>
                        <t:Start>2021-09-23T01:00:00Z</t:Start>
                        <t:End>2021-09-23T02:00:00Z</t:End>
                        <t:IsAllDayEvent>false</t:IsAllDayEvent>
                        <t:LegacyFreeBusyStatus>Busy</t:LegacyFreeBusyStatus>
                        <t:Location>Virtual Conference Personal Room</t:Location>
                        <t:IsCancelled>false</t:IsCancelled>
                        <t:MyResponseType>Accept</t:MyResponseType>
                        <t:Organizer>
                            <t:Mailbox>
                                <t:Name>Some Name</t:Name>
                                <t:EmailAddress>some@some.com</t:EmailAddress>
                                <t:RoutingType>SMTP</t:RoutingType>
                                <t:MailboxType>OneOff</t:MailboxType>
                            </t:Mailbox>
                        </t:Organizer>
                        <t:RequiredAttendees>
                            <t:Attendee>
                                <t:Mailbox>
                                    <t:Name>Some Name</t:Name>
                                    <t:EmailAddress>some@some.com</t:EmailAddress>
                                    <t:RoutingType>SMTP</t:RoutingType>
                                    <t:MailboxType>OneOff</t:MailboxType>
                                </t:Mailbox>
                                <t:ResponseType>Unknown</t:ResponseType>
                            </t:Attendee>
                        </t:RequiredAttendees>
                        <t:Recurrence>
                            <t:WeeklyRecurrence>
                                <t:Interval>1</t:Interval>
                                <t:DaysOfWeek>Thursday</t:DaysOfWeek>
                                <t:FirstDayOfWeek>Monday</t:FirstDayOfWeek>
                            </t:WeeklyRecurrence>
                            <t:NoEndRecurrence>
                                <t:StartDate>2021-09-23Z</t:StartDate>
                            </t:NoEndRecurrence>
                        </t:Recurrence>
                        <t:StartTimeZoneId>tzone://Microsoft/Custom</t:StartTimeZoneId>
                        <t:EndTimeZoneId>tzone://Microsoft/Custom</t:EndTimeZoneId>
                    </t:CalendarItem>
 

Обратите внимание, как там чего-то не хватает StartTimeZoneId и EndTimeZoneId как там написано tzone://Microsoft/Custom . Как извлечь информацию о часовом поясе? Пользователь создал это событие в Outlook, и единственная соответствующая информация, которую я нашел, находится здесь:

https://docs.microsoft.com/en-us/graph/api/resources/event?view=graph-rest-1.0

В котором говорится, что это означает, что пользователь установил «устаревший часовой пояс» в Outlook. Тем не менее, как мы можем получить устаревшую информацию о часовом поясе, не спрашивая пользователя(ов) об изменении версии / настроек Outlook, поскольку это не находится под их контролем.

Комментарии:

1. Если вы используете редактор Mapi, такой как OutlookSpy или MFCMapi, и посмотрите на следующее свойство docs.microsoft.com/en-us/office/client-developer/outlook/mapi/… это должно содержать определение часового пояса. Возможно, вам придется сделать что-то вроде support.microsoft.com/en-us/topic/… чтобы обеспечить его фиксацию в будущем