首页 文章

无法获取非联系Lync用户的可用性状态

提问于
浏览
1

我们的解决方案通过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 回答

  • 0

    由于非Lync联系人不是通过Lync Server访问应用程序,或者您可能会说, They are not Using Lync ,此状态将为Lync客户端显示此类ID .

相关问题