我们的解决方案通过 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());
}
}
我遇到的问题是,如果用户不是我列表中的联系人或从未参与过搜索,那么该用户的存在状态始终为“无”或(0),因此尽管用户可能在线并且在 Lync 中可用,我可以“看到”它们。我在网上看到一些地方说这应该可以,但我似乎也无法理解。此外,似乎也没有引发该类型用户的 contact.ContactInformationChanged 事件。
我应该提到我正在通过 Office 365 使用 Lync SDK 和在线服务。
我已经为此苦苦挣扎了太久了,因为我认为应该像我所拥有的那样工作。任何想法或建议将不胜感激。
特洛伊