2

GitHub - navicstein/meetbots: A Google Meet & Zoom bots to record audio &am...

 1 year ago
source link: https://github.com/navicstein/meetbots
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

This project is far from perfect but only showcases the possibility of recording audio & video streams from a google meeting or zoom call without much users interactivity, kinda like a personal assistant

The idea is, when a user want a bot to join any call, he opens a modal & inputs the url(meet) or meetingId & passcode (zoom) then the server creates an ECS task that runs only on the bot on a docker

Features

  • Be able to join meeting on behalf of a user
  • Be able to record audio & video streams from meetings
  • Ability to scale on AWS fargate (deployment via pulumi)
  • S3 bucket upload support (soon)

This project has 3 main services

  • Frontend (react app)
  • Bot agent
  • Graphql server

Screenshots

Pre record UI

frontend-ui

Recording meet agent

meet-recording

Recording zoom agent

zoom-recording

Running the graphql-server

the server is built with gqlgen, schema first graphql approach

cd into ./api/gql-server & run

$ BOT_MODE=remote go run .

or create an .env file

This should give you a playground url you can interact with the bot without the frontend

DBG server.go:37 > connect to http://localhost:8080/ for GraphQL playground

Testing the bot alone without server

to see the bot in action create an .env in the ./api/bots directory, either of a meet or zoom type for example

# for google Meet
ID="random-id"
NAME="Bot username"
URL=https://meet.google.com/rck-cbnr-smb
TYPE=meet

# for zoom
ID="you-id"
PASSCODE=538Eah
MEETINGID=88975667556
NAME="Bot username"
TYPE=zoom

then from that same api/bot directory, run

$ go run .

This will run quickly send the bot to the meeting & you should see the browser, this is done by ECS RunTask in gql-server on production

basically, the goal is to run a single bot on one container, why? if two bots are recording in the same container & using the same CPU, the audio will appear to be stuttered and affect audio quality

build and check the bot docker locally

from the API directory

$ docker build -t meetbot . -f bot.Dockerfile

Deployment

only deployed for testing!
Deployment is done via Pulumi & can be accessed via ./api/deployment refer to pulumi docs for more info

limitations

  • Recorded videos only lives on filesystem (S3 support comming soon)
  • performance: the bot may not always work smoothly and may experience delays or errors when joining or recording meetings.
  • compatibility: zoom agent doesnt work in certain deployed locations, see zooms supported locations

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK