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

Starting Lync conversation from C# WPF desktop app regardless of Lync client version installed

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

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

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

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

"You can use command-line parameters to quick-start Microsoft Lync"

我也在考虑 UCMA(服务器端)API,虽然我担心我又要担心服务器版本是什么 运行。

有更好的"version agnostic"方法吗?

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

我确实注意到可能有一个服务器端 API (UCMA),我可以在不同版本的 Lync/OCS/Skype for Business 中使用它,尽管有人提到这个 API 更 "advanced" 并且是 "to be avoided".

我读过的一些书:

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 Client SDK。这个SDK真正做的是远程控制"Lync Client"。如果不是 运行ning,启动 Lync 客户端只是 运行 "lync.exe"。 Lync 客户端安装将始终在路径中包含此 exe,因此只需 运行ning 它就可以正常工作。 (到目前为止对我有用)

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 t运行k 访问权限来测试外部呼叫或联合设置以访问外部网络 to/from 外部客户端或联合组织(如消费者 skype)。如果您需要接近高可用性,您的服务器需求就会飙升...