我正在使用powershell通过使用以下代码获取某些用户的状态/可用性:
Import-Module "C:\...\Microsoft.Lync.Model.dll"
$Client = [Microsoft.Lync.Model.LyncClient]::GetClient()
$Contact = $Client.ContactManager.GetContactByUri( $args[0] )
Write-Host $Contact.GetContactInformation("Activity")
假设我将 testuser@testcompany.com 作为脚本参数传递。
如果我运行此脚本,它将返回“Presence unknown”。但是,如果我手动打开Skype客户端并搜索用户,我可以看到它们的可用性(假设此用户设置为“可用”)。
现在,如果我在Skype中搜索脚本后再次运行我的脚本,脚本将通过向控制台打印“可用”来返回正确的结果。脚本将不断返回正确的结果,直到我重新启动Skype。此时,它将再次返回“Presence unknown”,直到我在Skype中搜索用户。
如果用户在Skype的“我最近的对话”中,我只是查看“我最近的对话”选项卡而不是搜索它们,这足以让脚本开始返回正确的结果。
在从我的客户端手动加载到缓存(?)之前,它似乎无法查询其可用性。知道为什么会发生这种情况或者如何在不先手动搜索用户的情况下返回正确的结果吗?
答案 0 :(得分:1)
看起来您必须订阅用户状态信息。 Lync SDK MSDN文档概述了https://msdn.microsoft.com/en-us/library/office/jj937284.aspx处的解决方案。
处的类似解决方案答案 1 :(得分:0)
我发现的唯一解决方法是像这样与目标用户建立对话
$client = [Microsoft.Lync.Model.LyncClient]::GetClient()
$contact = $client.ContactManager.GetContactByUri($email)
$convo = $client.ConversationManager.AddConversation()
$convo.AddParticipant($contact) | Out-Null
Write-Host $contact.GetContactInformation("Activity")
$convo.End() | Out-Null
似乎没有导致任何IM窗口在用户侧弹出。
看到您用于订阅解决方案的Powershell代码会很有趣