Agent Skillsanthropics/knowledge-work-plugins › setup-zoom-websockets

setup-zoom-websockets

GitHub

Zoom WebSockets配置指南,对比Webhooks优势,适用于低延迟、高安全或需双向通信场景。涵盖OAuth应用创建、WebSocket订阅启用及连接代码示例。

partner-built/zoom-plugin/skills/websockets/SKILL.md anthropics/knowledge-work-plugins

Trigger Scenarios

需要比Webhooks更低的延迟 对安全性有极高要求 不希望暴露公共端点 需要双向实时通信

Install

npx skills add anthropics/knowledge-work-plugins --skill setup-zoom-websockets -g -y
More Options

Non-standard path

npx skills add https://github.com/anthropics/knowledge-work-plugins/tree/main/partner-built/zoom-plugin/skills/websockets -g -y

Use without installing

npx skills use anthropics/knowledge-work-plugins@setup-zoom-websockets

指定 Agent (Claude Code)

npx skills add anthropics/knowledge-work-plugins --skill setup-zoom-websockets -a claude-code -g -y

安装 repo 全部 skill

npx skills add anthropics/knowledge-work-plugins --all -g -y

预览 repo 内 skill

npx skills add anthropics/knowledge-work-plugins --list

SKILL.md

Frontmatter
{
    "name": "setup-zoom-websockets",
    "triggers": [
        "zoom websockets",
        "websocket event subscription",
        "persistent zoom events",
        "low latency zoom events",
        "zoom websocket connection"
    ],
    "description": "Reference skill for Zoom WebSockets. Use after routing to a low-latency event workflow when persistent connections, faster event delivery, or security constraints make WebSockets preferable to webhooks."
}

/setup-zoom-websockets

Background reference for persistent Zoom event streams. Prefer workflow routing first, then use this file when WebSockets are plausibly better than webhooks.

WebSockets vs Webhooks

Aspect WebSockets Webhooks
Connection Persistent, bidirectional One-time HTTP POST
Latency Lower (no HTTP overhead) Higher (new connection per event)
Security Direct connection, no exposed endpoint Requires endpoint validation, IP whitelisting
Model Pull (you connect to Zoom) Push (Zoom connects to you)
State Stateful (maintains connection) Stateless (each event independent)
Setup More complex (access token, connection) Simpler (just endpoint URL)

Choose WebSockets when:

  • Real-time, low-latency updates are critical
  • Security is paramount (banking, healthcare, finance)
  • You don't want to expose a public endpoint
  • You need bidirectional communication

Choose Webhooks when:

  • Simpler setup is preferred
  • Small number of event notifications
  • Existing HTTP infrastructure

Prerequisites

  • Server-to-Server OAuth app in Zoom Marketplace
  • Account ID, Client ID, and Client Secret
  • WebSocket subscription with events enabled

Need help with S2S OAuth? See the zoom-oauth skill for complete authentication flows.

Start troubleshooting fast: Use the 5-Minute Runbook before deep debugging.

Quick Start

1. Create Server-to-Server OAuth App

  1. Go to Zoom Marketplace
  2. Create a Server-to-Server OAuth app
  3. Copy Account ID, Client ID, Client Secret

2. Enable WebSocket Subscription

  1. In your app, go to FeatureEvent Subscriptions
  2. Add an Event Subscription
  3. Select WebSockets as the method type
  4. Select events to subscribe to (e.g., meeting.created, meeting.started)
  5. Save - an endpoint URL will be generated

3. Connect via WebSocket

const WebSocket = require('ws');
const axios = require('axios');

// Step 1: Get access token
async function getAccessToken() {
  const credentials = Buffer.from(`${CLIENT_ID}:${CLIENT_SECRET}`).toString('base64');
  
  const response = await axios.post(
    'https://zoom.us/oauth/token',
    new URLSearchParams({
      grant_type: 'account_credentials',
      account_id: ACCOUNT_ID
    }),
    {
      headers: {
        'Authorization': `Basic ${credentials}`,
        'Content-Type': 'application/x-www-form-urlencoded'
      }
    }
  );
  
  return response.data.access_token;
}

// Step 2: Connect to WebSocket
async function connectWebSocket() {
  const accessToken = await getAccessToken();
  
  // WebSocket URL from your subscription settings
  const wsUrl = `wss://ws.zoom.us/ws?subscriptionId=${SUBSCRIPTION_ID}&access_token=${accessToken}`;
  
  const ws = new WebSocket(wsUrl);
  
  ws.on('open', () => {
    console.log('WebSocket connection established');
  });
  
  ws.on('message', (data) => {
    const event = JSON.parse(data);
    console.log('Event received:', event.event);
    
    // Handle different event types
    switch (event.event) {
      case 'meeting.started':
        console.log(`Meeting started: ${event.payload.object.topic}`);
        break;
      case 'meeting.ended':
        console.log(`Meeting ended: ${event.payload.object.uuid}`);
        break;
      case 'meeting.participant_joined':
        console.log(`Participant joined: ${event.payload.object.participant.user_name}`);
        break;
    }
  });
  
  ws.on('close', (code, reason) => {
    console.log(`Connection closed: ${code} - ${reason}`);
    // Implement reconnection logic
  });
  
  ws.on('error', (error) => {
    console.error('WebSocket error:', error);
  });
  
  return ws;
}

connectWebSocket();

Event Format

Events received via WebSocket have the same format as webhook events:

{
  "event": "meeting.started",
  "event_ts": 1706123456789,
  "payload": {
    "account_id": "abcD3ojkdbjfg",
    "object": {
      "id": 1234567890,
      "uuid": "abcdefgh-1234-5678-abcd-1234567890ab",
      "host_id": "xyz789",
      "topic": "Team Standup",
      "type": 2,
      "start_time": "2024-01-25T10:00:00Z",
      "timezone": "America/Los_Angeles"
    }
  }
}

Common Events

Event Description
meeting.created Meeting scheduled
meeting.updated Meeting settings changed
meeting.deleted Meeting deleted
meeting.started Meeting begins
meeting.ended Meeting ends
meeting.participant_joined Participant joins meeting
meeting.participant_left Participant leaves meeting
recording.completed Cloud recording ready
user.created New user added
user.updated User details changed

Connection Management

Keep-Alive

WebSocket connections require periodic heartbeats. Zoom will close idle connections.

// Send ping every 30 seconds
setInterval(() => {
  if (ws.readyState === WebSocket.OPEN) {
    ws.ping();
  }
}, 30000);

Reconnection

Implement automatic reconnection for reliability:

function connectWithReconnect() {
  const ws = connectWebSocket();
  
  ws.on('close', () => {
    console.log('Connection lost. Reconnecting in 5 seconds...');
    setTimeout(connectWithReconnect, 5000);
  });
  
  return ws;
}

Single Connection Limit

Important: Only ONE WebSocket connection can be open per subscription at a time. Opening a new connection will close the existing one.

Detailed References

Troubleshooting

Sample Repositories

Official / Community

Type Repository Description
Node.js just-zoomit/zoom-websockets WebSocket sample with S2S OAuth

WebSockets vs RTMS

Don't confuse WebSockets with RTMS (Realtime Media Streams):

Feature WebSockets RTMS
Purpose Event notifications Media streams
Data Meeting events, user events Audio, video, transcripts
Use case React to Zoom events AI/ML, live transcription
Skill This skill rtms

For real-time audio/video/transcript data, use the rtms skill instead.

Resources

Environment Variables

Version History

  • 6f13415 Current 2026-07-05 18:33

Same Skill Collection

bio-research/skills/nextflow-development/SKILL.md
bio-research/skills/single-cell-rna-qc/SKILL.md
bio-research/skills/start/SKILL.md
cowork-plugin-management/skills/cowork-plugin-customizer/SKILL.md
cowork-plugin-management/skills/create-cowork-plugin/SKILL.md
customer-support/skills/customer-escalation/SKILL.md
customer-support/skills/customer-research/SKILL.md
customer-support/skills/draft-response/SKILL.md
customer-support/skills/kb-article/SKILL.md
customer-support/skills/ticket-triage/SKILL.md
data/skills/analyze/SKILL.md
data/skills/build-dashboard/SKILL.md
data/skills/create-viz/SKILL.md
data/skills/data-visualization/SKILL.md
data/skills/explore-data/SKILL.md
data/skills/sql-queries/SKILL.md
data/skills/statistical-analysis/SKILL.md
data/skills/validate-data/SKILL.md
data/skills/write-query/SKILL.md
design/skills/accessibility-review/SKILL.md
design/skills/design-critique/SKILL.md
design/skills/design-handoff/SKILL.md
design/skills/design-system/SKILL.md
design/skills/research-synthesis/SKILL.md
design/skills/user-research/SKILL.md
design/skills/ux-copy/SKILL.md
engineering/skills/architecture/SKILL.md
engineering/skills/code-review/SKILL.md
engineering/skills/debug/SKILL.md
engineering/skills/deploy-checklist/SKILL.md
engineering/skills/documentation/SKILL.md
engineering/skills/incident-response/SKILL.md
engineering/skills/standup/SKILL.md
engineering/skills/system-design/SKILL.md
engineering/skills/tech-debt/SKILL.md
engineering/skills/testing-strategy/SKILL.md
enterprise-search/skills/digest/SKILL.md
enterprise-search/skills/knowledge-synthesis/SKILL.md
enterprise-search/skills/search-strategy/SKILL.md
enterprise-search/skills/search/SKILL.md
enterprise-search/skills/source-management/SKILL.md
finance/skills/audit-support/SKILL.md
finance/skills/close-management/SKILL.md
finance/skills/financial-statements/SKILL.md
finance/skills/journal-entry-prep/SKILL.md
finance/skills/journal-entry/SKILL.md
finance/skills/reconciliation/SKILL.md
finance/skills/sox-testing/SKILL.md
finance/skills/variance-analysis/SKILL.md
human-resources/skills/comp-analysis/SKILL.md
human-resources/skills/draft-offer/SKILL.md
human-resources/skills/interview-prep/SKILL.md
human-resources/skills/onboarding/SKILL.md
human-resources/skills/org-planning/SKILL.md
human-resources/skills/people-report/SKILL.md
human-resources/skills/performance-review/SKILL.md
human-resources/skills/policy-lookup/SKILL.md
human-resources/skills/recruiting-pipeline/SKILL.md
legal/skills/brief/SKILL.md
legal/skills/compliance-check/SKILL.md
legal/skills/legal-response/SKILL.md
legal/skills/legal-risk-assessment/SKILL.md
legal/skills/meeting-briefing/SKILL.md
legal/skills/review-contract/SKILL.md
legal/skills/signature-request/SKILL.md
legal/skills/triage-nda/SKILL.md
legal/skills/vendor-check/SKILL.md
marketing/skills/brand-review/SKILL.md
marketing/skills/campaign-plan/SKILL.md
marketing/skills/competitive-brief/SKILL.md
marketing/skills/content-creation/SKILL.md
marketing/skills/draft-content/SKILL.md
marketing/skills/email-sequence/SKILL.md
marketing/skills/performance-report/SKILL.md
marketing/skills/seo-audit/SKILL.md
operations/skills/capacity-plan/SKILL.md
operations/skills/change-request/SKILL.md
operations/skills/compliance-tracking/SKILL.md
operations/skills/process-doc/SKILL.md
operations/skills/process-optimization/SKILL.md
operations/skills/risk-assessment/SKILL.md
operations/skills/runbook/SKILL.md
operations/skills/status-report/SKILL.md
operations/skills/vendor-review/SKILL.md
partner-built/apollo/skills/enrich-lead/SKILL.md
partner-built/apollo/skills/prospect/SKILL.md
partner-built/apollo/skills/sequence-load/SKILL.md
partner-built/common-room/skills/account-research/SKILL.md
partner-built/common-room/skills/call-prep/SKILL.md
partner-built/common-room/skills/compose-outreach/SKILL.md
partner-built/common-room/skills/contact-research/SKILL.md
partner-built/common-room/skills/prospect/SKILL.md
partner-built/common-room/skills/weekly-prep-brief/SKILL.md
partner-built/slack/skills/slack-messaging/SKILL.md
partner-built/slack/skills/slack-search/SKILL.md
partner-built/zoom-plugin/skills/build-zoom-bot/SKILL.md
partner-built/zoom-plugin/skills/build-zoom-meeting-app/SKILL.md
partner-built/zoom-plugin/skills/choose-zoom-approach/SKILL.md
partner-built/zoom-plugin/skills/cobrowse-sdk/SKILL.md
partner-built/zoom-plugin/skills/contact-center/android/SKILL.md
partner-built/zoom-plugin/skills/contact-center/ios/SKILL.md
partner-built/zoom-plugin/skills/contact-center/SKILL.md
partner-built/zoom-plugin/skills/contact-center/web/SKILL.md
partner-built/zoom-plugin/skills/debug-zoom-integration/SKILL.md
partner-built/zoom-plugin/skills/debug-zoom/SKILL.md
partner-built/zoom-plugin/skills/design-mcp-workflow/SKILL.md
partner-built/zoom-plugin/skills/general/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/android/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/electron/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/ios/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/linux/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/macos/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/react-native/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/unreal/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/web/SKILL.md
partner-built/zoom-plugin/skills/meeting-sdk/windows/SKILL.md
partner-built/zoom-plugin/skills/oauth/SKILL.md
partner-built/zoom-plugin/skills/phone/SKILL.md
partner-built/zoom-plugin/skills/plan-zoom-integration/SKILL.md
partner-built/zoom-plugin/skills/plan-zoom-product/SKILL.md
partner-built/zoom-plugin/skills/probe-sdk/SKILL.md
partner-built/zoom-plugin/skills/rest-api/SKILL.md
partner-built/zoom-plugin/skills/rivet-sdk/SKILL.md
partner-built/zoom-plugin/skills/rtms/SKILL.md
partner-built/zoom-plugin/skills/scribe/SKILL.md
partner-built/zoom-plugin/skills/setup-zoom-mcp/SKILL.md
partner-built/zoom-plugin/skills/setup-zoom-oauth/SKILL.md
partner-built/zoom-plugin/skills/start/SKILL.md
partner-built/zoom-plugin/skills/team-chat/SKILL.md
partner-built/zoom-plugin/skills/ui-toolkit/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/android/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/flutter/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/ios/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/linux/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/macos/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/react-native/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/unity/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/web/SKILL.md
partner-built/zoom-plugin/skills/video-sdk/windows/SKILL.md
partner-built/zoom-plugin/skills/virtual-agent/android/SKILL.md
partner-built/zoom-plugin/skills/virtual-agent/ios/SKILL.md
partner-built/zoom-plugin/skills/virtual-agent/SKILL.md
partner-built/zoom-plugin/skills/virtual-agent/web/SKILL.md
partner-built/zoom-plugin/skills/webhooks/SKILL.md
partner-built/zoom-plugin/skills/zoom-apps-sdk/SKILL.md
partner-built/zoom-plugin/skills/zoom-mcp/whiteboard/SKILL.md
pdf-viewer/skills/view-pdf/SKILL.md
product-management/skills/competitive-brief/SKILL.md
product-management/skills/metrics-review/SKILL.md
product-management/skills/product-brainstorming/SKILL.md
product-management/skills/roadmap-update/SKILL.md
product-management/skills/sprint-planning/SKILL.md
product-management/skills/stakeholder-update/SKILL.md
product-management/skills/synthesize-research/SKILL.md
product-management/skills/write-spec/SKILL.md
productivity/skills/memory-management/SKILL.md
productivity/skills/start/SKILL.md
productivity/skills/task-management/SKILL.md
productivity/skills/update/SKILL.md
sales/skills/account-research/SKILL.md
sales/skills/call-prep/SKILL.md
sales/skills/call-summary/SKILL.md
sales/skills/competitive-intelligence/SKILL.md
sales/skills/create-an-asset/SKILL.md
sales/skills/daily-briefing/SKILL.md
sales/skills/draft-outreach/SKILL.md
sales/skills/forecast/SKILL.md
sales/skills/pipeline-review/SKILL.md
small-business/skills/call-list/SKILL.md
small-business/skills/cash-flow-snapshot/SKILL.md
small-business/skills/close-month/SKILL.md
small-business/skills/content-strategy/SKILL.md
small-business/skills/contract-review/SKILL.md
small-business/skills/crm-cleanup/SKILL.md
small-business/skills/crm-maintenance/SKILL.md
small-business/skills/customer-pulse-check/SKILL.md
small-business/skills/customer-pulse/SKILL.md
small-business/skills/friday-brief/SKILL.md
small-business/skills/handle-complaint/SKILL.md
small-business/skills/invoice-chase/SKILL.md
small-business/skills/lead-triage/SKILL.md
small-business/skills/monday-brief/SKILL.md
small-business/skills/month-end-prep/SKILL.md
small-business/skills/month-heads-up/SKILL.md
small-business/skills/plan-payroll/SKILL.md
small-business/skills/price-check/SKILL.md
small-business/skills/quarterly-review/SKILL.md
small-business/skills/review-contract/SKILL.md
small-business/skills/run-campaign/SKILL.md
small-business/skills/sales-brief/SKILL.md
small-business/skills/tax-prep/SKILL.md
small-business/skills/ticket-deflector/SKILL.md
bio-research/skills/instrument-data-to-allotrope/SKILL.md
bio-research/skills/scientific-problem-selection/SKILL.md
bio-research/skills/scvi-tools/SKILL.md
data/skills/data-context-extractor/SKILL.md
partner-built/brand-voice/skills/brand-voice-enforcement/SKILL.md
partner-built/brand-voice/skills/discover-brand/SKILL.md
partner-built/brand-voice/skills/guideline-generation/SKILL.md
small-business/skills/business-pulse/SKILL.md
small-business/skills/canva-creator/SKILL.md
small-business/skills/job-post-builder/SKILL.md
small-business/skills/margin-analyzer/SKILL.md
small-business/skills/smb-onboard/SKILL.md
small-business/skills/smb-router/SKILL.md
small-business/skills/tax-season-organizer/SKILL.md

Metadata

Files
0
Version
6f13415
Hash
10307fbf
Indexed
2026-07-05 18:33

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-08 21:18
浙ICP备14020137号-1 $Гость$