关于 build-zoom-meeting-sdk-app
用于通过 Meeting SDK 在客户端和无头环境中嵌入 Zoom 会议的参考技能,涵盖平台配置、SDK 签名、加入流程、界面选项和故障排查。
主要功能
- 01各平台 SDK 指南
- 02服务端生成签名
- 03Web Component 与 Client 视图
- 04加入与授权参考
- 05故障排查与示例链接
适用场景
- 01在应用界面中嵌入 Zoom 会议
- 02使用 SDK 签名构建 Web 会议流程
- 03开发无头 Linux 会议 Bot
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ anthropics/ knowledge-work-plugins --skill build-zoom-meeting-sdk-app安装后在 Claude Code 中输入/build-zoom-meeting-sdk-app确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
android/android.mdRUNBOOK.mdandroid/concepts/architecture.mdlifecycle-workflow.mdandroid/examples/join-start-pattern.mdandroid/references/android-reference-map.mdenvironment-variables.mdversioning-and-compatibility.mdandroid/scenarios/high-level-scenarios.mdandroid/troubleshooting/common-issues.mdelectron/RUNBOOK.mdelectron/concepts/high-level-scenarios.mdlifecycle-workflow.mdsdk-architecture-pattern.mdelectron/examples/authentication-pattern.mdjoin-meeting-pattern.mdraw-data-pattern.mdsetup-guide.mdelectron/references/electron-reference.mdmodule-map.mdelectron/troubleshooting/common-issues.mddeprecated-and-contradictions.mdversion-drift.mdios/ios.mdios/concepts/architecture.mdlifecycle-workflow.mdios/examples/join-start-pattern.mdios/references/environment-variables.mdios-reference-map.mdversioning-and-compatibility.md详细介绍
/build-zoom-meeting-sdk-app
面向 Web、移动端、桌面端及 Linux 机器人环境的嵌入式 Zoom 会议背景参考。请先使用 build-zoom-meeting-app 或 build-zoom-bot,再转到此处查看平台细节。
Zoom Meeting SDK
将完整的 Zoom 会议体验嵌入 Web、移动端、桌面端及无界面(headless)集成中。
硬性路由规则(请先阅读)
- 如果用户要求在其应用界面内嵌入或加入会议,请路由至 Meeting SDK 实现方案。
- 除非用户明确要求管理会议资源或生成浏览器
join_url链接,否则不要切换为仅使用 REST 的会议链接流程。 - Meeting SDK 加入流程需要 SDK 签名及 SDK 加入调用;REST 的
join_url不是 Meeting SDK 的加入载荷。
前提条件
- 具备 Meeting SDK 凭据的 Zoom 应用
- 来自 Marketplace 的 SDK Key 和 Secret
- 平台对应的开发环境(Web、Android、iOS、macOS、Unreal、Electron、Linux 或 Windows)
需要 OAuth 或签名方面的帮助? 请参阅 zoom-oauth 技能了解身份验证流程。
需要 Web 端加入前诊断? 在初始化或加入 Meeting SDK 之前,使用 probe-sdk 来拦截就绪度较低的设备或网络。
快速排查故障: 在进行深入调试之前,请先使用 5 分钟排障手册。
快速开始(Web - 通过 CDN 使用 Client View)
<script src="https://source.zoom.us/3.1.6/lib/vendor/react.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/react-dom.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/redux.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/redux-thunk.min.js"></script>
<script src="https://source.zoom.us/3.1.6/lib/vendor/lodash.min.js"></script>
<script src="https://source.zoom.us/3.1.6/zoom-meeting-3.1.6.min.js"></script>
<script>
// CDN provides ZoomMtg (Client View - full page)
// For ZoomMtgEmbedded (Component View), use npm instead
ZoomMtg.preLoadWasm();
ZoomMtg.prepareWebSDK();
ZoomMtg.init({
leaveUrl: window.location.href,
patchJsMedia: true,
disableCORP: !window.crossOriginIsolated,
success: function() {
ZoomMtg.join({
sdkKey: 'YOUR_SDK_KEY',
signature: 'YOUR_SIGNATURE', // Generate server-side!
meetingNumber: 'MEETING_NUMBER',
userName: 'User Name',
passWord: '', // Note: camelCase with capital W
success: function(res) { console.log('Joined'); },
error: function(err) { console.error(err); }
});
},
error: function(err) { console.error(err); }
});
</script>
重要注意事项(Web)
1. CDN 与 npm - API 不同!
| 分发方式 | 全局对象 | 视图类型 | API 风格 |
|---|---|---|---|
CDN(zoom-meeting-{ver}.min.js) | ZoomMtg | Client View(全页面) | 回调 |
npm(@zoom/meetingsdk) | ZoomMtgEmbedded | Component View(可嵌入) | Promise |
2. 生产环境需要后端
切勿在客户端代码中暴露 SDK Secret。 请在服务端生成签名:
// server.js (Node.js example)
const KJUR = require('jsrsasign');
app.post('/api/signature', (req, res) => {
const { meetingNumber, role } = req.body;
const iat = Math.floor(Date.now() / 1000) - 30;
const exp = iat + 60 * 60 * 2;
const header = { alg: 'HS256', typ: 'JWT' };
const payload = {
sdkKey: process.env.ZOOM_SDK_KEY,
mn: String(meetingNumber).replace(/\D/g, ''),
role: parseInt(role, 10),
iat, exp, tokenExp: exp
};
const signature = KJUR.jws.JWS.sign('HS256',
JSON.stringify(header),
JSON.stringify(payload),
process.env.ZOOM_SDK_SECRET
);
res.json({ signature, sdkKey: process.env.ZOOM_SDK_KEY });
});
3. CSS 冲突 - 避免全局重置
全局的 * { margin: 0; } 会破坏 Zoom 的界面。请限定样式作用范围:
/* BAD */
* { margin: 0; padding: 0; }
/* GOOD */
.your-app, .your-app * { box-sizing: border-box; }
4. Client View 工具栏被裁切的修复
如果工具栏超出屏幕范围,请缩小 Zoom 界面:
#zmmtg-root {
position: fixed !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
width: 100vw !important;
height: 100vh !important;
/* Critical for SPAs (React/Next/etc): ensure Zoom UI isn't behind your app shell/overlays. */
z-index: 9999 !important;
transform: scale(0.95) !important;
transform-origin: top center !important;
}
5. 会议开始时隐藏应用
Client View 会接管整个页面。请隐藏你的界面:
// In ZoomMtg.init success callback:
document.documentElement.classList.add('meeting-active');
document.body.classList.add('meeting-active');
body.meeting-active .your-app { display: none !important; }
body.meeting-active { background: #000 !important; }
UI 选项(Web)
Meeting SDK 提供 带自定义选项的 Zoom 界面:
| 视图 | 说明 |
|---|---|
| Component View | 可提取、可自定义的界面,将会议嵌入一个 div 中 |
| Client View | 全页面 Zoom 界面体验 |
注意:与需要从零构建界面的 Video SDK 不同,Meeting SDK 以 Zoom 的界面为基础,并在其上提供自定义能力。
核心概念
| 概念 | 说明 |
|---|---|
| SDK Key/Secret | 来自 Marketplace 的凭据 |
| Signature | 使用 SDK Secret 签名的 JWT |
| Component View | 可提取、可自定义的界面(Web) |
| Client View | 全页面 Zoom 界面(Web) |
详细参考
平台指南
- android/SKILL.md - Android SDK(默认/自定义 UI、加入/开始/认证生命周期、移动端集成)
- android/references/android-reference-map.md - Android API 接口映射与版本漂移注意事项
- ios/SKILL.md - iOS SDK(默认/自定义 UI、加入/开始/认证生命周期、移动端集成)
- ios/references/ios-reference-map.md - iOS API 接口映射与版本漂移注意事项
- macos/SKILL.md - macOS SDK(桌面默认/自定义 UI、服务控制器、宿主流程)
- macos/references/macos-reference-map.md - macOS API 接口映射与版本漂移注意事项
- unreal/SKILL.md - Unreal Engine 封装(C++/Blueprint 封装行为与 SDK 映射)
- unreal/references/unreal-reference-map.md - Unreal 封装参考映射与版本滞后说明
- references/android.md - Android 指引文档,用于从宽泛的 Meeting SDK 查询快速路由
- references/ios.md - iOS 指引文档,用于从宽泛的 Meeting SDK 查询快速路由
- references/macos.md - macOS 指引文档,用于从宽泛的 Meeting SDK 查询快速路由
- references/unreal.md - Unreal 指引文档,用于从宽泛的 Meeting SDK 查询快速路由
- linux/SKILL.md - Linux SDK 无界面 Bot 技能入口
- linux/linux.md - Linux SDK(C++ 无界面 Bot、原始媒体访问)
- linux/references/linux-reference.md - Linux 依赖、Docker、故障排查
- react-native/SKILL.md - React Native SDK(iOS/Android 封装、加入/开始流程、桥接设置)
- react-native/SKILL.md - React Native 完整导航
- electron/SKILL.md - Electron SDK(桌面封装、认证/加入流程、模块控制器、原始数据)
- electron/SKILL.md - Electron 完整导航
- windows/SKILL.md - Windows SDK(C++ 桌面应用、原始媒体访问)
- windows/references/windows-reference.md - Windows 依赖、Visual Studio 设置、故障排查
- web/references/web.md - Web SDK(Component + Client View)
- web/references/web-tracking-id.md - Tracking ID 配置
功能
- references/authorization.md - SDK JWT 生成
- references/bot-authentication.md - Bot 使用的 ZAK、OBF 与 JWT 令牌对比
- references/breakout-rooms.md - 以编程方式管理分组讨论室
- references/ai-companion.md - 会议中的 AI Companion 控制
- references/webinars.md - Webinar SDK 功能
- references/forum-top-questions.md - 常见论坛问题模式(需覆盖的内容)
- references/triage-intake.md - 首先要询问什么(将模糊的问题报告转化为可解答的信息)
- references/signature-playbook.md - 特征/根因排查手册
- references/multiple-meetings.md - 加入多个会议 / 多个实例
- references/troubleshooting.md - 常见问题与解决方案
示例仓库
官方(由 Zoom 提供)
| 类型 | 仓库 | Stars |
|---|---|---|
| Linux Headless | meetingsdk-headless-linux-sample | 4 |
| Linux Raw Data | meetingsdk-linux-raw-recording-sample | 0 |
| Web | meetingsdk-web-sample | 643 |
| Web NPM | meetingsdk-web | 324 |
| React | meetingsdk-react-sample | 177 |
| Auth | meetingsdk-auth-endpoint-sample | 124 |
| Angular | meetingsdk-angular-sample | 60 |
| Vue.js | meetingsdk-vuejs-sample | 42 |
完整列表:请参阅 general/references/community-repos.md
资源
环境变量
- 标准化
.env键名以及每个值的获取位置,请参阅 references/environment-variables.md。
评论
支持 Markdown