1

Ich versuche mit EWS Managed API zu arbeiten, um die Konferenzraumliste, und für jeden Raum die Terminliste für eine Woche zu sehen.C# Exchange-Server erhalten Besprechungsraum Terminliste

sah ich Get room lists by using EWS in Exchange Und Get appointments and meetings by using EWS in Exchange

I-Test das erste Glied haben und ich bekomme 0 Zimmer.
Auch für den zweiten Link gab es den aktuellen Benutzerkalender aber nicht treffen.

Ich brauche 3 Dinge:

1) in meiner Organisation den Besprechungsraum Liste.
2) Holen Sie sich den Besprechungskalender für jedes Zimmer (für X Tage).
3) Für jedes Meeting, wer organisiert das Treffen.

Ich kann die API nicht finden, um diese Informationen zu erhalten.

Antwort

0

Nach vieler Recherche und dank this post fand ich eine Antwort # 1 und # 2

1) in Frage zu stellen für die ganzen Konferenzraum in Ihrer Organisation erhalten:

string filter = "(&(objectClass=*)(msExchRecipientDisplayType=7))"; 
//Assembly System.DirectoryServices.dll 
DirectorySearcher search = new DirectorySearcher(filter); 
List<AttendeeInfo> rooms = new List<AttendeeInfo>(); 
foreach (SearchResult result in search.FindAll()) 
      { 
       ResultPropertyCollection r = result.Properties; 
       DirectoryEntry entry = result.GetDirectoryEntry(); 
       // entry.Properties["displayName"].Value.ToString() will bring the room name 
       rooms.Add(new AttendeeInfo(entry.Properties["mail"].Value.ToString().Trim()));     
      } 

2) Holen sie sich den Meeting-Kalender für jedes Zimmer (für 2 Tage):

List<AttendeeInfo> attend = new List<AttendeeInfo>(); 
foreach (AttendeeInfo inf in rooms) 
    { 
     attend.Clear(); 
     attend.Add(inf.SmtpAddress); 

     AvailabilityOptions options = new AvailabilityOptions(); 
     options.MaximumSuggestionsPerDay = 48; 
     // service is ExchangeService object contains your authentication with exchange server 
     GetUserAvailabilityResults results = service.GetUserAvailability(attend, new TimeWindow(DateTime.Now, DateTime.Now.AddDays(2)), AvailabilityData.FreeBusyAndSuggestions, options); 

     foreach (AttendeeAvailability attendeeAvailability in results.AttendeesAvailability) 
       { 
        Console.WriteLine(); 
        Console.WriteLine(); 
        if (attendeeAvailability.ErrorCode == ServiceError.NoError) 
        { 
         foreach (Microsoft.Exchange.WebServices.Data.CalendarEvent calendarEvent in 
         attendeeAvailability.CalendarEvents) 
         { 
          Console.WriteLine("Calendar event"); 
          Console.WriteLine(" Starttime: " + calendarEvent.StartTime.ToString()); 
          Console.WriteLine(" Endtime: " + calendarEvent.EndTime.ToString()); 
          if (calendarEvent.Details != null) 
          { 
           Console.WriteLine(" Subject:" + calendarEvent.Details.Subject); 

          } 
         } 
        } 
       } 
      } 

über Frage # 3, ist es nicht einfach, diese Informationen zu erhalten, weil es privat ist Die Informationen und als normaler Benutzer haben Sie keine Erlaubnis, es zu sehen.