У нас есть существующая реализация, которая подписывается через уведомления EWS Managed API о push-уведомлениях для календаря пользователя в Office 365 Exchange Online.Можно ли подписаться на push-уведомления для календаря ресурсов Exchange-сервера
PushSubscription pushSubscription = exchangeService.SubscribeToPushNotifications(
new FolderId[] { WellKnownFolderName.Calendar },
new Uri(callbackEndpoint), statusFrequency, null,
EventType.Created, EventType.Deleted, EventType.Modified,
EventType.Moved, EventType.Copied, EventType.FreeBusyChanged);
За исключением subscription not being able to last forever, в противном случае штраф; встречи, запланированные в календаре, отправляют уведомления в наш веб-сервис.
Теперь вместо мониторинга событий с точки зрения почтового ящика пользователя нам интересно, можно ли подписаться с перспективы почтового ящика ресурса комнаты.
// Set room mailbox address.
exchangeService.ImpersonatedUserId = new ImpersonatedUserId(ConnectingIdType.SmtpAddress, roomAddress);
PushSubscription pushSubscription = exchangeService.SubscribeToPushNotifications(
new FolderId[] { WellKnownFolderName.Calendar },
new Uri(callbackEndpoint), statusFrequency, null,
EventType.Created, EventType.Deleted, EventType.Modified,
EventType.Moved, EventType.Copied, EventType.FreeBusyChanged);
К сожалению, это не получится быть так просто,
The request failed. The remote server returned an error: (457) https://autodiscover-s.outlook.com/owa/domain.onmicrosoft.com .
Я не могу найти в глубине материала объяснить, что ошибка 457 на самом деле есть, и как преодолеть эту проблему.
Кроме того, я не нашел никого другого, пытающегося подписки на почтовые ящики ресурсов. Это потому, что это невозможно, или просто никто никогда не нашел нужды?
UPDATE
Пробовал с помощью EWSEditor tool, чтобы увидеть, какие виды дополнительных деталей может быть пронюхали; похоже, что выдавать себя за почтовый ящик комнаты требует своего рода специального разрешения.
Exception details: Message: The account does not have permission to impersonate the requested user. Type: Microsoft.Exchange.WebServices.Data.ServiceResponseException Source: Microsoft.Exchange.WebServices ErrorCode: ErrorImpersonateUserDenied ErrorMessage: The account does not have permission to impersonate the requested user. Stack Trace: at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(WebException webException) at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request) at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalConvertIds(IEnumerable 1 ids, IdFormat destinationFormat, ServiceErrorHandling errorHandling)
at Microsoft.Exchange.WebServices.Data.ExchangeService.ConvertIds(IEnumerable 1 ids, IdFormat destinationFormat) at EWSEditor.Common.Extensions.ExchangeServiceExtensions.TestExchangeService(ExchangeService service)
Я попытался назначить полный доступ для делегирования почтовых ящиков в интерфейсе администратора Office 365, но это, кажется, не делать никаких одолжений.