如何读取本地 MS Teams 状态
How can I read local MS Teams status
我正在尝试实施 硬件忙灯 来显示我的 Microsoft Teams 状态,这样我的家人就不会在我开会时进入我办公室的房间。我希望实现类似于:
- https://www.eliostruyf.com/diy-building-busy-light-show-microsoft-teams-presence
- https://blog.jongallant.com/2014/12/beakn-v0-1-diy-lync-status-light/(较早的作品 - 类似的想法)。
此设置的唯一问题是我无法获得 MS Teams 状态。
最好的方法是使用 MS Graph Presence API,但我的问题是这是一个公司帐户,我没有(我也没有办法)和主要订阅中的应用程序授予所需范围:Presence.Read.
所以我尝试了不同的想法,但 none 最终奏效了:
- 检查本地 运行 个进程
- 检查 MS Teams 是否公开任何本地 API
- 检查是否有可用的 CLI
这似乎是一个简单的想法,我的意思是,我现在在输入此消息时会看到状态,我也可以做一个获取任务栏屏幕截图并从图标中提取状态的应用程序,但是这真的是我唯一的选择吗?
这些帖子正在做什么(当然是第一个,我没有检查第二个)是调用 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 开发者账户,然后使用那个租户。重要的是 - 应用程序 没有 在同一个租户中。如果不是,它只是一个简单的多租户应用程序,就像任何第 3 方 Azure AD 支持的应用程序一样。
我想我发现了一些你感兴趣的东西。
转到
C:\Users\user\AppData\Roaming\Microsoft\Teams
您会找到一个名为 logs.txt
的文件
在此文件中,您可以查看当前状态是否发生了变化
(current state: Available -> DoNotDisturb)
我会用 php 或 VB(取决于你的技能)编写一个脚本,每分钟读取那个 logs.txt 文件并检查最后的“当前状态”行.
我正在尝试实施 硬件忙灯 来显示我的 Microsoft Teams 状态,这样我的家人就不会在我开会时进入我办公室的房间。我希望实现类似于:
- https://www.eliostruyf.com/diy-building-busy-light-show-microsoft-teams-presence
- https://blog.jongallant.com/2014/12/beakn-v0-1-diy-lync-status-light/(较早的作品 - 类似的想法)。
此设置的唯一问题是我无法获得 MS Teams 状态。
最好的方法是使用 MS Graph Presence API,但我的问题是这是一个公司帐户,我没有(我也没有办法)和主要订阅中的应用程序授予所需范围:Presence.Read.
所以我尝试了不同的想法,但 none 最终奏效了:
- 检查本地 运行 个进程
- 检查 MS Teams 是否公开任何本地 API
- 检查是否有可用的 CLI
这似乎是一个简单的想法,我的意思是,我现在在输入此消息时会看到状态,我也可以做一个获取任务栏屏幕截图并从图标中提取状态的应用程序,但是这真的是我唯一的选择吗?
这些帖子正在做什么(当然是第一个,我没有检查第二个)是调用 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 开发者账户,然后使用那个租户。重要的是 - 应用程序 没有 在同一个租户中。如果不是,它只是一个简单的多租户应用程序,就像任何第 3 方 Azure AD 支持的应用程序一样。
我想我发现了一些你感兴趣的东西。
转到
C:\Users\user\AppData\Roaming\Microsoft\Teams
您会找到一个名为 logs.txt
的文件在此文件中,您可以查看当前状态是否发生了变化
(current state: Available -> DoNotDisturb)
我会用 php 或 VB(取决于你的技能)编写一个脚本,每分钟读取那个 logs.txt 文件并检查最后的“当前状态”行.