Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#exchange server获取会议室约会列表_C#_Exchange Server_Exchangewebservices_Exchange Server 2010_Exchange Server 2007 - Fatal编程技术网

C#exchange server获取会议室约会列表

C#exchange server获取会议室约会列表,c#,exchange-server,exchangewebservices,exchange-server-2010,exchange-server-2007,C#,Exchange Server,Exchangewebservices,Exchange Server 2010,Exchange Server 2007,我正在尝试使用EWS管理的API获取会议室列表, 并为每个房间查看一周的预约清单 我看到 及 我测试了第一个链接,得到了0个房间。 对于第二个链接,它提供了当前用户日历,但没有提供会议 我需要3样东西: 1) 获取组织中的会议室列表。 2) 获取每个房间的会议日历(X天)。 3) 对于每次会议,由谁组织会议 我找不到获取此信息的API。经过大量搜索,感谢 我找到了问题1和问题2的答案 1) 要获取组织中的所有会议室,请执行以下操作: string filter = "(&(object

我正在尝试使用EWS管理的API获取会议室列表, 并为每个房间查看一周的预约清单

我看到 及

我测试了第一个链接,得到了0个房间。
对于第二个链接,它提供了当前用户日历,但没有提供会议

我需要3样东西:

1) 获取组织中的会议室列表。
2) 获取每个房间的会议日历(X天)。
3) 对于每次会议,由谁组织会议


我找不到获取此信息的API。

经过大量搜索,感谢 我找到了问题1和问题2的答案

1) 要获取组织中的所有会议室,请执行以下操作:

 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()));                 
            }
string filter=“(&(objectClass=*)(msExchRecipientDisplayType=7))”;
//汇编系统.DirectoryServices.dll
DirectorySearcher search=新的DirectorySearcher(过滤器);
列表房间=新列表();
foreach(search.FindAll()中的SearchResult)
{
ResultPropertyCollection r=result.Properties;
DirectoryEntry=result.GetDirectoryEntry();
//entry.Properties[“displayName”].Value.ToString()将显示文件室名称
添加(新的AttendeInfo(entry.Properties[“mail”].Value.ToString().Trim());
}
2) 获取每个房间的会议日历(2天):

List attend=newlist();
foreach(会议室中的与会者信息inf)
{
出席;
参加。添加(inf.SmtpAddress);
AvailabilityOptions=新的AvailabilityOptions();
options.MaximumSuggestionsPerDay=48;
//服务是ExchangeService对象包含您与exchange server的身份验证
GetUserAvailabilityResults results=service.GetUserAvailability(出席,新时间窗口(DateTime.Now,DateTime.Now.AddDays(2)),AvailabilityData.FreeBus和建议,选项);
foreach(结果中的AttendeAvailability.AttendeSavaailability)
{
Console.WriteLine();
Console.WriteLine();
if(AttendeAvailability.ErrorCode==ServiceError.NoError)
{
foreach(中的Microsoft.Exchange.WebServices.Data.CalendarEvent日历事件
与会者(可用性。日历事件)
{
Console.WriteLine(“日历事件”);
WriteLine(“Starttime:+calendarEvent.Starttime.ToString());
Console.WriteLine(“Endtime:+calendarEvent.Endtime.ToString());
if(calendarEvent.Details!=null)
{
Console.WriteLine(“主题:+calendarEvent.Details.Subject”);
}
}
}
}
}

关于问题#3,获取此信息并不简单,因为它是私人信息,作为普通用户,您没有查看它的权限

如图所示获取房间仅在Exchange处于prem并绑定到域时有效。
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);

                            }
                        }
                    }
                }
            }