是否可以为Exchange会议室资源日历订阅推送通知

时间:2015-01-20 03:13:05

标签: exchange-server exchangewebservices

我们有一个现有的实施方案,可以通过EWS托管API推送通知订阅Office 365 Exchange Online中的用户日历。

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);

不幸的是,事情并非如此简单,

  

请求失败。远程服务器返回错误:(457)   https://autodiscover-s.outlook.com/owa/domain.onmicrosoft.com

我找不到任何深入的材料来解释457真正的错误,以及如何克服这个问题。

此外,我还没有找到任何其他人尝试订阅资源邮箱。是因为它完全不可能,或者根本没有人发现需要吗?

更新

尝试使用EWSEditor tool查看可以嗅出哪些额外细节;似乎冒充房间邮箱需要某种特殊许可。

  

异常详细信息:消息:该帐户没有权限   冒充所请求的用户。类型:   Microsoft.Exchange.WebServices.Data.ServiceResponseException来源:   Microsoft.Exchange.WebServices ErrorCode:ErrorImpersonateUserDenied   ErrorMessage:该帐户没有模仿的权限   请求的用户。堆栈跟踪:at   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ProcessWebException(引发WebException   webException)at   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest   请求)   Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest&安培;   请求)   Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute()   在   Microsoft.Exchange.WebServices.Data.ExchangeService.InternalConvertIds(IEnumerable 1   id,IdFormat destinationFormat,ServiceErrorHandling errorHandling)
  在   Microsoft.Exchange.WebServices.Data.ExchangeService.ConvertIds(IEnumerable 1   id,IdFormat destinationFormat)at   EWSEditor.Common.Extensions.ExchangeServiceExtensions.TestExchangeService(ExchangeService   服务)

我尝试在Office 365管理界面中为邮箱委派分配完全访问权限,但这似乎没有任何好处。

1 个答案:

答案 0 :(得分:0)

看起来实现这一目标的关键是启用对指定服务帐户的模拟。

http://blogs.msdn.com/b/pareshj/archive/2011/11/29/exchange-web-services-fail-using-impersonation-to-access-mailboxes.aspx

http://msdn.microsoft.com/en-us/library/bb204095.aspx

一旦为组织帐户和指定的用户帐户完成此操作,就可以与带模拟的会议室邮箱和订阅进行交互。