Google Meeting Bot
Prerequisites
Before you begin, ensure the following tools are installed on your system:
- Git
- Docker and Docker Compose
- Python 3.10 or higher (only required for local development without Docker)
Installation Steps
1. Clone the Repository
git clone https://github.com/CueMeet/cuemeet-google-bot.git
cd cuemeet-google-bot
Project Folder Structure
Click to expand folder structure
.
├── Dockerfile
├── Makefile
├── __init__.py
├── app.py
├── buildspec-staging.yml
├── buildspec.yml
├── config
│ ├── __init__.py
│ ├── __pycache__
│ └── settings.py
├── google_meet
│ ├── __init__.py
│ ├── __pycache__
│ ├── bot.py
│ ├── random_mouse.py
│ └── utils.py
├── logger.py
├── monitoring.py
├── out
├── poetry.lock
├── pyproject.toml
├── transcript_extension
│ ├── background.js
│ ├── content.js
│ └── manifest.json
└── utils.py
2. Configure Environment Variables
Create a .env
file and include the following configuration values:
Click to view example .env configuration
DEBUG="True"
HIGHLIGHT_PROJECT_ID="123456"
ENVIRONMENT_NAME="DEV"
3. Configuration Options
The bot can be customized using command-line arguments:
usage: app.py [-h] [--start-time START_TIME] [--end-time END_TIME] [--min-record-time MIN_RECORD_TIME] [--bot-name BOT_NAME] [--presigned-url-combined PRESIGNED_URL_COMBINED]
[--presigned-url-audio PRESIGNED_URL_AUDIO] [--max-waiting-time MAX_WAITING_TIME]
meetlink
Join a Google Meeting to record audio.
Positional Arguments:
meetlink The Google Meet link to join
Optional Arguments:
-h, --help Show help message and exit
--start-time START_TIME Meeting start time (JavaScript timestamp in milliseconds)
--end-time END_TIME Meeting end time (JavaScript timestamp in milliseconds)
--min-record-time MIN_RECORD_TIME
Minimum recording time in seconds (default: 7200)
--bot-name BOT_NAME Name of the bot in the meeting (default: 'CueMeet Assistant')
--presigned-url-combined PRESIGNED_URL_COMBINED
Presigned URL to upload a tar file of the recording and transcription
--presigned-url-audio PRESIGNED_URL_AUDIO
Presigned URL to upload the audio recording
--max-waiting-time MAX_WAITING_TIME
Maximum waiting time in seconds (default: 1800)
Running with Docker
Build the Docker Image
docker build -t google-bot .
View Help Manual
docker run google-bot /bin/bash -c "python app.py --help"
Run the Bot Locally (Docker)
docker run google-bot /bin/bash -c "pulseaudio --start && python app.py '<meetlink>' --presigned-url-combined '<url>'"
Local Development with Poetry
For development without Docker, Poetry is used to manage dependencies and environments.
Setup Instructions
To set up the project locally using Poetry:
make install
This command will:
- Install Poetry (if not already present)
- Configure the virtual environment to reside in the project directory
- Install project dependencies as defined in
pyproject.toml
Activating the Poetry Shell
To enter the virtual environment:
make poetry-shell
Running the Bot Locally
Once inside the Poetry shell, you can run:
python app.py --help
Or test a full run with:
python app.py '<meetlink>' --presigned-url-combined '<url>'
Typical Local Workflow
# Install dependencies and set up the environment
make install
# Enter the Poetry-managed virtual environment
make poetry-shell
# Execute the bot
python app.py --help
Output Artifacts
- Audio File: Captured in
.opus
format. - Transcription: Saved as a
.json
file. - Combined Archive: Both files are compressed into a
.tar
archive and uploaded to S3 using the provided--presigned-url-combined
.
Note: Output of each of these is stored in the /out
folder of the parent directory.
Uploading Process
- The audio file is uploaded separately using the
--presigned-url-audio
. - A tar archive (
.tar
) containing the audio and transcription is uploaded using the--presigned-url-combined
.