3

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

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

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

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

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

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

4

2 回答 2

3

我想我为你找到了一些有趣的东西。

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

您会找到一个名为logs.txt的文件

在此文件中,您可以查看当前状态是否已更改

(current state: Available -> DoNotDisturb)

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

于 2021-10-22T10:43:10.493 回答
0

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

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

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

于 2021-10-13T09:25:33.273 回答