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

Posted

技术标签:

【中文标题】如何使用 Lync SDK 通过电子邮件确定是不是存在有效的 Lync 用户?【英文标题】:How to determine if there is a valid Lync user by email using Lync SDK?如何使用 Lync SDK 通过电子邮件确定是否存在有效的 Lync 用户? 【发布时间】:2011-11-02 14:19:02 【问题描述】:

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

我试过下面的代码,但只有在用户之前被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;

问题:

    为什么只有通过 Lync 客户端 GUI 查询用户时才加载数据? 如何“获取”数据,以便在查询时可用? 是否有更好的方法来查询电子邮件是否属于有效的 Lync 用户?

【问题讨论】:

到目前为止这个问题有答案吗? @Coder323,谢谢你的提问,还没有,希望有人注意到这个,虽然优先级很低,但它仍然困扰着我。 【参考方案1】:

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

不过,我正在做的其中一件事是订阅状态更改。我想知道这是否是它对我有用的原因:查找未加载的联系人需要一段时间,所以可能是我的代码最初返回未知,然后在事件中更新。

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

【讨论】:

谢谢汤姆,我已经有一段时间没有发布这个问题了,您是第一个提供任何反馈的人。我总是使用 SIP 地址格式,是的。如何订阅状态更改?我需要尝试一下。 订阅联系人的ContactInformationChanged 事件。但是,这会针对各种事情提出,因此对于存在,请在 EventArgs 中检查 ContactInformationType == Activity。然后,您可以使用 GetContactInformation 查询联系人以检索状态。 感谢@Tom,还没有解决,但现在我知道我会尝试一下,您的解决方案听起来完全符合我的需要。

以上是关于如何使用 Lync SDK 通过电子邮件确定是不是存在有效的 Lync 用户?的主要内容,如果未能解决你的问题,请参考以下文章

Lync 客户端 SDK PSTN 呼叫

从 C# Asp.net 向 Lync 发送消息

Lync 客户端 SDK 控件的 UI 是不是有任何更改?

Lync 2013 客户端 SDK 是不是与 Skype for Business 兼容?

如何访问 UCMA 3.0 SDK 中的 Lync 2010 白板功能?

通过客户端 SDK 使 Lync MeetNow 对话保持活跃