交换api推送通知响应

时间:2017-03-01 09:32:14

标签: exchangewebservices

我正在使用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上获得了一个热门。 但现在我如何处理这种反应? 请求标头中的值有限。 我怎么知道哪个日历,这个请求的服务来了。

2 个答案:

答案 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查找有问题的项目。