2017-03-01 9 views
0

私は交換管理APIを使用しており、プッシュ通知を使用しています。 私は以下のコードを使用しています交換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でヒットします。 しかし、私はどのようにその応答を処理するのですか? リクエストヘッダーには値が限られています。 どのようにこのリクエストを処理するカレンダーがわかっているでしょうか。

答えて

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") 
     }; 
    } 
0

非常に基本的には、SubscribeToPushNotifications呼び出し後にPushSubscriptionが返された後、購読したフォルダをリンクするサブスクリプションIDがあります。そのフォルダの通知には、サブスクリプションIDとItemId、および通知のタイプ(新規、変更、移動など)が含まれます。サブスクリプションIDツーフォルダーのマッピングを維持してから、 EWSを介してGetItemを使用して問題のアイテムを検索します。

+0

ありがとうpjneary。しかし、私の質問は、その通知からどのように値を得るかということです。これまでカレンダーの変更があった場合、EWS APIが私のURLを呼び出します。これらの値がどの変数にあるのかを調べます。私はC#でコードを使っていますが、私もrequest.headerをチェックしますが、情報もありません。助けてください –

+0

返信してください。ハマった。 C#コードを待っています –

関連する問題