Ist es möglich, Skripts zu verwenden, die ausgelöst werden, wenn in Microsoft Lync eine Sofortnachricht empfangen wird?

3

Ich habe gerade ein Upgrade auf Lync 2013 durchgeführt und erwäge, es anstelle von Pidgin + SIPE zu verwenden. Eine der vielen schönen Funktionen von Pidgin ist die Growl-Integration ... und das würde ich vermissen.

Es gibt keine Growl-Plugins für Lync und keine sind in Arbeit, aber ich brauche das nicht wirklich ... Ich habe bereits herausgefunden, wie man Growl-Notizen aus einem Shell-Skript herausgibt, und alles, was ich brauche, ist der Haken in Lync eine Fledermaus-Datei abfeuern (oder vielleicht Powershell). Gibt es eine Möglichkeit, dies zu schaffen?

Die Dokumentation zum Microsoft Lync SDK lässt es so aussehen könnte möglich sein, aber es klingt für mich wie verschlungen Kann mir jemand beim Einstieg helfen oder zumindest das Scripting als Möglichkeit ausschließen?

John O
quelle

Antworten:

3

Daran zu urteilen und diese Meine Vorgehensweise wäre, etwas Code zu schreiben, der eine externe ausführbare Datei aufruft und auch Argumente (z. B. powershell.exe) übergibt, und es an das Ereignis IM Received zu binden. Wenn ein solches Ereignis vorhanden ist, lade ich jetzt die SDK herunter so werde ich w / was ich finde, aktualisieren. Auf diese Weise sind Sie nicht darauf beschränkt, was passiert, wenn eine IM empfangen wird.

MDMoore313
quelle
1
Da Sie bereits Code für das Hok in das IM-Ereignis schreiben, können Sie das Shell-Skript umgehen und direkt in die Growl-API schreiben.
HairOfTheDog
1
HINWEIS: Diese SDK-Lösung funktioniert nur mit Lync für Windows. Es gibt kein SDK für Lync für Mac.
HairOfTheDog
0

Ein Powershell-Skript kann in Lync-Ereignisse eingebunden werden, wenn das Lync-SDK installiert ist (insbesondere eine DLL mit dem Namen Microsoft.Lync.Model.Dll).

Sie würden es mit einer Anweisung wie folgt importieren:

import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"

Dann erhalten Sie das Client-Objekt folgendermaßen:

$client = [Microsoft.Lync.Model.LyncClient]::GetClient()

Zum Schluss müssten Sie sich in die Ereignisse einklinken, bei denen Sie aktiv werden wollten:

$i = 0
# For each conversation
foreach ($con in $client.ConversationManager.Conversations) {
  # For each participant in the conversation
  $con.Participants | Where { !$_.IsSelf } | foreach {
    Register-ObjectEvent -InputObject $_.Modalities[1] -EventName "InstantMessageReceived" -SourceIdentifier "person $i" -action { newInstantMessage }
    $i++
   }
}

Jedes Konversationsobjekt (offenes Chat-Fenster / Tab) hat mindestens zwei (manchmal) weitere Teilnehmer. Der obige Code überprüft jede dieser Konversationen und jeden Teilnehmer, ignoriert jedoch den Teilnehmer, der "Sie" (IsSelf) ist. Dieser Code löst dann jedes Mal die newInstantMessage-Funktion aus, wenn Ihnen jemand eine Nachricht sendet.

Am wichtigsten ist jedoch, dass Sie etwas am Ende des Powershell-Skripts benötigen, damit es nicht beendet wird, während (1) {} ausreicht. Schließlich möchten Sie vielleicht auch das ConversationAdded-Ereignis einhaken und neue InstantMessageReceived-Ereignisse in diesem registrieren. Andernfalls funktioniert es nur für bestehende Gespräche.

Für diejenigen, die sich nicht für das Warum und Warum interessieren, beabsichtige ich, mein Skript in naher Zukunft öffentlich zugänglich zu machen. Überprüfen Sie die Growl For Windows-Website.

John O
quelle