【问题标题】:How can I read local MS Teams status如何读取本地 MS Teams 状态
【发布时间】:2021-12-01 17:52:59
【问题描述】:

我正在尝试实施 硬件忙灯 来显示我的 Microsoft Teams 状态,以便我的家人在我开会时不会进入我有办公室的房间。我希望实现类似于:

此设置的唯一问题是我无法获得 MS Teams 状态。

最好的方法是使用MS Graph Presence API,但我的问题是这是一个公司帐户,我没有(而且我不可能拥有)并且主订阅中的应用程序已授予所需范围:Presence.Read

所以我尝试了不同的想法,但最终都没有奏效:

  • 检查本地正在运行的进程
  • 检查 MS Teams 是否公开任何本地 API
  • 检查是否有可用的 CLI

这似乎是一个简单的想法,我的意思是,当我输入此消息时,我现在可以看到状态,我也可以做一个应用程序来获取任务栏的屏幕截图并从图标中提取状态,但是 这真的是我唯一的选择吗?

【问题讨论】:

    标签: api .net-core azure-active-directory microsoft-teams msgraph


    【解决方案1】:

    我想我发现了一些对你来说很有趣的东西。

    前往

    C:\Users\user\AppData\Roaming\Microsoft\Teams 
    

    您会找到一个名为 logs.txt

    的文件

    在这个文件中你可以看到你当前的状态是否改变了

    (current state: Available -> DoNotDisturb)
    

    我会用 php 或 VB(取决于你的技能)编写一个脚本,像每分钟一样读取该 logs.txt 文件并检查最后的“当前状态”行。

    【讨论】:

    • 难以置信,如此简单的解决方案!谢谢,我会走这条路,即使不能保证这个文件在未来版本的 MS Teams 中仍然存在。
    【解决方案2】:

    这些帖子正在做什么(当然是第一个,我没有检查第二个)正在调用 Microsoft Graph,它有一个“存在”端点来获取用户的状态。实际上甚至还有一个特定的“/me”端点,以获得您自己的个人偏好(需要较少的访问权限)。在此处查看更多信息:https://docs.microsoft.com/en-us/graph/api/presence-get?view=graph-rest-1.0&tabs=http

    如您所提到的,要使其正常工作,您确实需要注册 Azure AD 应用程序。然而,重要的是,这将只需要“委托”权限​​(即,仅来自单个用户的权限,即您,仅访问该单个用户的数据,即您)。因此,您可以使用“委托”而不是“应用程序”权限,这意味着它不需要租户的管理员同意。

    它确实需要和 Azure 添加应用程序,但冒着说明显而易见的风险。虽然您没有租户管理员权限,但您需要查看您是否拥有 Azure 权限,只是为了创建一个应用程序(作为您组织中的开发人员,您可能仍然拥有此权限)。如果您甚至没有这个,您可以注册一个 M365 开发人员帐户,并使用该租户。重要的是 - 应用程序必须在同一个租户中。如果不是,它只是一个简单的多租户应用程序,就像任何第三方 Azure AD 支持的应用程序一样。

    【讨论】:

    • 好吧,正如我在帖子中已经提到的那样,这要求我的应用程序在 Azure AD 中注册,并且为 MSGraph 授予 Presence.Read 范围。这是不可能的,因为这是一个公司帐户,我没有该 Azure AD 实例的管理员权限来同意它。还是我错过了什么?
    • 啊,公平点,我没有好好阅读以充分发现这一点。我现在已经扩展了答案 - 如果这涵盖了您需要的内容,请告诉我。
    • 感谢您的更新,但很遗憾我无法在主订阅中创建应用程序。作为开发人员,我使用另一个订阅,我的公司用户是访客。
    • 我在上一段中讨论过 - 如果应用程序注册在另一个租户(在这种情况下是您的开发租户)中,那完全没问题。这基本上是任何第 3 方 M365 应用程序的工作方式 - 供应商在他们自己的租户中注册应用程序,但最终用户在他们的租户中同意。本质上,您只需要来自任何租户的 Azure App Id。在实践中,这在许多情况下都很好,除非您的主要管理员已关闭您同意任何应用程序的能力(更多锁定的环境会这样做),但在这种情况下,即使应用程序在您自己的租户中,你会有麻烦的。
    • 我已经尝试过了,但我失败了“AADSTS700016:在目录 'yy' 中找不到标识符为 'xx' 的应用程序。如果应用程序的管理员尚未安装该应用程序,则可能会发生这种情况租户或租户中的任何用户同意”。可能是因为在“支持的帐户类型 -> 谁可以使用此应用程序或访问此 API?”在我注册的应用程序的身份验证下,我选择了“仅限此组织目录中的帐户”而不是“任何组织目录中的帐户”?
    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 2019-10-24
    • 2015-03-27
    • 1970-01-01
    • 2021-03-22
    • 2020-02-17
    相关资源
    最近更新 更多