A Zoom App powered by Inworld AI Runtime that analyzes meeting audio and video streams using RTMS APIs to provide live evaluation and guidance. This template demonstrates real-time meeting content analysis integrated with Inworld's AI capabilities.
Check out the app demo video.
- Node.js (v20 or higher)
- Zoom App with RTMS access
- Ngrok (using your free permanent URL) for local development
- An Inworld AI account and API key
Create your Zoom App following the Zoom RTMS Quickstart Guide. This guide includes instructions on setting up your Zoom app and granting RTMS scope permissions.
Set your Home, OAuth and Webhook URLs using your Ngrok permanent URL.
git clone https://github.com/inworld-ai/zoom-demeanor-evaluator-node
cd zoom-demeanor-evaluator-nodenpm installCreate a .env file (copying the .env.example) in the project root:
INWORLD_API_KEY=your_api_key_here
ZM_RTMS_CLIENT=your_zoom_client_id
ZM_RTMS_SECRET=your_zoom_client_secretGet INWORLD_API_KEY from the Inworld Portal, and the Zoom credentials from your Zoom App Marketplace page.
Optional Logging Variables:
LOG_LEVEL- App logging (ERROR or DEBUG)RTMS_LOG_LEVEL- RTMS SDK logging (disabled, error, warn, info, or debug)
For local development, use ngrok to expose your server:
ngrok http --url=your-subdomain.ngrok-free.app 3000For development (with auto-reload on file changes):
npm run devFor production:
npm run build
npm startStart a Zoom meeting and the app should be displayed. RTMS data should start coming through to the app.
zoom-demeanor-evaluator-node/
├── src/
│ ├── inworld/ # Inworld AI integration
│ │ ├── evaluationGraph.js
│ │ ├── guidanceGraph.js
│ │ ├── inworldService.js
│ │ └── visualEvalGraph.js
│ ├── rtms/ # Zoom RTMS integration
│ │ └── websocketHandler.js
│ └── utils/ # Helper utilities
│ ├── applyHeaders.js
│ └── logging.js
├── public/ # Frontend assets
│ ├── css/
│ ├── js/
│ └── index.html
├── index.js # Entry point
├── package.json # Dependencies
└── LICENSE # MIT License
If you don't get RTMS data coming through to the app:
- Double check your URLs and scopes in your Zoom App Marketplace page
- Check in your Zoom Profile Settings - Zoom Apps and make sure that
Share realtime meeting content with appsis enabled andAuto-start apps that access shared realtime meeting contentshows your app as being auto-started - Verify your ngrok tunnel is running and the URL matches your Zoom app configuration
- Check the console logs with
LOG_LEVEL=DEBUGandRTMS_LOG_LEVEL=debugfor detailed error messages
Bug Reports: GitHub Issues
General Questions: For general inquiries and support, please email us at [email protected]
We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to contribute to this project.
This project is licensed under the MIT License - see the LICENSE file for details.
