Compartir a través de


GetUserAvailabilityRequestType Clase

Definición

La GetUserAvailabilityRequestType clase representa una operación para obtener la información de disponibilidad de un usuario.

public ref class GetUserAvailabilityRequestType : ExchangeWebServices::BaseRequestType
public class GetUserAvailabilityRequestType : ExchangeWebServices.BaseRequestType
Public Class GetUserAvailabilityRequestType
Inherits BaseRequestType
Herencia
GetUserAvailabilityRequestType

Ejemplos

En el ejemplo de código siguiente se muestra una consulta GetUserAvailability que incluye los siguientes elementos:

  1. Un período de tiempo para los datos de disponibilidad que incluye hoy y mañana.
  2. Solicitud de información detallada y combinada de disponibilidad sobre los eventos de calendario de cada buzón de correo. En este ejemplo se muestra una solicitud de información detallada. Sin embargo, la información real que se devuelve puede variar en función de los derechos del autor de la llamada para ver la información del calendario de otros buzones.
  3. Intervalo definido para el que se van a devolver los datos de disponibilidad combinados; en este caso, 30 minutos. Esto se omite si no se solicitan datos de disponibilidad combinados.
  4. Una definición de umbral que indica que cualquier hora de reunión sugerida en la que el 75 % de los asistentes sean gratuitos se considera una buena hora de reunión.
  5. Una ventana de horas de reunión sugeridas que incluye hoy y mañana.
  6. Un número máximo definido de horas no laborables como horas de reunión sugeridas al día; en este caso, dos.
  7. Un número máximo de horas de reunión sugeridas al día; en este caso, 10.
  8. Intervalo de tiempo para las horas de reunión sugeridas de 30 minutos.
  9. Un tiempo mínimo de calidad de reunión de Bueno.
  10. Cuatro buzones para consultar la información de disponibilidad y las horas de reunión sugeridas.
  11. Una aplicación cliente que tiene una configuración regional en la zona horaria de hora estándar del Pacífico (PST) y que observa el horario de verano.

En el ejemplo de código se devuelve la información de disponibilidad de cada buzón hasta el punto de que el autor de la llamada tiene permiso para ver esos datos. También devuelve un conjunto de horas de reunión sugeridas que se organizan por día e indica la disponibilidad de las cuentas de buzón identificadas.

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

Comentarios

El orden en que se agregan los buzones a la solicitud representa el orden en que se recibe la información del buzón en la respuesta.

Constructores

GetUserAvailabilityRequestType()

El GetUserAvailabilityRequestType constructor inicializa una instancia de la GetUserAvailabilityRequestType clase .

Propiedades

FreeBusyViewOptions

La FreeBusyViewOptions propiedad obtiene o establece las opciones de vista de disponibilidad para una consulta de disponibilidad. Esta propiedad es opcional a menos que SuggestionsViewOptions la propiedad no esté establecida. Se trata de una propiedad de lectura y escritura.

MailboxDataArray

La MailboxDataArray propiedad obtiene o establece la lista de buzones para buscar una consulta de disponibilidad.

SuggestionsViewOptions

La SuggestionsViewOptions propiedad obtiene o establece las opciones para la información de sugerencias de reunión para una consulta de disponibilidad. Esta propiedad es opcional a menos que FreeBusyViewOptions la propiedad no esté establecida. Se trata de una propiedad de lectura y escritura.

TimeZone

La TimeZone propiedad obtiene o establece la información de zona horaria del cliente. Esto incluye la transición entre la hora estándar y el horario de verano.

Se aplica a