quickhelper / quickzoom
A complete Laravel Zoom integration package
Requires
- php: >=8.0
- firebase/php-jwt: >=6.0
- guzzlehttp/guzzle: >=7.0
- illuminate/console: >=9.0
- illuminate/database: >=9.0
- illuminate/http: >=9.0
- illuminate/support: >=9.0
README
A complete solution for integrating Zoom video conferencing into Laravel applications. Manage meetings, webinars, participants, and recordings with an elegant API.
Features
✅ Complete Meeting Management - Create, update, delete, and list Zoom meetings
✅ Webinar Support - Schedule and manage webinars
✅ Participant Tracking - Track meeting participants and attendance
✅ Recording Management - Access and manage meeting recordings
✅ Webhook Integration - Real-time event notifications
✅ Database Storage - Store meeting data locally
✅ Laravel Integration - Native Laravel service provider, facades, and events
Requirements
- PHP 8.0+
- Laravel 9.x or 10.x
- Zoom JWT App Credentials
Installation
- Install via Composer:
composer require quickhelper/quickzoom
- Publish config and migrations:
php artisan vendor:publish --provider="QuickZoom\Providers\QuickZoomServiceProvider"
- Add Zoom credentials to your
.env
:
ZOOM_API_KEY=your_zoom_api_key ZOOM_API_SECRET=your_zoom_api_secret ZOOM_WEBHOOK_SECRET=your_webhook_secret # Optional
- Run migrations:
php artisan migrate
Usage
Basic Meeting Management
use QuickZoom\Facades\QuickZoom; // Create a meeting $meeting = QuickZoom::createMeeting('me', [ 'topic' => 'Team Meeting', 'start_time' => now()->addDay()->toIso8601String(), 'duration' => 60, 'agenda' => 'Quarterly planning session' ]); // List meetings $meetings = QuickZoom::listMeetings(); // Get meeting details $meeting = QuickZoom::getMeeting($meetingId); // End a meeting QuickZoom::endMeeting($meetingId);
Webhook Setup
- Configure your Zoom app webhook in the Zoom Marketplace
- Add the webhook URL to your Zoom app settings (typically
https://yourdomain.com/api/zoom/webhook
) - Listen for events in your Laravel application:
// In your EventServiceProvider protected $listen = [ \QuickZoom\Events\ZoomMeetingStarted::class => [ \App\Listeners\HandleMeetingStarted::class, ], \QuickZoom\Events\ZoomParticipantJoined::class => [ \App\Listeners\HandleParticipantJoined::class, ], // Other events... ];
Available Methods
Method | Description |
---|---|
listMeetings() |
List all meetings |
getMeeting() |
Get meeting details |
createMeeting() |
Schedule a new meeting |
updateMeeting() |
Update meeting details |
deleteMeeting() |
Delete a meeting |
endMeeting() |
End an ongoing meeting |
listParticipants() |
List meeting participants |
registerParticipant() |
Register participant for meeting |
listRecordings() |
Get meeting recordings |
createWebinar() |
Schedule a webinar |
listWebinars() |
List scheduled webinars |
Configuration
Publish the configuration file to customize:
php artisan vendor:publish --tag=quickzoom-config
Available configuration options:
return [ 'api_key' => env('ZOOM_API_KEY'), 'api_secret' => env('ZOOM_API_SECRET'), 'base_url' => 'https://api.zoom.us/v2/', 'webhook_secret' => env('ZOOM_WEBHOOK_SECRET'), 'default_settings' => [ 'host_video' => true, 'participant_video' => true, // ... other meeting defaults ], 'routes' => [ 'prefix' => 'api/zoom', 'middleware' => ['api', 'auth:sanctum'], 'webhook_path' => 'webhook', ] ];
Security
- Uses JWT authentication with Zoom API
- Webhook signature verification
- Encrypted API communication
- Token rotation and caching
Testing
Run the tests with:
composer test
Changelog
See CHANGELOG.md for recent changes.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for details.
License
The MIT License (MIT). See LICENSE.md for more information.
Support
For issues and feature requests, please open an issue.