nawasara/zoom 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

nawasara/zoom

Composer 安装命令:

composer require nawasara/zoom

包简介

Zoom meeting management dashboard for Nawasara — user management, meeting CRUD, recording management, and webhook integration with DB-cached snapshots and queue-backed mutations.

README 文档

README

Zoom meeting management dashboard untuk Nawasara — user management, meeting CRUD, recording management, dan webhook integration dengan DB-cached snapshots dan queue-backed mutations.

Menggunakan komponen UI dari nawasara-ui dan mengikuti pola package architecture seperti nawasara-cloudflare dan nawasara-whm.

Fitur

✅ P1 — User Management (Read-only Mirror)

  • List semua user di account Zoom Kominfo
  • Detail user dengan license type, department, last login, total meetings
  • Filter by license type dan status
  • License usage tracking
  • Responsive table dengan pagination

✅ P1 — Meeting Management (CRUD)

  • List meeting (scheduled + past) dengan filter
  • Search by topic
  • Create meeting — topic, start time, duration, host, password, waiting room, recording auto
  • Update dan delete meeting
  • Get join link (copyable URL + password)
  • Support recurring meeting (P2)

🟡 P2 — Recording Management

  • List recording per meeting/host
  • Download link (cloud recording)
  • Delete recording dengan retention policy
  • Storage size tracking

🟡 P2 — Webhook Integration

  • Real-time event handling (meeting started/ended, recording ready)
  • Signature verification (HMAC SHA-256)

UI Components (nawasara-ui)

Package menggunakan komponen-komponen dari nawasara-ui:

  • x-nawasara-ui::page.container — Page wrapper
  • x-nawasara-ui::page.title — Page title
  • x-nawasara-ui::page.actions — Action buttons area
  • x-nawasara-ui::button — Custom button dengan color/size variants
  • x-nawasara-ui::filter-bar — Search + filter UI
  • x-nawasara-ui::filter-dropdown — Filter dropdown
  • x-nawasara-ui::filter-chip — Active filter chip
  • x-nawasara-ui::table — Data table dengan headers
  • x-nawasara-ui::form.label — Form label
  • x-lucide-* — Icon components dari Lucide

Setup

1. Vault Configuration

Tambah credential Zoom ke Vault:

'zoom' => [
    'client_id'     => 'xxx',
    'client_secret' => 'xxx',
    'account_id'    => 'xxx',
],

2. Create Server-to-Server OAuth App

  1. Login ke Zoom Marketplace
  2. Create aplikasi baru dengan type Server-to-Server OAuth
  3. Set scopes:
    • user:read:admin
    • meeting:read:admin, meeting:write:admin
    • recording:read:admin, recording:write:admin
  4. Copy Account ID, Client ID, Client Secret ke Vault

3. Run Migration

php artisan migrate

4. Seed Permissions

php artisan db:seed --class="Nawasara\\Zoom\\Database\\Seeders\\PermissionSeeder"

5. Test Connection

php artisan zoom:health-check

Penggunaan

Sync Jobs

Manual trigger:

php artisan zoom:sync all       # Sync users, meetings, recordings
php artisan zoom:sync users     # Sync users only
php artisan zoom:sync meetings  # Sync meetings only
php artisan zoom:sync recordings # Sync recordings only

Scheduled (automatic):

  • Users: setiap 1 jam
  • Meetings: setiap 5 menit
  • Recordings: setiap 30 menit

Permissions

zoom.view
zoom.user.view
zoom.meeting.view
zoom.meeting.create
zoom.meeting.update
zoom.meeting.delete
zoom.recording.view
zoom.recording.download
zoom.recording.delete
zoom.sync.execute

Livewire Components Structure

Components mengikuti pola yang konsisten dengan packages lain:

src/Livewire/
├── Users/
│   ├── Index.php                    # Main page component
│   └── Section/
│       └── Table.php               # Table section component
├── Meetings/
│   ├── Index.php                   # Main page component
│   ├── Create.php                  # Create page component
│   ├── Edit.php                    # Edit page component
│   └── Section/
│       ├── Table.php              # Meetings table component
│       └── Form.php               # Create/edit form component
└── Recordings/
    ├── Index.php                   # Main page component
    └── Section/
        └── Table.php              # Recordings table component

View Structure

resources/views/livewire/pages/
├── users/
│   ├── index.blade.php             # Users page layout
│   └── section/
│       └── table.blade.php         # Users table with filters
├── meetings/
│   ├── index.blade.php             # Meetings list page
│   ├── create.blade.php            # Create meeting page
│   ├── edit.blade.php              # Edit meeting page
│   └── section/
│       ├── table.blade.php         # Meetings table with filters
│       └── form.blade.php          # Meeting form component
└── recordings/
    ├── index.blade.php             # Recordings page layout
    └── section/
        └── table.blade.php         # Recordings table with filters

Key Livewire Pattern

Index Component (Page Level):

class Index extends Component
{
    public function render()
    {
        return view('nawasara-zoom::livewire.pages.users.index')
            ->layout('nawasara-ui::components.layouts.app');
    }
}

Section Component (Table/Form):

class Table extends Component
{
    #[Url]
    public string $search = '';

    public function render()
    {
        $repo = new ZoomUserRepository();
        $users = $repo->paginate(25, ['search' => $this->search]);

        return view('nawasara-zoom::livewire.pages.users.section.table', [
            'users' => $users,
        ]);
    }
}

Database

Models

  • ZoomUser — snapshot user Zoom
  • ZoomMeeting — snapshot meeting
  • ZoomRecording — snapshot recording

Jobs

  • SyncZoomUsersJob — hourly user sync
  • SyncZoomMeetingsJob — 5-minute meeting sync
  • SyncZoomRecordingsJob — 30-minute recording sync
  • CreateZoomMeetingJob — create meeting mutation
  • UpdateZoomMeetingJob — update meeting mutation
  • DeleteZoomMeetingJob — delete meeting mutation

Repositories

  • ZoomUserRepository — user data access
  • ZoomMeetingRepository — meeting data access
  • ZoomRecordingRepository — recording data access

Livewire Components

  • Users/Index — list users
  • Meetings/Index — list meetings
  • Meetings/Form — create/edit meeting
  • Recordings/Index — list recordings

Database Tables

Table Purpose
nawasara_zoom_users User snapshot
nawasara_zoom_meetings Meeting snapshot
nawasara_zoom_recordings Recording snapshot

API Rate Limits

Zoom API rate limits: 30 req/sec (Light), 60 req/sec (Medium)

Default sync intervals sudah account untuk limits ini. Untuk high-volume account, adjust di config/nawasara-zoom.php.

Troubleshooting

"Credential belum lengkap"

Pastikan Vault sudah punya credential:

php artisan vault:show

"Token expired during request"

ZoomClient automatically refresh token (cached untuk 55 menit). Jika error persist, check timezone server.

"Rate limit exceeded"

Increase sync interval di config atau reduce page size.

Cross-package Integration

Package Trigger Action
nawasara/notification Meeting started/ended (webhook) Notify host/participant
nawasara/registry Zoom user mapping Map Zoom user ↔ OPD/PIC
nawasara/itop Zoom user sync Sync ke iTop Person record

Roadmap

  • Webhook real-time sync (P2)
  • Batch meeting creation via CSV (P3)
  • Meeting recordings auto-retention (P2)
  • Integration dengan Zoom Phone (P3)
  • Zoom Webinar support (P3)

License

MIT

nawasara/zoom 适用场景与选型建议

nawasara/zoom 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 155 次下载、GitHub Stars 达 0, 最近一次更新时间为 2026 年 05 月 09 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「api」 「laravel」 「zoom」 「meeting」 「recording」 「Nawasara」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 nawasara/zoom 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 nawasara/zoom 我们能提供哪些服务?
定制开发 / 二次开发

基于 nawasara/zoom 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 155
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 48
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-05-09