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. |
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
- Office Communications Developer Center
http://msdn.microsoft.com/en-us/office/aa905773.aspx
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.
- Microsoft Office
Communications Server 2007 R2
Developer References
http://technet.microsoft.com/en-us/library/dd425166%28office.13%29.aspx
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
- Communications Server 2007 Server SDK Documentation
MSFT_SIPESUserSetting
http://msdn.microsoft.com/en-us/library/bb632099.aspx - Group And Contact Management using WMI
(ContactManagementontheServer.msi)
http://www.microsoft.com/downloads/details.aspx?FamilyId=5FAF0725-7139-401C-A848-086A529CC78E&displaylang=en
Beispielanwendungen für die zentrale Pflege von Kontakten bei Benutzern - Using PowerShell to Modify OCS 2007 R2 WMI Values
http://waveformation.com/2009/10/27/using-PowerShell-to-modify-ocs-2007-r2-wmi-values/ - OCS 2007 R2 WMI Reference
http://msdn.microsoft.com/en-us/library/dd146501(office.13).aspx - Office Communications Server and WMI
http://blogs.msdn.com/jcalev/archive/2008/01/03/office-communications-server-and-wmi.aspx - Where OCS Finds Data für WMI Classes
http://blogs.msdn.com/jcalev/archive/2008/01/04/where-ocs-finds-data-for-wmi-classes.aspx - OCS, WMI, and PowerShell
http://tfl09.blogspot.com/2009/02/ocs-wmi-and-PowerShell.html - Administratively Managing User Contact Lists - Namespaces and
Scripting Examples
http://blogs.technet.com/b/csps/archive/2010/11/15/r2manageUsercontactlists.aspx
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.
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
- Group And Contact Management using Communicator Automation -
Microsoft Office Communicator 2007 Automation API Sample
http://www.microsoft.com/downloads/details.aspx?familyid=C334685A-4C9D-416F-BCFB-BD79613EE34C&displaylang=en - Office Communicator 2007 Automation API Capabilities - Microsoft
Office Communicator 2007 Automation API Sample
http://www.microsoft.com/downloads/details.aspx?familyid=36E27ADD-D45E-4057-9CD6-7F62B792B0B6&displaylang=en - Microsoft Office Communicator 2007 SDK
http://www.microsoft.com/downloads/details.aspx?familyid=ED1CCE45-CC22-46E1-BD50-660FE6D2C98C&displaylang=en - Custom Alerting - Microsoft Office Communications Server 2007
API Sample
http://www.microsoft.com/downloads/details.aspx?familyid=9EFC784B-E443-4441-926C-5FD405D41BD9&displaylang=en - Windows Messenger Client Reference
http://msdn.microsoft.com/en-us/library/ms630961%28VS.85%29.aspx - Showing Presence in outlook from custom IM application
http://social.microsoft.com/Forums/en/ucintegrationwithoffice/thread/929d62a1-9ed4-46ef-b325-a9b165cb39b8
Beschreibt einen etwas unsauberen Weg, wie sie eine eigene IM-Applikation so einbinden, das Outlook glaubt, es würde sich um OCS handeln, indem es die COM-Klasse {8885370D-B33E-44B7-875D-28E403CF9270} - Office Communicator SDK Wrapper
http://ocsdkwrapper.codeplex.com/
Aufruf vieler OCS Communicator Funktionen über eine .NET-Klasse - Office Communicator 2007 Document: Microsoft Office Communicator
2007 Deployment Guide
http://www.microsoft.com/downloads/details.aspx?FamilyID=F1D1A947-6EFF-4AC4-8878-F0A77894AC99&displayLang=en
Nicht direkt mit Programmierung aber Gruppenrichtlinien und andere Einstellungen beeinflussen natürlich auch Anwendungen die auf dem ClientSDK aufsetzen. - WPF Custom Screen Saver Art
http://blogs.msdn.com/b/coding4fun/archive/2008/06/20/8626294.aspx
http://wpfscreensaverart.codeplex.com/
Beispiel für einen Bildschirmschoner - OCS Version davon abgeleitet
http://unified-communications-development.blogspot.com/2008/06/wpf-presence-screen-saver.html
Download http://eoffice.codeplex.com/releases/view/14798
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
- NameCtrl Control
http://msdn.microsoft.com/en-us/library/ms455335.aspx - Integrating Web Chat Functionality - Microsoft Unified Communications AJAX API Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=C8C3F762-7BE4-4541-9B18-82499DB61293&displaylang=en - SDK
http://www.microsoft.com/downloads/details.aspx?FamilyID=d5a36cc7-9b94-4082-ab55-22feffce6b80 - Presence in Web Applications - Microsoft Office
Communicator 2007 Automation API Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=32CA6DA5-42A2-4B96-B13C-644AD8256645&displaylang=en
OCS Server API
- Office Communications Server Application API
Overview
http://msdn.microsoft.com/en-us/library/dd146849%28office.13%29.aspx - SIP Message Routing and Filtering Tools
http://msdn.microsoft.com/en-us/library/dd146644%28office.13%29.aspx - About the SIP Managed Application API
http://msdn.microsoft.com/en-us/library/dd146560%28office.13%29.aspx - Workaround für Ring Back Issues in Office
Communications Server
http://blogs.technet.com/b/dougl/archive/2009/07/30/ring-back-workaround-for-ocs.aspx
Beispiel eines Front End Skripts um SIP-Messages zu verändern - Ethical Walls für Microsoft Office Communications
Server 2007 - Microsoft Office Communications Server
2007 API Sample
http://www.microsoft.com/downloads/en/details.aspx?familyid=070dbcab-472a-4ec1-aeac-9273eccd70c9&displaylang=en - 2224981 You cannot install Office Communications Server 2007 R2, Unified Communications Managed API 2.0 Core Redist or Office Communications Server 2007, Unified Communications Managed API v1.0 Redist
- Microsoft Lync 2010 SDK
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=d98f0bf7-c82c-47f5-9f73-be3edbf30438 - Microsoft Unified Communications Managed API 3.0 SDK
http://www.microsoft.com/downloads/en/details.aspx?familyid=B30306E4-7DC1-44D2-9A68-9B4A6FC5C2DF&displaylang=en - MSPL Microsoft SIP Processing Language
http://msdn.microsoft.com/en-us/library/gg425301.aspx - Route International calls to an alternative Workflow
(MSPL)
http://www.lynclog.com/2011/03/route-international-calls-to.html - Distinctive ring tone with OCS (MSPL)
http://www.lynclog.com/2010/02/distinctive-ring-tone-with-ocs.html
Weitere Links
- OCS Felder
- UMRobot
-
Office Communications Developer Portal
http://msdn.microsoft.com/en-us/office/aa905773.aspx -
Microsoft Office Communications Server 2007 Server SDK
http://msdn.microsoft.com/en-us/library/bb632176.aspx -
Microsoft Office Communicator Automation API Microsoft Office
Communicator Automation API
http://msdn.microsoft.com/en-us/library/bb758719.aspx -
Unified Communications Sample Downloads
http://msdn.microsoft.com/en-us/office/cc718982.aspx - http://blogs.msdn.com/jcalev/archive/tags/ucma/default.aspx
- OCS 2007 ResKit
http://www.microsoft.com/downloads/details.aspx?FamilyID=b9bf4f71-fb0b-4de9-962f-c56b70a8aecd&displaylang=en - Introduction to the UCMA API - Part 1 - API overview
http://blogs.msdn.com/jcalev/archive/2007/05/07/introduction-to-the-ucma-api-part-1-api-overview.aspx - UCMA 2.0 - Part 1.1 - High level architecture and design of UCMA
http://blogs.msdn.com/jcalev/archive/2008/11/05/ucma-2-0-part-1-1-high-level-architecture-and-design-of-ucma.aspx
Enthält Sourcecode für PowerShell Commandlet zum Senden einer Message per OCS - Communicator Presence Controls in WPF
http://msgoodies.blogspot.com/2008/08/communicator-presence-controls-in-wpf.html - Presence in Web Applications - Microsoft Office Communicator
2007 Automation API Sample
http://www.microsoft.com/downloads/details.aspx?FamilyId=32CA6DA5-42A2-4B96-B13C-644AD8256645&displaylang=en - The first steps of programming Office Communicator
http://msgoodies.blogspot.com/2008/06/first-steps-of-programming-office.html - Unified Communications API Roadmap
http://communicationsserverteam.com/archive/2007/11/26/29.aspx - http://www.ocspedia.com/Misc/OcsConfigureTelUri_wsf.htm
- Blogs zu OCS Entwicklung
Chris Mayo -> http://blogs.msdn.com/cmayo/
Michael Dunn -> http://blogs.msdn.com/midunn
George Durzi -> http://blogs.claritycon.com/blogs/george_durzi/default.aspx - How to Enable, Disable and Maintain OCS 2007 (Office Communications Server) User
Attributes using VBScript
http://www.activedir.org/Articles/tabid/54/articleType/ArticleView/articleId/54/Default.aspx - Distinctive ring tone with OCS
http://blog.drago.ws/?p=130
OCs Frontend Skripte - Finally the RCC enabling script für OCS2007 Users
http://mscomms.wordpress.com/2008/10/05/finally-the-rcc-enabling-script-for-ocs2007-Users/ - MSN Messenger
http://www.codeproject.com/KB/cs/MsnMessengerLogListener.aspx - DotMSN
http://www.xihsolutions.net/dotmsn/
Library zur Entwicklung von Programmen gegen MSN müssenger - WPF Custom Screen Saver Art
http://blogs.msdn.com/b/coding4fun/archive/2008/06/20/8626294.aspx
http://wpfscreensaverart.codeplex.com/ - UCMA Blogserie
Part 1.1 - High level architecture and design of UCMA
Part 1.2 - Asynchronous pattern and threading model
Part 1.3 PowerShell and UCMA
Part 1.4 Signing in and signing out
Part 1.5 Setting up a session
Part 1.6 Introduction to SDP - UCMA 2.0 - Part 1.4 Signing in and signing out
http://blogs.msdn.com/b/jcalev/archive/2008/11/10/ucma-2-0-part-1-4-signing-in-and-signing-out.aspx