我们的解决方案通过Lync将进入我们软件的消息转发给用户。如果用户在Lync中不可用,那么一旦用户在Lync中再次变为“可用”,我们就会对邮件进行排队。我已经为所有联系人(112)创建了一个基于ContactInformationType.Availability的子服务,并为contact.ContactInformationChanged事件连接了一个事件处理程序,该事件在联系人的可用性发生变化时被引发。
我订阅的代码看起来像这样,
/// <summary>
/// Subscribes to contacts.
/// </summary>
/// <param name="group">List of Lync contacts.</param>
void SubscribeToContacts(List<Contact> contacts)
{
Console.WriteLine("Total Contacts: " + contacts.Count.ToString());
foreach (var contact in contacts)
contact.ContactInformationChanged += new EventHandler<ContactInformationChangedEventArgs>(Contact_ContactInformationChanged);
contactSubscription = contactManager.CreateSubscription();
//Choose the types of presence changes to listen for
var contactInformationTypes = new List<ContactInformationType>() { ContactInformationType.Availability };
contactSubscription.Subscribe(ContactSubscriptionRefreshRate.High, contactInformationTypes);
//contactSubscription.AddContacts(contacts);
foreach (var item in contacts)
{
Console.WriteLine(item.Uri);
contactSubscription.AddContact(item);
Console.WriteLine(item.GetContactInformation(ContactInformationType.Availability).ToString());
}
}
我遇到的问题是,如果用户不是我的列表中的联系人或从未成为搜索的一部分,那么该用户的presense状态始终为“None”或(0),因此尽管用户可能在线并在Lync中可用我可以“看到”他们是。我在网上看到过一些地方说这应该有用,但我似乎也无法得到它。此外,似乎也没有引发该类型用户的contact.ContactInformationChanged事件。
我应该提一下,我正在通过Office 365使用Lync SDK和在线服务。
我一直在努力解决这个问题,因为我觉得应该按照我的要求行事。任何想法或建议将不胜感激。
特洛伊
答案 0 :(得分:0)
由于非Lync联系人不是通过Lync Server访问应用程序,或者您可能会说,他们不使用Lync ,因此Lync客户端的Presence操作系统将为“未知”。