AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1567622
Accepted
mythofechelon
mythofechelon
Asked: 2020-07-11 07:07:10 +0800 CST2020-07-11 07:07:10 +0800 CST 2020-07-11 07:07:10 +0800 CST

自动设置团队状态

  • 772

我希望我的 Microsoft Teams 状态在我锁定我的电脑时自动设置为立即返回,并在我解锁我的电脑时自动设置为可用。这可能吗?

我有:

  1. 查看是否有任何相关的 CLI 开关/选项可以通过谷歌搜索、运行和运行 Strings on 插入teams.exe -?,teams.exe /?但似乎没有teams.exe。

  2. 使用 Process Monitor / procmon 在状态更改但没有发现任何用处时跟踪活动。我发现的唯一值得注意的是文件中的以下条目,%appData%\Microsoft\Teams\logs.txt但它并没有让我找到任何有用的东西:

    Fri Jul 03 2020 13:23:17 GMT+0100 (British Summer Time) <3292> -- event -- panelaction: Action.Outcome: setpresence, DataBag.PresenceState: beRightBack, Action.Gesture: click, Action.Scenario: setPresenceFromTrayMenu, Action.ScenarioType: other, ppChannel: Production::CC, distSrc: PROPLUS_O365BusinessRetail, ppInstallMode: UPDATE, autoStartPolicy: undefined, vdiMode: 0, eventpdclevel: 2, 
    
  3. 考虑使用 AutoHotkey 鼠标宏,但我并没有真正追求这个,因为我希望有一个更好的解决方案,我不确定它是否适用于锁定和解锁,这有点棘手,因为状态只能访问首先将鼠标悬停在系统托盘或应用内上下文菜单项上。

microsoft-teams
  • 3 3 个回答
  • 2546 Views

3 个回答

  • Voted
  1. Best Answer
    mythofechelon
    2020-09-16T02:38:03+08:002020-09-16T02:38:03+08:00

    在锁定和解锁我的 Windows 会话时,Teams 需要一两秒钟来更新其图标,并且在那段时间里,我注意到它会自动将其状态设置为离开和返回,这对我来说已经足够好了。

    在此处输入图像描述

    如果其他人设法想出一种以编程方式控制 Teams 状态的方法,那么我会将已接受的答案更改为他们的答案。

    • 0
  2. blacktide
    2021-12-22T11:38:58+08:002021-12-22T11:38:58+08:00

    注意:如果您能够向您的组织注册 Azure 连接的应用程序(并接收客户端 ID/客户端密码),请参阅Đrakenus 的答案,这会更合适。

    我创造了一些对我有用的东西,但它是一个 hack,所以请提前原谅我。危急时刻需要采取危急措施……

    我使用 Javajava.awt.Robot手动单击要在 Teams 中更改的状态。

    这是一个例子:

    import java.awt.*;
    import java.awt.event.InputEvent;
    import java.io.IOException;
    
    public class StatusChanger {
    
        private static final int waitBetweenSteps = 300;
        private static Robot robot;
    
        public static void main(String[] args) throws IOException, InterruptedException, AWTException {
            robot = new Robot();
    
            // Get the status from the first arg to the program, options are
            // away, available, busy, or offline.
            final String status = args[0];
    
            // This will bring the Teams window into focus on macOS, there is likely
            // a similar solution for Windows.
            runCommand(new String[]{"osascript", "-e", "tell application \"System Events\" to tell process \"Microsoft Teams\" to set frontmost to true"});
    
            // Move mouse to the profile icon in the top left of the Teams window 
            // and click the icon.
            mouseMove(3760, 50);
            click();
    
            // Move to the status in the modal that appears and click the status.
            mouseMove(3570, 140);
            click();
    
            // Move the mouse to the correct status position based on the argument.
            switch (status) {
                case "away":
                    mouseMove(3600, 315);
                    break;
                case "busy":
                    mouseMove(3600, 220);
                    break;
                case "available":
                    mouseMove(3600, 180);
                    break;
                case "offline":
                    mouseMove(3600, 360);
                    break;
            }
            // Click the new status.
            click();
            System.out.println("Status was set to " + status);
        }
    
        private static void runCommand(String[] command) throws IOException, InterruptedException {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(command);
            process.waitFor();
            Thread.sleep(waitBetweenSteps);
        }
    
        private static void click() throws InterruptedException {
            robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
            Thread.sleep(waitBetweenSteps);
        }
    
        private static void mouseMove(int x, int y) throws InterruptedException {
            robot.mouseMove(x, y);
            Thread.sleep(waitBetweenSteps);
        }
    }
    

    然后我将它构建到一个 jar 中(您也可以使用 编译该类javac)并运行如下命令:

    # Set status to Away
    java -jar TeamsStatusChanger.jar away
    
    # Set status to Busy
    java -jar TeamsStatusChanger.jar busy
    
    # Set status to Available
    java -jar TeamsStatusChanger.jar away
    
    # Set status to Offline
    java -jar TeamsStatusChanger.jar offline
    

    然后,您可以使用 cron 在特定时间范围内自动设置您的状态:

    # set Teams status to offline at 5pm
    0 17 * * * java -jar /path/to/TeamsStatusChanger.jar offline
    

    有几个注意事项:

    • 它要求您保持 Teams 运行,但肯定可以改进以检查 Teams 是否正在运行并启动它/如果不是则等待。
    • 它要求您将 Teams 窗口保持在相同的位置(在我的情况下,屏幕的右上角靠着显示器的边缘)。
    • 此实用程序的坐标是针对我的显示器尺寸(3840x1600)进行硬编码的。您需要mouseMove使用每个“点击”区域的正确坐标来更新调用(见下一点)。
    • 在 macOS 上,您可以使用截屏工具在您自己的显示器上找到每个“点击”区域的坐标,方法是按 Cmd+Shift+4 并将鼠标悬停在您要点击的区域上。屏幕坐标将显示在十字准线旁边。
    • 如果您使用多台显示器,我不确定这会做什么,它可能需要一些额外的调整或仅在您的主显示器上工作。
    • 0
  3. Đrakenus
    2021-12-22T12:03:14+08:002021-12-22T12:03:14+08:00

    有一种以编程方式设置 MS Teams 状态的方法,请参阅 https://docs.microsoft.com/en-us/graph/api/presence-setpresence?view=graph-rest-beta&tabs=http

    您还可以将它与 Microsoft Teams Powershell 模块结合使用,有一个Connect-Teamscmdlet,请参见此处 - https://docs.microsoft.com/en-us/powershell/module/teams/connect-microsoftteams?view=teams-ps

    但是,这可能需要额外的设置——您可能需要通过 Azure 应用程序访问 Microsoft Graph API(请参阅https://docs.microsoft.com/en-us/powershell/module/teams/connect-microsoftteams?view=teams -ps#parameters ),关于-AccessTokens参数的部分。

    • 0

相关问题

  • 有什么方法可以隐藏/删除 MS Teams 频道中的消息?

  • MS Teams:Office 365 连接器重定向到 localhost 而不是 Jenkins URL

  • 团队错误“登录提示重复”AADSTS9000411

  • Microsoft Teams - 无法将用户添加到联系人 [错误:我们无法将好友添加到组]

  • OneDrive 同步文件夹的环境变量

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve