Freigeben über


GetUserAvailabilityRequestType Klasse

Definition

Die GetUserAvailabilityRequestType -Klasse stellt einen Vorgang zum Abrufen der Verfügbarkeitsinformationen für einen Benutzer dar.

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

Beispiele

Das folgende Codebeispiel zeigt eine GetUserAvailability-Abfrage, die die folgenden Elemente enthält:

  1. Ein Zeitfenster für Frei/Gebucht-Daten, das heute und morgen umfasst.
  2. Eine Anforderung für detaillierte und zusammengeführte Frei/Gebucht-Informationen zu den Kalenderereignissen für jedes Postfach. Dieses Beispiel zeigt eine Anforderung für detaillierte Informationen. Die tatsächlich zurückgegebenen Informationen können jedoch je nach den Rechten des Aufrufers zum Anzeigen der Kalenderinformationen für andere Postfächer variieren.
  3. Ein definiertes Intervall, für das die zusammengeführten Frei/Gebucht-Daten zurückgegeben werden sollen; in diesem Fall 30 Minuten. Dies wird ignoriert, wenn zusammengeführte Frei/Gebucht-Daten nicht angefordert werden.
  4. Eine Schwellenwertdefinition, die angibt, dass jede vorgeschlagene Besprechungszeit, bei der 75 % der Teilnehmer kostenlos sind, als gute Besprechungszeit betrachtet wird.
  5. Ein Fenster mit vorgeschlagenen Besprechungszeiten, das heute und morgen umfasst.
  6. Eine definierte maximale Anzahl von arbeitsfreien Stunden als vorgeschlagene Besprechungszeiten pro Tag; in diesem Fall zwei.
  7. Eine maximale Anzahl vorgeschlagener Besprechungszeiten pro Tag; in diesem Fall 10.
  8. Eine Zeitspanne für vorgeschlagene Besprechungszeiten von 30 Minuten.
  9. Eine mindeste Besprechungsqualitätszeit von "Gut".
  10. Vier Postfächer, die sowohl Frei/Gebucht-Informationen als auch vorgeschlagene Besprechungszeiten abgefragt werden sollen.
  11. Eine Clientanwendung, die über ein Gebietsschema in der Pst-Zeitzone (Pacific Standard Time) verfügt und die Sommerzeit überwacht.

Das Codebeispiel gibt die Frei/Gebucht-Informationen für jedes Postfach zurück, sodass der Aufrufer über die Berechtigung zum Anzeigen dieser Daten verfügt. Es gibt auch eine Reihe vorgeschlagener Besprechungszeiten zurück, die nach Tag organisiert sind, und gibt die Verfügbarkeit der identifizierten Postfachkonten an.

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

Hinweise

Die Reihenfolge, in der Postfächer der Anforderung hinzugefügt werden, stellt die Reihenfolge dar, in der Postfachinformationen in der Antwort empfangen werden.

Konstruktoren

GetUserAvailabilityRequestType()

Der GetUserAvailabilityRequestType Konstruktor initialisiert eine Instanz der GetUserAvailabilityRequestType -Klasse.

Eigenschaften

FreeBusyViewOptions

Die FreeBusyViewOptions -Eigenschaft ruft die Frei/Gebucht-Ansichtsoptionen für eine Verfügbarkeitsabfrage ab oder legt diese fest. Diese Eigenschaft ist optional, es sei denn, die SuggestionsViewOptions Eigenschaft ist nicht festgelegt. Dies ist eine Lese-/Schreibeigenschaft.

MailboxDataArray

Die MailboxDataArray -Eigenschaft ruft die Liste der Postfächer ab, die nach einer Verfügbarkeitsabfrage gesucht werden sollen, oder legt diese fest.

SuggestionsViewOptions

Die SuggestionsViewOptions -Eigenschaft ruft die Optionen für Besprechungsvorschlagsinformationen für eine Verfügbarkeitsabfrage ab oder legt diese fest. Diese Eigenschaft ist optional, es sei denn, die FreeBusyViewOptions Eigenschaft ist nicht festgelegt. Dies ist eine Lese-/Schreibeigenschaft.

TimeZone

Die TimeZone -Eigenschaft ruft die Zeitzoneninformationen des Clients ab oder legt sie fest. Dies schließt den Übergang zwischen Standardzeit und Sommerzeit ein.

Gilt für: