Giter VIP home page Giter VIP logo

hand_raiser's Introduction

Hand Raiser robot for Zoom meetings

When we have large meetings, sometimes the remote employees are unable to participate in the Q&A section at the end, even though they're able to view the main meeting over Zoom. This repo provides a way for a robot to join the Zoom meeting and raise a physical hand in the (meatspace) meeting room when someone on Zoom has a question.

Installation

  1. Clone this repo locally.
  2. Run pip install -r requirements.txt to install the dependencies.
  3. Edit secrets.py so it contains the robot's secret and URL. You can get these from anyone who worked on this project.
  4. Step 3 probably made the repo dirty. Run git update-index --skip-worktree secrets.py to make the repo clean again.

Running

  1. When you want Hand Raiser Bot to join a meeting, run ./main.py '<url-of-zoom-meeting>' to start it. The URL likely contains a question mark, so we recommend enclosing the entire URL in single quotes so your terminal doesn't try pattern-matching on it.
    • Note that if you copy a Slack-generated Zoom link, the robot will end up opening Slack and not a Zoom window. To work around this, get in the Zoom yourself, click the up arrow on the Participants list button, and click "Copy invite link." That URL will work with the hand raiser.
  2. This will open a Chrome window and join the Zoom meeting as the user "Hand Raiser Bot."
  3. Whenever someone in the Zoom meeting selects the "Raise Hand" reaction, the servo on the robot moves. The hand will be raised whenever at least 1 person in the Zoom meeting has their hand raised, and lowered again when no one has their hand raised.
  4. If the hand has been raised for long enough, it will begin to wiggle side-to-side at intervals to try to gain attention.
  5. Once a Zoom participant has been called upon, they should lower their hand in the Zoom interface! This will lower the robot hand, unless other meeting participants also have raised hands in Zoom.
  6. When the meeting is over (or when you want Hand Raiser Bot to leave), hit control-C in the terminal to shut everything down. This will also lower the servo even if someone in the Zoom meeting still has their hand raised.

Code Layout

  • robot.py talks to viam-server to move the hardware itself. The code in this file raises and lowers the servo, and wiggles it if it has been raised for a while.
  • audience.py keeps track of how many hands are raised. This tells the robot when it's time to raise and lower the hand.
  • zoom_monitor.py uses Selenium to open a web browser and join the Zoom meeting. It counts how many participants in the meeting have their hands raised.
    • As of summer 2023, Zoom did not have an official API for participant reactions like whether someone has raised their hand. Consequently, we're getting this data by webscraping with Selenium.
  • secrets.py contains the way to connect to the robot itself. This repo does not contain production data: this file must be edited before things will work.
  • main.py ties everything together: it sets up a ZoomMonitor, connects to a robot, wraps the robot in an Audience object, and then sets the hand count in the Audience based on what is reported from the ZoomMonitor.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.