如何使用Lync SDK通过电子邮件确定是否存在有效的Lync用户?

时间:2011-11-02 14:19:03

标签: c# lync-2010 lync

鉴于电子邮件地址,我正在尝试确定它是否是有效用户的登录地址。

我已尝试过以下代码,但只有在用户之前已由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 Client GUI查询用户时才加载数据?
  2. 如何“获取”数据,以便在查询时可用?
  3. 有没有更好的方法来查询电子邮件是否属于有效的Lync用户?

1 个答案:

答案 0 :(得分:1)

我看到这个工作正常。也就是说:使用lyncClient.ContactManager.GetContactByUri()对我来说很好,即使被查询的地址不在客户的联系人列表中(并且没有被查询过)。

我正在做的事情之一也是订阅状态变化。我想知道这是不是为什么它对我有用:查找非加载联系人需要一段时间,因此可能是我的代码最初返回Unknown,然后在事件中更新。

还要检查一下:您确保您的电子邮件地址是SIP加前缀的吗? (即格式为sip:user@domain.com)。