2017-03-01 2 views
0

Exchange 관리 API를 사용하고 푸시 알림을 사용하고 있습니다. 아래 코드를 사용하고 있습니다.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에 대한 조회가 발생합니다. 하지만 지금은 그 반응을 어떻게 처리합니까? 요청 헤더에 값이 제한되어 있습니다. 어떻게이 요청을 처리하는 캘린더를 알 수 있습니까?

답변

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. 하지만 내 질문에 그 통지에서 값을 어떻게 얻을. 캘린더의 변경 사항이 생기면 API를 통해 내 URL로 전화를 걸 수 있습니다. 이 변수가 어느 변수에 있는지 나는 C#에서 코드를 사용하고 있는데 request.header도 확인했지만 거기에는 정보도 없다 .. 도와주세요 –

+0

답장을 보내주세요. 나는 붙어있다. 대기중인 C# 코드 –