GetUserAvailabilityRequestType Classe

Definição

O GetUserAvailabilityRequestType classe representa uma operação para obter as informações de disponibilidade para um usuário.

public ref class GetUserAvailabilityRequestType : ExchangeWebServices::BaseRequestType
public class GetUserAvailabilityRequestType : ExchangeWebServices.BaseRequestType
Public Class GetUserAvailabilityRequestType
Inherits BaseRequestType
Herança
GetUserAvailabilityRequestType

Exemplos

o exemplo de código a seguir mostra uma consulta de GetUserAvailability que inclui os seguintes elementos:

  1. Uma janela de tempo para a disponibilidade de dados que inclui hoje e amanhã.
  2. Uma solicitação para informações detalhadas e mescladas livre/ocupado sobre os eventos de calendário para cada caixa de correio. Este exemplo mostra uma solicitação para obter informações detalhadas. No entanto, as informações reais retornado podem variar com base nas direitos do chamador para exibir as informações de calendário para outras caixas de correio.
  3. uma definidas para o qual os dados de livre/ocupado mesclados são a ser retornada; neste caso, 30 minutos. Isso será ignorado se não forem solicitados dados de livre/ocupado mesclados.
  4. Uma definição de limite que afirma que qualquer sugerido horário onde estejam disponíveis a 75% dos participantes da reunião é considerada um horário de reunião BOM.
  5. Uma janela de reuniões sugerido que inclui hoje e amanhã.
  6. Uma definido o número máximo de horas de período de folga como horários de reunião sugerido por dia; neste caso, dois.
  7. Um número máximo de vezes que a reunião sugerido por dia; neste caso, 10.
  8. Um período de tempo para sugerido horários de 30 minutos de reuniões.
  9. Um mínimo de tempo de qualidade de Good da reunião.
  10. Quatro caixas de correio para consultar para ambos informações de disponibilidade e sugerido horários de reuniões.
  11. Um aplicativo cliente que tenha uma localidade no fuso horário hora oficial do Pacífico (PST) e que tiver o horário de verão.
Exemplo de

o código retorna as informações de livre/ocupado para cada caixa de correio para o ponto de que o chamador tem permissão para exibir os dados. Ele também retornará um conjunto de horários para as reuniões sugerido que são organizados por dia e indica a disponibilidade das contas da caixa de correio identificada.

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

Comentários

A ordem na qual as caixas de correio são adicionadas à solicitação representa a ordem na qual caixa de correio informações são recebidas na resposta.

Construtores

GetUserAvailabilityRequestType()

O GetUserAvailabilityRequestType construtor inicializa uma instância do GetUserAvailabilityRequestType classe.

Propriedades

FreeBusyViewOptions

O FreeBusyViewOptions propriedade obtém ou define as opções de exibição de informações de disponibilidade para uma consulta de disponibilidade. Essa propriedade é opcional, a menos que o SuggestionsViewOptions propriedade não estiver definida. Esta é uma propriedade de leitura/gravação.

MailboxDataArray

O MailboxDataArray propriedade obtém ou define a lista de caixas de correio para pesquisar por uma consulta de disponibilidade.

SuggestionsViewOptions

O SuggestionsViewOptions propriedade obtém ou define as opções para sugestão de informações para uma consulta de disponibilidade da reunião. Essa propriedade é opcional, a menos que o FreeBusyViewOptions propriedade não estiver definida. Esta é uma propriedade de leitura/gravação.

TimeZone

O TimeZone propriedade obtém ou define informações de fuso horário do cliente. Isso inclui a transição entre o período padrão e o horário de verão.

Aplica-se a