Communicator API

Diese Seite ist noch nicht fertig. Ich wollte ihnen aber die ein oder andere Information nicht vorenthalten.

Natürlich können Sie selbst auch die API, welcher mit der Installation des Communicator auf ihrem PC installiert wird, in eigenen Anwendungen nutzen. Schon in der Registrierung finden Sie die Verweise auf die entsprechenden COM-Objekte, die angesprochen werden können: 

Interessant sind hier die Einträge zum Communicator und die weniger naheliegenden Einträge zu "Name.nameCtrl". Gerade das letzte COM-Objekte kommt in Webseiten z.B. sehr gut zum Einsatz, spricht es doch den lokal installieren OCS-Client (oder einen anderen Instant Messenger Client) an, um, den Status anderer Personen anzuzeigen. Schauen wir uns ein paar Beispiele an -

Zugriff mit VBScript und COM

 

wscript.echo "Binding Communicator.UIAutomation"
set oc = createobject("Communicator.UIAutomation")

wscript.echo "Enumerate Contacts"
for each contact in oc.mycontacts
	wscript.echo "Anzeigename" & contact.Friendlyname
	wscript.echo "Anmeldename" & contact.signinname
next

wscript.echo "Start instant Message Session"
set im = oc.InstantMessage("Mario.Zaljec@netatwork.de")

im.sendtext("test")

 

Geht nicht ?

http://social.msdn.microsoft.com/Forums/en-US/communicatorsdk/thread/0d4a11ec-9a4d-4cb1-b292-f9831af16b3d

 

Zugriff mit Powershell 1.0

test

 

Windows PowerShell
Copyright (C) 2006 Microsoft Corporation. Alle Rechte vorbehalten.

PS C:\Users\fcarius> $oc = New-Object -com Communicator.UIAutomation
PS C:\Users\fcarius> $oc


Window               : System.__ComObject
ReceiveFileDirectory :
MyContacts           : {Frank Carius (test), xxxxx, xxxxxx...}
MySigninName         : frank.carius@netatworkxxxx.de
MyFriendlyName       : Carius, Frank
MyStatus             : 10
MyServiceName        :
MyServiceId          : {83D4679F-B6D7-11D2-BF36-00C04FB90A03}
Services             : {Kommunikationsdienst}
ContactsSortOrder    :
MyGroups             :


PS C:\Users\fcarius> $oc.MyContacts

FriendlyName       : Carius, Test
Status             : 1
SigninName         : test.carius@netatworkxxxx.de
ServiceName        : Kommunikationsdienst
Blocked            :
CanPage            :
IsSelf             : False
ServiceId          : {83D4679F-B6D7-11D2-BF36-00C04FB90A03}
IsTagged           :
PresenceProperties :

PS C:\Users\fcarius> $im = $oc.InstantMessage("Mario.Zaljec@netatwork.de")
Fenster zum chat öffnet sich !!!

PS C:\Users\fcarius> $im.SendText("halo")
Ausnahme beim Aufrufen von "SendText" mit 1 Argument(en): "Die Methode oder der Vorgang sind nicht implementiert."
Bei Zeile:1 Zeichen:13
+ $im.SendText( <<<< "halo")

PS C:\Users\fcarius> $im.close()
Ausnahme beim Aufrufen von "Close" mit 0 Argument(en): "Die Methode oder der Vorgang sind nicht implementiert."
Bei Zeile:1 Zeichen:10
+ $im.close( <<<< )

 

 

OCS Status in Webseiten

Wer schon mal Sharepoint oder andere Webseiten geöffnet hat, kann bei installiertem OCS-Client sehr einfach den Status der Mitarbeiter sehen. Dabei muss man unterscheiden, ob der Webserver den Status aufbereitet und einfach nur farblich in den ausgelieferten HTML-Daten hinterlegt oder ob der Internet Explorer auf dem Desktop mittels ActiveX den Status anzeigt. Die lokale Anzeige erfordert natürlich eine aktive funktionierenden OCS-Client-Installation. Allerdings erlaubt diese dann natürlich auch einfach weitere Aktionen über das Kontextmenü. Hier ein Beispiel einer Einbindung

<html>
<head>
<title>OCS Integrationstest</title>
<script type="text/javascript" language="JavaScript"> 
var nameCtrl = new ActiveXObject("Name.NameCtrl");
</script>
</head>

<body>
<h1>OCs Integrationstest</h1>
<span 
 onmouseover="nameCtrl.ShowOOUI('user@msxfaq.test',0,this.offsetLeft,this.offsetTop)"
 onmouseout="nameCtrl.HideOOUI()">Hover your mouse over this text to retrieve presence information.
</span>
</body>
</html>

 

 

Einbinden als direkt angezeichnetes Image

 

<script type="text/javascript"
src="/profiles/javascript/NameControl.js"></script>

 

Next, you need to have this code somewhere in your HTML file:

<img id="imgStatus ${email}_status"
src="/profiles/images/namecontrol_images/Unknown.gif"
onload="PresenceControl('user-email');"/>

 

<IMG id=g_d1b3e494_5731_4ee2_bf38_f97a17ede7ce82CommonManager_im,type=sip border=0 name=imnmark alt="" src="/_layouts/images/imnhdr.gif" width=12 onload="QueuePopulateIMNRC('úser@firma.tld', this)" height=12 ShowOfflinePawn="1">

 

 

Alternative habe ich natürlich auch mal versucht, einfach über folgende Zeilen ein OCS-Status-Feld zu addieren

<object classid="clsid:E18FEC31-2EA1-49A2-A7A6-902DC0D1FF05"
  id="msgr"
  name="msgr"
  type="application/x-oleobject"
  width="1" height="1"
  style="display: none;" events="true">
  OCS Control wurde nicht geladen
</object>

das ganze kann man auch einfach in Sharepoint Designer als "Web Komponente" addieren.

Allerdings habe ich bislang nicht heraus gefunden, wie direkt der Kontaktname zu übergeben ist

Weitere Links

Tags:API