我刚刚升级到 Lync 2013,正在考虑使用它来代替 Pidgin+SIPE。Pidgin 的众多优秀功能之一是 Growl 集成……我会怀念它的。
Lync 没有 Growl 插件,而且也没有正在开发中,但我真的不需要它……我已经发现了如何从 shell 脚本发出 Growl 通知,我所需要的只是连接到 Lync 以启动 bat 文件(或者可能是 Powershell)。有什么方法可以实现或促成这一点吗?
Microsoft Lync SDK 文档让它看起来像可能是可能的,但对我来说这听起来很乱。有人能帮我入门吗,或者至少排除一下脚本的可能性?
答案1
答案2
如果安装了 Lync SDK(特别是名为 Microsoft.Lync.Model.Dll 的 dll),Powershell 脚本可以挂接到 Lync 事件中。
您可以使用如下语句来导入它:
import-module "C:\Program Files (x86)\Microsoft Lync\SDK\Assemblies\Desktop\Microsoft.Lync.Model.Dll"
然后你会得到这样的客户端对象:
$client = [Microsoft.Lync.Model.LyncClient]::GetClient()
最后,你需要连接到你想要采取行动的事件:
$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++
}
}
每个对话对象(打开 IM 窗口/选项卡)至少有两个参与者(有时更多),上述代码检查每个对话及其中的每个参与者,但忽略“您”这个参与者(IsSelf)。然后,每次有人向您发送消息时,此代码都会触发 newInstantMessage 函数。
最重要的是,您需要在 powershell 脚本末尾添加一些内容来阻止其退出,while(1) {} 就足够了。最后,您可能还想挂接 ConversationAdded 事件并在其中注册新的 InstantMessageReceived 事件。否则它仅适用于现有对话。
对于那些不感兴趣的人,我打算在不久的将来公开我的脚本。请查看 Growl For Windows 网站。