我正在使用Exchange托管API并使用推送通知。 我使用下面的代码
Uri uri = new Uri(“http://domain.io/MyPage.aspx”);
PushSubscription ps = service.SubscribeToPushNotifications(folder,uri,1,“”,EventType.Created,EventType.Modified,EventType.Deleted);
现在,当我从日历更改事件时,我在domain.io/MyPage.aspx上获得了一个热门。 但现在我如何处理这种反应? 请求标头中的值有限。 我怎么知道哪个日历,这个请求的服务来了。
答案 0 :(得分:1)
这是我的答案。使用API调用更简单。
public HttpResponseMessage ExchangeCalendar()
{
string itemId = string.Empty;
string subscriptionId = string.Empty;
string pushResponse = "OK";
string RESPONSE_OK = string.Empty;
HttpContent requestContent = Request.Content;
string eventData = requestContent.ReadAsStringAsync().Result;
XmlDocument doc = new XmlDocument();
doc.LoadXml(eventData);
subscriptionId = GetNodeValue(doc.GetElementsByTagName("t:SubscriptionId"));
itemId = GetNodeValue(doc.GetElementsByTagName("t:ItemId"));
calendarId = GetNodeValue(doc.GetElementsByTagName("t:FolderId"));
RESPONSE_OK = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope\"><soap:Body><SendNotificationResult xmlns=\"http://schemas.microsoft.com/exchange/services/2006/messages\"><SubscriptionStatus>" + pushResponse + "</SubscriptionStatus></SendNotificationResult></soap:Body></soap:Envelope>";
return new HttpResponseMessage()
{
Content = new StringContent(RESPONSE_OK, Encoding.UTF8, "text/xml")
};
}
答案 1 :(得分:0)
在非常基本的术语中,SubscribeToPushNotifications
调用返回PushSubscription
后会有一个订阅ID,用于链接您订阅的文件夹。该文件夹的任何通知都将包含订阅ID和ItemId,以及通知类型,New,Changed,Moved等。您需要维护某种订阅ID到文件夹的映射,然后调用EWS通过GetItem查找有问题的项目。