OCS API

Es ist nun nicht so, dass OCS nur für die direkte Kommunikation zwischen Menschen über Audio, Video, Telefon oder Instant Messages ist. Natürlich können auch Skripte und Prozesse an OCS "teilnehmen" und z.B. Meldungen senden oder Anfragen annehmen. Diese Seite sagt ihnen., was man über welche API erreichen kann

Umfangreiche Vortragssammlung
http://www.msteched.com/Speakers/Albert-Kooiman

Microsoft Lync 2010 SDK Build 7577.124
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d98f0bf7-c82c-47f5-9f73-be3edbf30438&displaylang=en

Was kann man programmieren ?

OCS bietet eine ganze Menge von Dingen, die man vielleicht automatisieren möchte. Nicht alle Bereiche sind sinnvoll zu automatisieren aber andere bieten ein großes Potential zum effektiven Einsatz einer Automatisierung:

Was Wo Wie

OCS Systemkonfiguration

Die Information über die OCS-Server, Mediation Server und deren Einstellungen (TCPIP-Ports, Zertifikate etc.) stehen je nach Installation in der Forrest Root Domain oder der Konfigurationspartition. Auch wenn es denkbar ist, dort per LDAP Änderungen vorzunehmen, ist es bequemer und vor allem sicherer, per WMI die Daten zu pflegen, sofern Sie überhaupt per Skript hier Änderungen durchführen wollen. Die meisten Aktionen können per GUI durchgeführt werden und für die Anbindung von Exchange 2007 an OCS gibt es ja bestehende Skripte.

WMI

OCS Benutzerkonfiguration

Die Aktivierung, Deaktivierung und Konfiguration von Benutzern kann per LDAP im Active Directory erfolgen, Aber auch hier ist es wohl sicherer über WMI zu gehen.

AD/WMI

Kontakte/Buddy-Listen

Jeder OCs Anwender pflegt seine eigene Buddy Listen. Diese Information ist in der SQL-Datenbank gespeichert. Mit entsprechenden Berechtigungen kann man auch als Entwickler diese Einträge zentral pflegen, z.B.: um bestimmte Kontakte bei allen Personen zu addieren oder Gruppen vor zu belegen.

WMI, Client

Benutzerstatus

Normalerweise pflegt ein Anwender seinen Status selbständig bzw. der Communicator erkennt anhand des Outlook Kalenders, Bildschirmschoner oder fehlender Tastatureingaben, dass der Benutzer abwesend oder belegt ist.
Durch eine Anbindung an die Telefonanlage kann man auch den Status "On Phone" natürlich zentral steuern lassen. OCS kann aber auch um weitere Statusmeldungen erweitert werden (z.B. Krank, ausgebucht etc.). Genauso kann es sinnvoll sein, den Status der Anwender in anderen Fällen zu ändern oder auch einfach nur auszulesen.
Auslesen lässt sich der Status

OCS/SIP, Client

Mitteilungen und Verbindungen

Will man von einem Prozess aus direkt an die Anwender eine Instant Message senden oder z.B. selbst einen Agent schreiben, der von den Anwendern "angeschrieben" werden kann und entsprechend reagiert, dann tut man am besten daran, dies über den OCS Client bzw. die dort enthaltenen APIs zu tun. Notfalls kann man natürlich auch auf dem Server selbst einen OCS-Client installieren.

OCS/SIP, Client

OCS Filter

Über die ServerAPI können Sie Filter schreiben, die direkt auf dem OCS-Server in die SIP-Kommunikation involviert sind.

SIP Managed API

Zentrale Anlaufstelle ist sicher das Office Communications Developer Center

Wobei man hier genau hinschauen muss. Per Default sieht man erst mal die Server APIs. Die Client APIs sind etwas hinter einem Reiter versteckt, welcher leder an den rechten Rand gewändert ist und durch die blasse Farbwahl auch kaum als solcher zu erkennen ist.

WMI und OCS

Die normale Schnittstelle zur Verwaltung der OCS Benutzer ist WMI auf dem OCS Server. Zwar kann man theoretisch auch per LDAP direkt die Active Directory Benutzer verwalten oder ebenfalls die SQL-Datenbank ansprechen, aber hiervon sollten Sie Abstand nehmen. Über WMI steht ein umfangreiches Objektmodell mit Validierung der Einträge und geordnetem Zugriff zur Verfügung.

arrOCSServer = Array("srv01") für Each strComputer In arrComputers
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM MSFT_SIPESUserSetting","WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly) für Each objItem In colItems
        WScript.Echo objItem.PrimaryURI
    Next
Next

LDAP und OCS

Viele Einstellungen bezüglich der Benutzer liegen direkt im Active Directory und können per LDAP bearbeitet werden. Die Felder erkennt man fast immer daran, dass Sie mit msRTCSIP beginnen.

OCS im ADSIEDIT

Ich habe selbst schon per VBScript und PowerShell gezielt solche Felder geändert. Aber der offizielle Weg, den auch diverse Tools aus dem OCS ResKit gehen, ist natürlich die WMI-Schnittstelle, die die Daten vorher überprüft. Damit werden Fehlkonfigurationen verhindert.

Insofern würde ich diesen Weg primäre für die Suche und den Export mit CSVDE als Zugangsweg nutzen.

OCS über Client APIs

Aber auch der Communicator Client selbst bietet APIs an, über die man als Entwickler eigene Erweiterungen erstellen und einbinden kann. Dabei ist es wohl möglich, über die API direkt versteckt die OCS-Funktion zu nutzen als auch mit eigenen Erweiterungen den OCS-Client selbst um neue Menüs und Fenster zu erweitern.

Microsoft Unified Communications Client API SDK
http://www.microsoft.com/downloads/details.aspx?familyid=82C468DA-3294-4CA9-BBCC-D455CFD06AF2&displaylang=en

Hier ein paar Beispiele

OCS im Web

Wer OCS auf Webseiten integrieren will, muss sich entscheiden, ob er die Integration auf dem Client oder dem Server durchführen möchte:

  • Client Integration
    Dabei wird in die vom Webserver ausgelieferte HTML-Seite einfach etwas Code addiert und schon bindet der Browser den Status der Personen als kleine Kugeln ein. Voraussetzung ist hier natürlich ein installierter und angemeldet OCS-Client auf dem Desktop.
  • Web Server Integration
    Soll der Status z.B. auf einer öffentlichen Seite für jedermann erreichbar sein (also auch für Anwender ohne OCS-Client oder externe Anwender) dann muss natürlich auf dem Webserver Code ausgeführt werden, welcher den Status der Personen so in die HTML-Antwort einbettet, dass der Browser dann das passende Bild anzeigt. Interessant wird das natürlich dann, wenn über die Webseite auch ein Chat ermöglicht werden soll.

Die folgenden Links sollten ihnen hierzu genug weiterführendes Material geben

OCS Server API

Weitere Links