GetUserAvailabilityRequestType 类

定义

GetUserAvailabilityRequestType 表示获取用户可用性信息的作。

public ref class GetUserAvailabilityRequestType : ExchangeWebServices::BaseRequestType
public class GetUserAvailabilityRequestType : ExchangeWebServices.BaseRequestType
Public Class GetUserAvailabilityRequestType
Inherits BaseRequestType
继承
GetUserAvailabilityRequestType

示例

下面的代码示例演示了包含以下元素的 GetUserAvailability 查询:

  1. 包含当前和明天的忙/闲数据的时间窗口。
  2. 请求提供有关每个邮箱的日历事件的详细和合并的忙/闲信息。 此示例显示了一个详细信息请求。 但是,根据调用方查看其他邮箱的日历信息的权限,返回的实际信息可能会有所不同。
  3. 返回合并的忙/闲数据的已定义间隔;在本例中为 30 分钟。 如果未请求合并的忙/闲数据,则会忽略这一点。
  4. 阈值定义指出,75% 的与会者免费的任何建议会议时间都被视为良好的会议时间。
  5. 建议的会议时间窗口,包括今天和明天。
  6. 定义为每天建议的会议时间的非工作时间上限数;在本例中为 2。
  7. 每天建议的会议次数上限;在本例中为 10。
  8. 建议的会议时间跨度为 30 分钟。
  9. 最短会议质量时间为“良好”。
  10. 四个邮箱,用于查询忙/闲信息和建议的会议时间。
  11. 在太平洋Standard时间 (PST) 时区具有区域设置并遵循夏令时的客户端应用程序。

代码示例返回每个邮箱的忙/闲信息,使调用方有权查看该数据。 它还返回一组按天组织的建议会议时间,并指示已标识邮箱帐户的可用性。

static void GetUserAvailability(ExchangeServiceBinding esb)
{
    // Identify the options for comparing free/busy information.
    FreeBusyViewOptionsType fbViewOptions = new FreeBusyViewOptionsType();
    fbViewOptions.TimeWindow = new Duration();
    fbViewOptions.TimeWindow.StartTime = DateTime.Today;
    fbViewOptions.TimeWindow.EndTime = DateTime.Today.AddDays(2);
    fbViewOptions.RequestedView = FreeBusyViewType.DetailedMerged;
    fbViewOptions.RequestedViewSpecified = true;
    fbViewOptions.MergedFreeBusyIntervalInMinutes = 30;
    fbViewOptions.MergedFreeBusyIntervalInMinutesSpecified = true;

    // Define the suggestions view.
    SuggestionsViewOptionsType sugViewOptions = new SuggestionsViewOptionsType();
    sugViewOptions.GoodThreshold = 25;
    sugViewOptions.GoodThresholdSpecified = true;
    sugViewOptions.DetailedSuggestionsWindow = new Duration();
    sugViewOptions.DetailedSuggestionsWindow.StartTime = DateTime.Today;
    sugViewOptions.DetailedSuggestionsWindow.EndTime = DateTime.Today.AddDays(2);
    sugViewOptions.MaximumNonWorkHourResultsByDay = 2;
    sugViewOptions.MaximumNonWorkHourResultsByDaySpecified = true;
    sugViewOptions.MaximumResultsByDay = 10;
    sugViewOptions.MaximumResultsByDaySpecified = true;
    sugViewOptions.MeetingDurationInMinutes = 30;
    sugViewOptions.MeetingDurationInMinutesSpecified = true;
    sugViewOptions.MinimumSuggestionQuality = SuggestionQuality.Good;
    sugViewOptions.MinimumSuggestionQualitySpecified = true;

    // Identify the user mailboxes for which to review free/busy data.
    EmailAddress emailAddress0 = new EmailAddress();
    EmailAddress emailAddress1 = new EmailAddress();
    EmailAddress emailAddress2 = new EmailAddress();
    EmailAddress emailAddress3 = new EmailAddress();
    emailAddress0.Address = "user0@contoso.com";
    emailAddress1.Address = "user1@contoso.com";
    emailAddress2.Address = "user2@contoso.com";
    emailAddress3.Address = "user3@contoso.com";

    MailboxData[] mailboxes = new MailboxData[4];
    mailboxes[0] = new MailboxData();
    mailboxes[0].Email = emailAddress0;
    mailboxes[0].ExcludeConflicts = false;
    mailboxes[1] = new MailboxData();
    mailboxes[1].Email = emailAddress1;
    mailboxes[1].ExcludeConflicts = false;
    mailboxes[2] = new MailboxData();
    mailboxes[2].Email = emailAddress2;
    mailboxes[2].ExcludeConflicts = false;
    mailboxes[3] = new MailboxData();
    mailboxes[3].Email = emailAddress3;
    mailboxes[3].ExcludeConflicts = false;

    // Make the request.
    GetUserAvailabilityRequestType <span class="label">request</span> = new GetUserAvailabilityRequestType();

    // Set the time zone of the request.
<span class="label">request</span>.TimeZone = new SerializableTimeZone();
<span class="label">request</span>.TimeZone.Bias = 480;
<span class="label">request</span>.TimeZone.StandardTime = new SerializableTimeZoneTime();
<span class="label">request</span>.TimeZone.StandardTime.Bias = 0;
<span class="label">request</span>.TimeZone.StandardTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
<span class="label">request</span>.TimeZone.StandardTime.DayOrder = 1;
<span class="label">request</span>.TimeZone.StandardTime.Month = 11;
<span class="label">request</span>.TimeZone.StandardTime.Time = "02:00:00";
<span class="label">request</span>.TimeZone.DaylightTime = new SerializableTimeZoneTime();
<span class="label">request</span>.TimeZone.DaylightTime.Bias = -60;
<span class="label">request</span>.TimeZone.DaylightTime.DayOfWeek = DayOfWeekType.Sunday.ToString();
<span class="label">request</span>.TimeZone.DaylightTime.DayOrder = 2;
<span class="label">request</span>.TimeZone.DaylightTime.Month = 3;
<span class="label">request</span>.TimeZone.DaylightTime.Time = "02:00:00";

    // Add the mailboxes to the request.
<span class="label">request</span>.MailboxDataArray = mailboxes;

    // Add the free/busy view options to the request.
<span class="label">request</span>.FreeBusyViewOptions = fbViewOptions;

    // Add the suggested view options to the request.
<span class="label">request</span>.SuggestionsViewOptions = sugViewOptions;

    try
    {
        // Send the request and get the response.
        GetUserAvailabilityResponseType response = esb.GetUserAvailability(<span class="label">request</span>);

        // Access free/busy information.
        if (response.FreeBusyResponseArray.Length &lt; 1)
        {
            throw new Exception("No free/busy response data available.");
        }
        else
        {
            foreach (FreeBusyResponseType fbrt in response.FreeBusyResponseArray)
            {
                if (fbrt.ResponseMessage.ResponseClass == ResponseClassType.Error)
                {
                    Console.WriteLine(string.Format("Error: {0}", fbrt.ResponseMessage.MessageText));
                }
                else
                {
                    // TODO: Get the free/busy data and working hours.
                    FreeBusyView fbv = fbrt.FreeBusyView;
                }
            }
        }

        // Access suggested meeting times.
        SuggestionDayResult[] sdra = response.SuggestionsResponse.SuggestionDayResultArray;

        if (sdra.Length &lt; 1)
        {
            throw new Exception("No suggested meeting times available.");
        }
        else
        {
            foreach (SuggestionDayResult sdr in sdra)
            { 
                // TODO: Get the suggested meeting times for each day.
            }
        }
    }
    catch (Exception e)
    {
        // TODO: Error processing.
        Console.WriteLine(e.Message);
    }
}

注解

将邮箱添加到请求的顺序表示在响应中接收邮箱信息的顺序。

构造函数

GetUserAvailabilityRequestType()

构造 GetUserAvailabilityRequestType 函数初始化 类的 GetUserAvailabilityRequestType 实例。

属性

FreeBusyViewOptions

属性 FreeBusyViewOptions 获取或设置可用性查询的忙/闲视图选项。 除非未设置属性, SuggestionsViewOptions 否则此属性是可选的。 这是一个读/写属性。

MailboxDataArray

属性 MailboxDataArray 获取或设置要搜索可用性查询的邮箱列表。

SuggestionsViewOptions

属性 SuggestionsViewOptions 获取或设置可用性查询的会议建议信息的选项。 除非未设置属性, FreeBusyViewOptions 否则此属性是可选的。 这是一个读/写属性。

TimeZone

属性 TimeZone 获取或设置客户端的时区信息。 这包括标准时间和夏令时之间的转换。

适用于