The Zoom Meeting Assistant Bot is an automated solution that handles Zoom meeting participation, recording, and transcription. Built on the Zoom Meeting SDK, it operates in a headless environment, making it perfect for automated meeting management and documentation.
Ensure the following dependencies are installed on your system:
- Docker (to containerize and run the Zoom bot)
- Node.js & npm (to run the web server)
- Git (to clone the repository)
- cURL (for testing API endpoints)
- linux/wsl (for running the Zoom bot)
-
Automated Meeting Management
- Join meetings automatically
- Handle multiple concurrent sessions
- Support for both meeting IDs and URLs
- Automatic meeting cleanup
-
Participant Tracking
- Real-time participant monitoring
- Join/leave time tracking
- Participant analytics
- Historical attendance data
-
Audio Processing
- High-quality audio recording
- Real-time audio transcription
- Automatic file cleanup after 3 days
- Encrypted storage
-
Scalable Architecture
- Docker containerization
- Multiple concurrent meeting support
- Load balancing capabilities
- Resource optimization
-
Real-time Updates
- WebSocket integration
- Live participant updates
- Real-time transcription feed
- Status monitoring
┌─────────────────┐ ┌──────────────────┐
│ Express API │◄────►│ Zoom SDK Bot │
└────────┬────────┘ └──────────┬───────┘
│ │
│ │
┌────────▼────────┐ ┌─────────▼───────┐
│ WebSocket │ │ Docker │
│ Server │ │ Container │
└────────┬────────┘ └─────────────────┘
│
│
┌────────▼────────┐
│ Meeting Data │
│ Storage │
└─────────────────┘
Medical Professionals
- Transcribe Therapy Sessions: Automatically transcribe patient sessions, allowing therapists to focus on their patients without the distraction of note-taking.
- Record Patient Interactions: Capture audio of sessions for future reference, ensuring accurate documentation of patient progress.
- Review and Reflect: Enable therapists to revisit sessions for self-reflection and professional development, enhancing the quality of care provided.
- Node.js v14+
- Docker
- Linux environment (for headless browser support)
- Minimum 2GB RAM per instance
- Storage for audio recordings
project/
├── src/
│ ├── server.js # Main Express server
│ ├── audio-handler.js # Audio processing logic
│ └── utils/
│ ├── encryption.js # Data encryption
│ └── validation.js # Input validation
├── docker/
│ ├── Dockerfile # Bot container definition
│ └── docker-compose.yml # Service orchestration
├── config/
│ └── default.toml # Default configuration
├── docs/
│ ├── api.md # API documentation
│ ├── privacy.md # Privacy policy
│ └── terms.md # Terms of service
└── tests/
├── unit/
└── integration/
- Update system packages:
sudo apt update && sudo apt upgrade -y - Install required dependencies:
sudo apt install -y ca-certificates curl gnupg
- Add Docker’s official GPG key:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc > /dev/null sudo chmod a+r /etc/apt/keyrings/docker.asc
- Add the Docker repository:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- Install Docker:
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- Verify installation:
docker --version
-
install cmake and vcpkg
sudo apt-get update && \ sudo apt-get install -y build-essential cmake sudo apt-get install -y pkgconf sudo apt-get install -y gtkmm-3.0 -
install missing libraries
sudo apt-get install -y --no-install-recommends --no-install-suggests \ libx11-xcb1 \ libxcb-xfixes0 \ libxcb-shape0 \ libxcb-shm0 \ libxcb-randr0 \ libxcb-image0 \ libxcb-keysyms1 \ libxcb-xtest0
- Install Node.js (LTS version recommended):
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash - sudo apt install -y nodejs - Verify installation:
node -v npm -v
git clone https://github.com/your-repo/zoom-bot.git
cd zoom-botnpm install/zoom-bot
│── docker-compose.yml # Docker Compose file for container setup
│── Dockerfile # Dockerfile for building the container
│── config.toml # Configuration file for the bot
│── webserver.js # API server to control the bot
│── package.json # Node.js dependencies
│── entry.sh # Startup script for the bot
Edit config.toml with your Zoom credentials:
client-id = "*****"
display-name = "My Zoom Bot"
client-secret = "*******"
join-url = "https://us02web.zoom.us/j/123456789"
meeting-id = ""
password = ""
[RawAudio]
file = "meeting-audio.pcm"docker-compose up --build -d--build: Ensures the image is rebuilt with updates.-d: Runs the container in the background.
To check running containers:
docker psTo stop the bot:
docker-compose downnode webserver.jsServer runs at http://localhost:5000.
| Method | Endpoint | Description |
|---|---|---|
GET |
localhost:5000/config |
Retrieve current bot configuration |
POST |
localhost:5000/join-meeting |
Update bot configuration |
GET |
localhost:5000/active/meetings |
Get active Zoom meetings |
curl http://localhost:5000/configcurl -X POST http://localhost:5000/join-meeting -H "Content-Type: application/json" -d '{
"display_name": "Updated Bot Name",
"join_url": "https://example.zoom.us/j/987654321"
}'curl http://localhost:5000/active/meetings| Issue | Solution |
|---|---|
docker-compose: command not found |
Install using sudo apt install docker-compose |
Error: no such service zoom-bot |
Verify service name in docker-compose.yml |
config.toml not found |
Ensure the file exists in the correct directory |
port already in use |
Stop the process using sudo lsof -i :3000 and restart |