1

我们的解决方案通过 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 和在线服务。

我已经为此苦苦挣扎了太久了,因为我认为应该像我所拥有的那样工作。任何想法或建议将不胜感激。

特洛伊

4

1 回答 1

0

由于非 Lync 联系人没有通过 Lync Server 访问应用程序,或者您可能会说,他们没有使用 Lync,因此此类 ID 的存在对于 Lync 客户端将是未知的。

于 2014-03-24T07:33:06.687 回答