É possível ter scripts que são acionados sempre que uma mensagem instantânea é recebida no Microsoft Lync?

3

Acabei de atualizar para o Lync 2013 e estou pensando em usá-lo em vez do Pidgin + SIPE. Um dos muitos recursos interessantes do Pidgin é a integração do Growl ... e eu sentiria falta disso.

Não há plug-ins do Growl para o Lync e nenhum está em andamento, mas eu realmente não preciso disso ... Eu já descobri como emitir avisos do Growl a partir de um shell script, e tudo o que eu preciso é o gancho em Lync para disparar um arquivo bat (ou talvez Powershell). Existe alguma maneira de criar ou conjugar isso?

A documentação do Microsoft Lync SDK faz com que pareça que pode ser possível, mas soa como gobbledegook para mim. Alguém pode me ajudar a começar, ou pelo menos descartar scripts como uma possibilidade?

    
por John O 13.02.2013 / 19:54

2 respostas

3

A julgar por e isso , meu curso de ação seria escrever algum código que chama um executável externo e também passa argumentos (powershell.exe por exemplo), e amarrá-lo ao evento IM Received, se tal evento existir, estou baixando o sdk agora, então atualizarei com o que encontrar. Mas desta forma, você não está limitado ao que acontece quando uma mensagem instantânea é recebida.

    
por 13.02.2013 / 20:03
0

Um script Powershell pode ser conectado a eventos do Lync, se o SDK do Lync estiver instalado (em particular, uma dll chamada Microsoft.Lync.Model.Dll.

Você o importaria com uma declaração como esta:

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

Então você pegaria o objeto cliente assim:

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

Finalmente, você precisa se conectar aos eventos em que deseja atuar:

$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++
   }
}

Cada objeto de conversa (abrir janela / aba IM) tem pelo menos dois participantes (às vezes) a mais, o código acima verifica cada uma dessas conversas e cada participante, mas ignora o participante que é "você" (IsSelf). Este código dispara a função newInstantMessage toda vez que alguém envia uma mensagem para você.

Mais importante, você precisa de algo no final do script do powershell para impedir que ele seja encerrado, enquanto (1) {} é suficiente. Por fim, convém também ligar o evento ConversationAdded e dentro desse registro novos eventos InstantMessageReceived. Caso contrário, funcionará apenas para conversas existentes.

Para aqueles que não estão interessados nos porcos e porquês, pretendo disponibilizar meu script publicamente no futuro próximo. Verifique o site da Growl For Windows.

    
por 11.03.2013 / 16:49