UCware Exchange Webserver Schnittstelle (EWS)

Wird der UCware Server über die Exchange Webserver Schnittstelle an einen Microsoft Exchange Server angebunden, so kann der Status eines Benutzers anhand der Termine des selben Benutzers automatisch verändert werden. Beginnt ein Termin gemäß Exchange Kalender so wird der Benutzer auf „DND“ gesetzt. Mit Ende des Termins gemäß Exchange Kalender wird der Status „DND“ bei dem Benutzer wieder entfernt. Ist ein Termin bei einem Benutzer eingetrag, so erscheint im UCC-Client bei dem Benutzer ein i. Wird die Maus über dem i positioniert, erscheinen zusätzliche Informationen. Beispiele:

  • Abwesend von X bis Y
  • Außer Haus von X bis Y
  • In einem Termin von X bis Y
  • Frei bis X Uhr

Vorraussetzungen

Es wird ein Windows-Rechner mit installiertem .NET Framework 4.5 benötigt. Der Rechner muß auf die EWS-Schnittstelle des Exchange-Servers sowie die API-URL der ucware-Installation zugreifen können. Zur vollständigen Konfiguration werden benötigt:

  • die URL der ucware-API
  • die URL der EWS-API
  • ein Benutzeraccount auf dem Exchangeserver
  • Benutzergruppen-ID auf dem UCware Server für die Benutzer deren Status gesetzt werden soll

Installation

Die Installation erfolgt über einen Windows-Installer. Das Installationsprogramm kopiert das Programm mit Konfigurationsdatei und erstellt einen Windowsservice. Der Service ist zunächst gestoppt und muss nach dem Bearbeiten der config.xml manuell gestartet werden. Nach einem Reboot startet der Dienst automatisch.

  • Installationsprogramm UCCalendarSync.exe ausführen.
  • Im Abschlußbildschirm „Konfigurationsdatei bearbeiten“ auswählen
  • config.xml bearbeiten (siehe unten)
  • UCCalendarSync Dienst starten (oder Rechner rebooten)

Konfiguration

Die Konfiguration erfolgt über die XML-Datei config.xml. Die einzelnen Elemente sind mit XML-Kommentaren innerhalb der Datei detailliert dokumentiert. Zur minimalen Konfiguration müssen die ucware und EWS Blöcke angepasst werden. Die url-Elemente müssen auf die jeweiligen URLs geändert werden. Für ucware wird weiterhin die groupId der Benutzer benötigt deren Status geändert werden sollen, und im EWS-Block user und password für den Login auf dem Exchange-Server

UCware Benutzergruppen-ID

Alle Benutzer deren Status geändert werden soll müssen in einer gemeinsamen Gruppe sein. In der ID dieser Gruppe findet sich in der Detail-Anzeige im UCware Admin-Interface unter Administration/Gruppen. Es können mehrere Gruppen definiert werden, für die unterschiedliche Aktionen und Texte verwendet werden.

EWS Benutzer

Der EWS-Benutzer kann ein beliebiger Nutzeraccount auf dem Exchange-Server sein, der das „impersonation“-Recht besitzt. Ohne dieses Zugriffsrecht funktioniert das Auslesen der Abwesenheitsdauer aus der Meldung des Abwesenheitsassistenten nicht. Alle anderen Funktionen sind aber nicht eingeschränkt. Um dem Benutzer administrator dieses Recht für alle Nutzer des Servers zu geben muss in der Exchange Management Shell folgender Befehl eingegeben werden: New-ManagementRoleAssignment -name:impersonationAssignmentUcware -Role:ApplicationImpersonation -User:administrator

Der hinter -name: angegebene Name für die Rolle kann frei gewählt werden.

Weitere Informationen und wie die Berechtigung auf einzelne Benutzergruppen eingeschränkt werden kann finden sich in der Microsoft-Dokumentation: https://msdn.microsoft.com/de-de/library/office/dn722376(v=exchg.150).aspx

Dokumentation der Elemente der ''config.xml''

''<ucware>'' Einstellungen zur Ucware

url: Die URL der ucware-API maxAgeUserlist: Anzahl Sekunden für die die Email-Adressen der UCware-User zwischengespeichert werden. Dies ist die Mindestzeit zwischen dem erneuten Abfragen aller Benutzer beim UCware Server, kein zwingendes Update-Intervall

''<EWS>'' Einstellungen zum Exchange-Server

url: Die URL der EWS-API des Exchange-Servers

updateInterval: Zeit in Sekunden zwischen zwei Abfragen an den Exchange-Server.

user: Benutzername im Format user@domain.com

password: Passwort

domain: _(optional)_ Name der Active Directory Domäne, falls zum Exchange-Login benötigt

leadtime: _(optional)_ Vorlaufzeit für Termine. Der Telefonstatus wird leadtime Sekunden bevor der Termin anfängt gesetzt. Die Zeit im Statustext bleibt aber die tatsächliche Zeit des Termins.

ignoreCertificate: Falls das Zertifikat des Exchange-Servers nicht akzeptiert wird, kann die Zertifikatsprüfung über diese Option abgeschaltet werden.

Einstellungen für Statusmeldungen

Die OutOfOffice und Messages Elemente beinhalten Einstellungen für die Texte der Statusmeldungen. Die Texte können Zeilenumbrüche enthalten, die als &#10; kodiert werden müssen. Innerhalb der Meldungstexte können folgende Platzhalter verwendet werden

$start$ Anfangszeitpunkt der Abwesenheit, falls vorhanden
$end$ Endzeitpunkt der Abwesenheit, falls vorhanden
$person$ Name des Vertreters, falls SubstituteRegExp einen Namen in der Abwesenheitsmeldung findet

Weiterhin sind für die Aktions-Elemente folgende Aktionen möglich:

LOGOUT Telefon des Benutzers anmelden
DND Telefon des Benutzers auf DND schalten
FREE Telefon des Benutzers auf Verfügbar schalten
NONE Keine Aktion, vorherigen Status beibehalten

''<OutOfOffice>''

Einstellungen für Abwesenheitsmeldungen

Substitute: Enthält den Statustext wenn eine Abwesenheitsnachricht mit Datum vorhanden ist.

SubstituteNoDate: Enthält den Statustext wenn eine Abwesenheitsnachricht ohne Datum vorhanden ist.

SubstituteRegExp: Ein regulärer Ausdruck um den Namen des Vertreters aus der Abwesenheitsnachricht zu extrahieren. Muss eine Gruppe enthalten, der Inhalt der Gruppe wird ist der Text der für den Platzhalter $person$ eingetragen wird.

Zu beachten: Die Abwesenheitsnachricht vom Exchange-Server ist ein HTML-Text. Sonderzeichen müssen hier mit HTML-Escapes geschrieben werden (&lt; statt <)

maxAge: Anzahl Sekunden für die Abwesenheitsstatus und -meldung zwischengespeichert werden. Dies ist die Mindestzeit zwischen dem erneuten Abfragen des Abwesenheitsstatus aller Nutzer am Exchange-Server, kein zwingendes Update-Intervall. Action:

Aktion die durchgeführt wird wenn ein Benutzer eine aktive Abwesenheitsnachricht hat

DateTimeFormat: Formatzeichenfolge mit dem das Datum der $start$ und $end$ Platzhalter im Abwesenheitsstatus formatiert wird. Erlaubte Formatbezeichner und deren Bedeutungen finden sich in der Microsoft-Dokumentation: <https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date-and-time-format-strings>

''<Message>'' Einstellungen für Statustexte

NoAppointment: Dieses Element enthält die Statusmeldung wenn ein Benutzer jetzt keinen aktiven Termin hat, an diesem Tag aber noch ein Termin ansteht. In diesem Fall enthält der Platzhalter $start$ den Start-Zeitpunkt des nächsten Termins.

DateTimeFormat: Formatzeichenfolge mit dem das Datum der $start$ und $end$ Platzhalter in Statustexten von Terminen formatiert wird.

DateTimeFormatToday: Formatzeichenfolge mit dem das Datum der $start$ und $end$ Platzhalter in Statustexten von Terminen formatiert wird, bei denen der Termin am heutigen Tag liegt.

''<FreeBusyStatus>'' Aufzählung

Enhält ein Element für jeden der möglichen Anzeige-Typen eines nTermins.

OOF: Termintyp _„Out Of Office“_ (_„Abwesend“_)

Busy: Termintyp _„Busy“_ (_„Beschäftigt“_)

WorkingElsewhere: Termintyp _„Working Elsewhere“_ (_„An anderem Ort tätig“_„)

Jedes dieser Element kann folgende Unterelemente enthalten:

<Message>: Die Nachricht die für einen Termin dieses Typs angezeigt wird

<Action>: Die Aktion die zu einem Termin dieses Typs ausgeführt wird (LOGOUT/DND/FREE, s.o.)

<Priority>: Die Priorität des Termins. Finden mehrere Termine gleichzeitig statt, wird nur der Termin mit der höheren Priorität angezeigt.

''<GroupDefinition>'' UCware Gruppendefintionen

Für jede UCware-Gruppe, deren Status gesetzt werden sollen, muß ein <GroupDefinition> mit dem Attribut Id der jeweiligen Gruppe existieren. Innerhalb der Gruppendefinition können erneut <OutOfOffice> und <Message> Elemente stehen, die das Verhalten für diese Gruppe definieren. Für nicht aufgeführte Elemente werden die in den globalen OutOfOffice und Message-Elementen definierten Werte verwendet.