无论安装的 Lync 客户端版本如何,都从 C# WPF 桌面应用程序启动 Lync 对话

Posted

技术标签:

【中文标题】无论安装的 Lync 客户端版本如何,都从 C# WPF 桌面应用程序启动 Lync 对话【英文标题】:Starting Lync conversation from C# WPF desktop app regardless of Lync client version installed 【发布时间】:2016-07-04 09:02:33 【问题描述】:

我是 Lync 集成和开发的新手。

我正在尝试编写一项功能,以允许现有桌面 WPF 业务线应用程序与运行该应用程序的本地 Intranet 上的另一个用户启动 Lync 对话。

我面临的困难是应用程序不会预先知道用户 PC 上安装了哪个版本的 Lync 客户端。该应用程序部署在各种组织中,因此无法对客户端或服务器端版本做出假设。

在此阶段,应用程序将尝试使用快捷方式 SIP 启动它可以在 PC 上找到的任何版本的 Lync 可执行文件,如下所示: https://technet.microsoft.com/en-us/library/gg398376(v=ocs.14).aspx

“您可以使用命令行参数快速启动 Microsoft Lync”

我也在考虑 UCMA(服务器端)API,尽管我担心我将不得不再次担心正在运行的服务器版本。

有没有更好的“与版本无关”的方法?

客户端SDK的每个版本似乎都与以前的版本不兼容。这意味着我需要首先检测安装的 Lync 版本;然后使用适当的 SDK。这也意味着分发多个 Lync SDK 副本;并且还可能意味着需要在后续版本的 Lync 发布时创建应用程序的新版本。

我确实注意到可能有一个服务器端 API (UCMA),我可以在不同版本的 Lync/OCS/Skype for Business 中使用它,尽管有人提到这个 API 更“先进”并且是“应该避免”。

我读过的一些书:

what are difference between "Lync Server 2010 SDK" / "UCMA 3.0 SDK" / and UCC API?

http://blog.thoughtstuff.co.uk/2014/07/lync-development-picking-the-right-api/

Which Lync SDK? Send IMs from managed code

任何人都可以分享关于这个问题的任何想法,我错过了什么吗?

理想情况下,我想要某种抽象层,我可以在其中调用一个方法来开始对话,而不用担心 PC 上安装了什么客户端或服务器上安装了什么版本。我意识到这可能是一个不切实际的期望!

我尝试过在 Lync 标签上搜索 SO;如果这是一个重复的问题,对不起!

【问题讨论】:

现在我决定以 Lync 2010 客户端 SDK 为目标,但仍然希望有任何意见 听起来您正在尝试将 LOB 应用程序的用户与支持或外部用户联系起来。一般建议是考虑 UCMA,因为它可以在 Lync 2010、2013 等中使用,您可以考虑将其用作 LOB 用户和支持用户之间的中间人,但这需要在服务器端安装 UCMA 应用程序. 感谢 @ShelbyZ - 它位于 Active Directory 林中排列的一组组织内的用户之间 - 多个域和多个版本的 Lync 安装在不同的位置 我想你可以从几个方面来看待它。如果所有用户/域/等之间存在联合,那么您可以找到一台服务器并部署 UCMA 应用程序,因为它将像 Lync/Skype for Business 用户一样工作,并且能够与参与联合的任何人交谈(只需要 1 个部署)。如果用户/域/等之间没有或有限的联合,那么您将受到部署 N 次的摆布(其中 N 是接触所有用户所需的最小数量)。 在无/受限联合方案中,是否仍然可以在给定多个 UCMA 服务器端部署的情况下跨域传播用户之间的对话? 【参考方案1】:

听起来您想使用 Lync Client SDK。这个 SDK 真正做的是远程控制“Lync 客户端”。如果 Lync 客户端未运行,则要启动它,只需运行“lync.exe”即可。 Lync 客户端安装将始终在路径中包含此 exe,因此只需运行它就可以正常工作。 (到目前为止对我有用)

Lync 2010 相当旧。我会使用Lync 2013 Client SDK。我使用该版本,因为它适用于 2013 客户端到最新的 Skype For Business 2016 客户端。

我会下载/安装客户端 SDK 并查看示例。您应该找到您想要的大多数事情的示例(开始音频对话、开始 IM 对话等)。您可以在客户端中手动执行的几乎所有操作都可以通过客户端 SDK 进行远程控制。

如果您想在版本之上添加一个抽象层,您必须自己做,因为 SDK 本身不支持它。虽然我不会打扰,只是支持 Lync 2013 及更高版本。

如果您要进行抽象层,则需要对所有 Lync 服务器设置进行测试。祝你好运……我们在这里有 Lync 2103 服务器和 Skype for Business 设置(它们可以共存),这是一个巨大的设置。基本设置可以是大约 6-7 台服务器,它会连接到您的 AD。因此,运行不同的版本也需要多个 AD。您可能需要 PSTN / sip 中继访问来测试外部呼叫或联合设置,以便外部网络访问/来自外部客户端或联合组织(如消费者 Skype)。如果您需要接近高可用性,您的服务器需求就会飙升...

【讨论】:

谢谢谢恩。 2010 年的决定是对客户的限制,而不是由我决定。如果在接下来的几天内没有人回答,我会将其标记为答案,因为到目前为止,我通过使用客户端 SDK 有效地遵循了您的建议。该应用程序正在运行,但仅在 Lync 2010 上运行。我希望有一种方法可以轻松地对版本进行抽象。从概念上讲,在所有版本中创建 IM 对话应该是“相同的”。改变的只是“如何”的“管道”。

以上是关于无论安装的 Lync 客户端版本如何,都从 C# WPF 桌面应用程序启动 Lync 对话的主要内容,如果未能解决你的问题,请参考以下文章

Lync 客户端 SDK PSTN 呼叫

如何将选项卡添加到 lync 2010 客户端

如何在 C# 中以编程方式获取 Lync 会议 URL?

Lync 是不是支持 AES-256 进行媒体加密?

如果网站在服务器上并且 Lync 在本地用户环境中,我如何让 Lync 客户端正常工作?

Dlookup 无论条件如何,都从列表中返回第一个字段