C# 2016年Skype for Business没有客户端SDK

C# 2016年Skype for Business没有客户端SDK,c#,sdk,client,skype-for-business,C#,Sdk,Client,Skype For Business,我已更新到Skype for Business 2016(Office 2016),我正在开发的与Lync客户端集成的桌面应用程序已开始抛出异常 我猜SDK版本15.0.4481.100与Skype for Business版本16.0.42.66.1003不兼容,但我找不到比(2014-03-17)更新的SDK Skype for Business 2016的桌面客户端开发是否不像2013年那样受支持 例外情况: 更新 当我遍历音频设备时,会发生异常。使用嵌入式(UI抑制的)S4B客户端启动和

我已更新到Skype for Business 2016(Office 2016),我正在开发的与Lync客户端集成的桌面应用程序已开始抛出异常

我猜SDK版本15.0.4481.100与Skype for Business版本16.0.42.66.1003不兼容,但我找不到比(2014-03-17)更新的SDK

Skype for Business 2016的桌面客户端开发是否不像2013年那样受支持

例外情况: 更新
当我遍历音频设备时,会发生异常。使用嵌入式(UI抑制的)S4B客户端启动和接受调用是可行的,但是sideByside不能。我最初的问题的答案似乎是肯定的,但不是完全肯定的

Lync Client SDK 2013应支持Skype for Business 2016。目前尚未发布新的客户端SDK。

您可以使用ILyncClient“内部对象”(来自Microsoft.Office.Uc)来解决此问题

例如:

静态bool SetClientAudioDevice(LyncClient客户端,字符串名称)
{
var innerClient=(ILyncClient)client.InnerObject;
var deviceManager=innerClient.deviceManager;
Console.WriteLine(“当前音频设备:[{0}]”,client.DeviceManager.ActiveAudioDevice.Name);
Console.WriteLine(“Lync客户端音频设备列表:”);
var-ok=false;
foreach(deviceManager.AudioDevices.OfType()中的var设备)
{
Console.WriteLine(“AudioDevice:[{0}]、Active[{1}]、ID[{2}]、IsCertified[{3}]、Priority[{4}]、Type[{5}]”、device.Name、device.IsActive、device.ID、device.IsCertified、device.Priority、device.Type);
if(device.Name.IndexOf(Name,StringComparison.InvariantCultureIgnoreCase)>=0)
{
Console.WriteLine(“设置活动设备!”);
deviceManager.ActiveAudioDevice=设备;
ok=正确;
}
}
返回ok;
}

正如Ankit提到的,2013 SDK也与Skype for Business 2016配合使用

要绕过安装限制(“未找到Microsoft Lync 2013”),请使用Jon Gallant的建议:


也就是说,解压缩lyncsdk.exe并手动安装相应的MSI(x86或x64)。

好的,谢谢!您能否确认2013 SDK适用于您的S4B 2016?我已将Lync Client SDK成功用于S4B(从Lync 2013升级)客户端。如果S4B 2016运行良好,我可以检查并向您提供更新。我检查了S4B 2016与Lync Client SDK 2013的兼容性,看起来运行良好。但是,请检查是否正在使用自动化元素,因为S4B客户端UI已更改,这可能无法工作。仅安装Lync 2016时,无法安装Lync 2013 SDK。安装程序显示“未找到Microsoft Lync 2013”。对于未来的读者:您可以从Microsoft下载Lync 2013 sdk,使用7zip打开安装程序,提取所需版本(x86、x64)并安装它,而不会出现问题。我们遇到了同样的错误,因此也必须使用此方法。
Unable to cast COM object of type 'System.__ComObject' to interface type
'Microsoft.Office.Uc.IAudioDevice2'. This operation failed because the QueryInterface call
on the COM component for the interface with IID '{86B3E5FE-4635-4C1E-A725-C80B71D04984}'
failed due to the following error: No such interface supported
(Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
LyncClient.GetClient( sideBySide ).DeviceManager.AudioDevices
    static bool SetClientAudioDevice(LyncClient client, string name)
    {
        var innerClient = (ILyncClient)client.InnerObject;
        var deviceManager = innerClient.DeviceManager;

        Console.WriteLine("Current audio device: [{0}]", client.DeviceManager.ActiveAudioDevice.Name);
        Console.WriteLine("Lync Client Audio Devices List:");
        var ok = false;
        foreach (var device in deviceManager.AudioDevices.OfType<Microsoft.Office.Uc.AudioDevice>())
        {
            Console.WriteLine("    AudioDevice: [{0}], Active[{1}], ID[{2}], IsCertified[{3}], Priority[{4}], Type[{5}]", device.Name, device.IsActive, device.Id, device.IsCertified, device.Priority, device.Type);

            if (device.Name.IndexOf(name, StringComparison.InvariantCultureIgnoreCase) >= 0)
            {
                Console.WriteLine("        Setting active device!");
                deviceManager.ActiveAudioDevice = device;
                ok = true;
            }
        }
        return ok;
    }