我们的解决方案通过Lync将进入我们软件的消息转发给用户 . 如果用户在Lync中不可用,那么一旦用户在Lync中再次变为“可用”,我们就会对邮件进行排队 . 我已经基于ContactInformationType.Availability为所有联系人创建了一个子服务(112),并为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和在线服务 .
我一直在努力解决这个问题,因为我觉得应该按照我的方式工作 . 任何想法或建议将不胜感激 .
特洛伊
1 回答
由于非Lync联系人不是通过Lync Server访问应用程序,或者您可能会说, They are not Using Lync ,此状态将为Lync客户端显示此类ID .