团队客户端的COM对象-Microsoft.Office.Uc

团队客户端的COM对象-Microsoft.Office.Uc,com,microsoft-teams,skype-for-business,Com,Microsoft Teams,Skype For Business,我正在尝试访问Microsoft Team clientCOM对象。 因为Skype For Business与PowerShell中的Lync客户端对象是可能的 正好相反 此代码导致当前Lync/Skype用户存在 $teamsClient = [Microsoft.Office.Uc.IUCOfficeIntegration] $teamsClient.GetInterfaces() 下面是一篇小文章 我甚至无法在Get ChildItem HKLM中接收Com obj列表 仅在Get

我正在尝试访问Microsoft Team clientCOM对象
因为Skype For Business与PowerShell中的Lync客户端对象是可能的

正好相反

此代码导致当前Lync/Skype用户存在

$teamsClient = [Microsoft.Office.Uc.IUCOfficeIntegration]
$teamsClient.GetInterfaces()
下面是一篇小文章 我甚至无法在Get ChildItem HKLM中接收Com obj列表 仅在Get ChildItem HKCU中


我的目标是使用与Outlook相同的功能来读取MS团队中的用户状态。

团队根本不使用COM,也永远不会使用COM


我们计划在Microsoft Graph bit中支持状态API,但没有日期可共享。

团队仍在通过COM公开一些功能。它实现了IUCOfficeIntegration界面,因此Microsoft Outlook可以在Outlook中显示联系人的团队可用性状态

有关Office集成工作原理的更多信息,请参见此处

我只是简单描述一下我通过COM接收可用性信息所做的工作。 请注意,这是C代码。我希望这仍然有帮助

获取团队COM类的ClassID

安装Outlook和Teams后,团队将注册为能够向Outlook提供可用性信息的IM应用程序。这是通过编写几个注册表节点来完成的。ClassID可以在这里找到 计算机\HKEY\U本地\U机器\SOFTWARE\WOW6432Node\IM提供商\Team

获取可用性:

为此,我基本上颠倒了链接文章中显示如何实现Office集成客户端的所有步骤,因为我想使用Teams客户端。 请注意,需要安装Lync SDK(),因为其中定义了所有Office集成接口。(需要参考Microsoft.Office.Uc.dll)。也许这个图书馆可以

class Program
{

  static void Main()
  {
    var version = "15.0.0.0";
    var teams = (IUCOfficeIntegration) new TeamsOfficeIntegration();

    var client = (IClient) teams.GetInterface(version, OIInterface.oiInterfaceILyncClient);

    var contactManager = client.ContactManager;

    var uri = "name@company.com";
    var contact = contactManager.GetContactByUri(uri);
    var availibility =
        (ContactAvailability) contact.GetContactInformation(ContactInformationType.ucPresenceAvailability);
  }

  [ComImport, Guid("00425F68-FFC1-445F-8EDF-EF78B84BA1C7")]
  public class TeamsOfficeIntegration
  {
  }
}
我将尝试上传一个小项目到GitHub来演示


由于Powershell是基于.NET的,所以这也应该是可能的。或者可以编写一个小型的C#Interop库。

这样outlook 2013就可以直接从teams客户端接收状态信息。应该使用IM api作为lync客户端。有一些api可以从Microsoft Graph检索用户的状态。可能只是Outlook正在通过Microsoft Graph API检索此信息。您好,我的问题是在注册表中找不到IM提供程序。因此,我的应用程序无法正常运行。。。我的计算机上安装了MS团队和Outlook。你知道问题出在哪里吗?我刚刚检查过,即时通讯提供商位于HKEY_当前用户中,而不是HKEY_本地机器中。这会导致问题吗?上面链接的office integration文档如是说。它应该位于该节点中。HKEY\当前\用户\软件\即时通讯提供商\。然而,我并不期望球队的Guid会发生变化。因此,它应该只与给定的一个一起工作。嗯,当我在位置“(IUCOfficeIntegration)new TeamsoficeIntegration();”上运行调试程序时,我总是被告知COM对象未注册
class Program
{

  static void Main()
  {
    var version = "15.0.0.0";
    var teams = (IUCOfficeIntegration) new TeamsOfficeIntegration();

    var client = (IClient) teams.GetInterface(version, OIInterface.oiInterfaceILyncClient);

    var contactManager = client.ContactManager;

    var uri = "name@company.com";
    var contact = contactManager.GetContactByUri(uri);
    var availibility =
        (ContactAvailability) contact.GetContactInformation(ContactInformationType.ucPresenceAvailability);
  }

  [ComImport, Guid("00425F68-FFC1-445F-8EDF-EF78B84BA1C7")]
  public class TeamsOfficeIntegration
  {
  }
}