360 Secure SkillHub
360 安全技能中心

setup-zoom-webhooks

面向 Zoom Webhook 集成的参考技能,说明事件订阅、x-zm-signature 签名校验、事件投递与重试、常见事件类型,并附 Express 示例和故障排查材料;认证设置需另用 OAuth 技能。

anthropics
热度 20.68
最近更新 2026-10-19 02:07:22
分类:开发依赖:纯提示词应用场景:API 集成 / 代码生成 / 调试排错

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add anthropics/knowledge-work-plugins/setup-zoom-webhooks
Metadata
name
setup-zoom-webhooks
description
Reference skill for Zoom webhooks. Use after routing to an event-driven workflow when implementing subscriptions, signature verification, delivery handling, retries, or event-type selection.
triggers
["zoom webhook","webhook signature","x-zm-signature","event subscription","recording completed webhook"]

/setup-zoom-webhooks

Background reference for Zoom event delivery over HTTP. Prefer workflow skills first, then use this file for verification, subscription, and delivery details.

Prerequisites

  • Zoom app with Event Subscriptions enabled
  • HTTPS endpoint to receive webhooks
  • Webhook secret token for verification

Need help with authentication? See the zoom-oauth skill for OAuth setup.

Quick Start

// Express.js webhook handler
const crypto = require('crypto');

// Capture raw body for signature verification (avoid re-serializing JSON).
app.use(require('express').json({
  verify: (req, _res, buf) => { req.rawBody = buf; }
}));

app.post('/webhook', (req, res) => {
  // Verify webhook signature
  const signature = req.headers['x-zm-signature'];
  const timestamp = req.headers['x-zm-request-timestamp'];
  const body = req.rawBody ? req.rawBody.toString('utf8') : JSON.stringify(req.body);
  const payload = `v0:${timestamp}:${body}`;
  const hash = crypto.createHmac('sha256', WEBHOOK_SECRET)
    .update(payload).digest('hex');
  
  if (signature !== `v0=${hash}`) {
    return res.status(401).send('Invalid signature');
  }

  // Handle event
  const { event, payload } = req.body;
  console.log(`Received: ${event}`);
  
  res.status(200).send();
});

Common Events

Event Description
meeting.started Meeting has started
meeting.ended Meeting has ended
meeting.participant_joined Participant joined meeting
recording.completed Cloud recording ready
user.created New user added

Detailed References

Troubleshooting

Sample Repositories

Official (by Zoom)

Type Repository Stars
Node.js webhook-sample 34
PostgreSQL webhook-to-postgres 5
Go/Fiber Go-Webhooks -
Header Auth zoom-webhook-verification-headers -

Community

Language Repository Description
Laravel binary-cats/laravel-webhooks Laravel webhook handler
AWS Lambda splunk/zoom-webhook-to-hec Serverless to Splunk HEC
Node.js Will4950/zoom-webhook-listener Webhook forwarder
Express+Redis ojusave/eventSubscriptionPlayground Socket.io + Redis

Multi-Language Samples (by tanchunsiong)

Language Repository
Node.js Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-NodeJS
C# Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-ASP.NET-Core-C-
Java Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Java-Spring-Boot
Python Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-Python
PHP Zoom-Webhook-Signature-OAuth-and-REST-API-Development-Sample-In-PHP

Full list: See general/references/community-repos.md

Resources

Environment Variables