2013-02-20 48 views
1

我們的解決方案將通過Lync傳入我們軟件的消息傳遞給用戶。如果用戶在Lync中不可用,那麼一旦用戶在Lync中再次變爲'可用',我們就會排隊傳遞消息。我已經爲所有聯繫人(112)創建了一個基於ContactInformationType.Availability的提供方,併爲聯繫人提供了一個事件處理程序.ContactInformationChanged事件在聯繫人的可用性發生更改時引發。無法獲得非接觸式Lync用戶的可用性狀態

我的訂閱看起來像這樣的代碼,

/// <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狀態總是'無'或(0),所以雖然用戶可能在線並在Lync中可用,但我可以'看''他們是。我在網上看到了一些說這應該起作用的地方,但我似乎無法得到它。此外,它似乎也沒有引發該類型用戶的contact.ContactInformationChanged事件。

我要指出,我通過辦公使用Lync SDK和在線服務365

我一直在努力與這個時間太長了,現在的東西,我認爲應該工作,因爲我有它。任何想法或建議將不勝感激。

特洛伊

+0

我的經驗是,contact.ContactInformationChanged事件最初可能會被觸發,但我從來沒有得到它,以便在聯繫人在Lync中更改其存在時進行可靠響應。我使用了contact.GetContactInformation(ContactInformationType.Availability)來輪詢我需要跟蹤每X秒的聯繫人, – EricRRichards 2015-05-27 14:20:55

回答

0

由於非的Lync聯繫人不訪問應用程序通過的Lync Server或者你可能會說,他們不使用Lync,存在OS這樣的ID將是未知的Lync客戶端。