2011-11-02 27 views
3

給定一個電子郵件地址,我試圖確定它是否是一個有效的用戶的登錄地址。如何使用Lync SDK通過電子郵件確定是否存在有效的Lync用戶?

我試過下面的代碼,但它只適用於用戶之前由用戶查詢過用戶,否則用戶被標識爲未知。

using Microsoft.Lync.Model; 
using Microsoft.Lync.Model.Extensibility; 

private bool IsLyncUser(string eMail, out Microsoft.Lync.Model.Contact imContact) 
{ 
    var lyncClient = LyncClient.GetClient(); 
    imContact = lyncClient.ContactManager.GetContactByUri(eMail); 

    if (null != imContact) 
    { 
     try 
     { 
      var sourceType = (ContactSourceTypes)imContact.Settings[ContactSetting.Source]; 
      return (ContactSourceTypes)0 != (ContactSourceTypes.ExchangeService | ContactSourceTypes.GlobalAddressList | sourceType); 
     } 
     catch 
     { 
      imContact = null; 
     } 
    } 
    return false; 
} 

問題:

  1. 爲什麼當用戶通過Lync客戶端GUI查詢的數據只裝?
  2. 如何「獲取」數據,以便在查詢時可用?
  3. 有沒有更好的方法來查詢電子郵件是否屬於有效的Lync用戶?
+0

這個問題到現在爲止的任何答案? – Coder323

+0

@ Coder323,感謝您的詢問,現在還沒有,希望有人注意到這一點,雖然優先級低,但它仍然讓我感到不安。 – Lockszmith

回答

1

我見過這個工作正常。也就是說:即使被查詢的地址不在客戶端的聯繫人列表中(並且未被查詢),使用lyncClient.ContactManager.GetContactByUri()也可以正常工作。

我正在做的事情之一,也是訂閱存在變化。我想知道這是爲什麼它對我有用:查找未加載的聯繫人需要一段時間,所以可能是我的代碼最初會返回「未知」,然後在事件中進行更新。

只是爲了檢查:你確保你的電子郵件地址是SIP前綴? (即格式爲sip:[email protected])。

+0

謝謝Tom,自從我發佈這個問題已經有一段時間了,你是第一個提供任何反饋的人。 我總是使用SIP地址格式,是的。 如何訂閱存在更改?我需要嘗試一下。 – Lockszmith

+0

訂閱聯繫人的ContactInformationChanged事件。儘管這對於各種各樣的事情都會產生影響,所以對於狀態,請檢查ContactInformationType == Activity的EventArgs。然後,您可以使用GetContactInformation查詢聯繫人以檢索該狀態。 –

+0

感謝@Tom,仍然沒有得到它,但現在我知道我會嘗試它,你的解決方案聽起來完全像我所需要的。 – Lockszmith

相關問題