ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Activepieces Zoom 集成 Piece 全解:会议创建、更新、查找与注册人管理实战

Activepieces Zoom 集成 Piece 全解:会议创建、更新、查找与注册人管理实战 Activepieces Zoom 集成 Piece 全解会议创建、更新、查找与注册人管理实战【免费下载链接】activepiecesAI Agents MCPs AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces本指南以仓库中的 Zoom 官方集成 pieceactivepieces/piece-zoom为蓝本系统讲解其在 Activepieces 工作流中的定位、OAuth2 认证配置、四大会议操作动作创建 / 更新 / 查找 / 注册参会人的完整字段与底层调用逻辑并给出从源码构建到打包分发的完整链路。读完本文你将掌握如何基于该 piece 在自己的自动化流程中编排 Zoom 会议全生命周期以及如何看懂并二次构建这类社区 piece。一、Piece 概览Zoom 集成在 Activepieces 中的位置Zoom piece 是 Activepieces 社区目录中的官方集成之一位于 packages/pieces/community/zoom包名为activepieces/piece-zoom当前版本 0.7.2见 package.json。它的定位由 src/index.ts 中的声明可见显示名称Zoom描述Video conferencing, web conferencing, webinars, screen sharing分类PieceCategory.COMMUNICATION通信类最低支持版本0.30.0即需要 Activepieces 0.30.0 及以上版本才能加载维护者kanarelo、kishanprmr、MoShizzle、khaledmashaly、abuaboud、murex971该 piece 目前只暴露actions动作没有 triggers触发器意味着你无法用 Zoom 事件如会议开始主动触发流程只能在流程的某个步骤中主动调用 Zoom API。它依赖四个工作区包activepieces/pieces-commonHTTP 客户端、认证工具、activepieces/pieces-frameworkPiece/动作/属性框架、activepieces/core-piece-types与activepieces/core-utils。源码目录结构如下packages/pieces/community/zoom/ ├── README.md # 官方构建说明本指南的原始依据 ├── package.json ├── tsconfig.json / tsconfig.lib.json └── src/ ├── index.ts # Piece 定义、OAuth2 认证、动作注册 ├── i18n/ # 多语言翻译de/es/fr/ja/nl/pt/ru/vi/zh 等 └── lib/ ├── actions/ # 四个业务动作 自定义 API 调用 │ ├── create-meeting.ts │ ├── create-meeting-registrant.ts │ ├── find-meeting.ts │ └── update-meeting.ts └── common/ ├── models.ts # 请求/响应 TypeScript 模型 └── props.ts # 会议下拉列表、注册人属性组二、OAuth2 认证配置创建 Zoom 应用与授权作用域Zoom piece 使用标准的 OAuth2 授权码流程认证定义位于 src/index.ts授权端点https://zoom.us/oauth/authorize令牌端点https://zoom.us/oauth/token必填required: true即每个使用该 piece 的动作都要求先连接 Zoom 账号源码中内置了 Zoom 应用创建的完整指引description字段这是接入前必须完成的准备步骤登录 marketplace.zoom.usZoom Marketplace点击右上角Develop→Build App选择General App通用应用类型填写并复制Client ID与Client Secret配置Redirect URL后继续在左侧栏Scopes中为应用添加以下作用域meeting:write:meeting创建会议meeting:read:meeting读取会议详情meeting:read:list_meetings列出会议供下拉选择器使用meeting:update:meeting更新会议meeting:write:registrant创建会议注册人注意虽然代码中注释保留了scope: [meeting:write:admin, meeting:write]的备选写法但实际启用的是scope: []空作用域即不强制在授权请求中附加 scopes权限完全由 Zoom 应用后台配置的 Scopes 决定。因此第 5 步的 Scope 配置是认证能否成功的关键。在 Activepieces 界面中添加 Zoom 连接时输入上面获取的 Client ID 与 Client Secret 即可完成 OAuth 授权。授权后获得的access_token会以Authorization: Bearer token的方式注入到每次 API 请求中见下方各动作的authentication配置。三、核心动作详解ActionsPiece 注册了5 个动作src/index.ts4 个业务动作 1 个通用自定义 API 调用动作。每个动作都带有classificationREAD/WRITE与aiMetadata供 AI Agent 理解的语义描述说明 Activepieces 正在为 AI 编排场景优化 piece 的可理解性。3.1 Create Zoom Meeting创建会议定义于 src/lib/actions/create-meeting.ts动作名zoom_create_meeting分类WRITE通过POST https://api.zoom.us/v2/users/me/meetings创建会议返回 201 时直接返回响应体。输入字段字段类型必填说明topic短文本✅会议主题start_time短文本❌会议开始时间ISO 8601 日期时间duration数字❌会议时长分钟auto_recording下拉❌local本地录制/cloud云录制/none不录制audio下拉❌both电话VoIP/telephony仅电话/voip仅 VoIP/thirdParty第三方音频会议agenda长文本❌会议议程password短文本❌入会密码默认最长 10 字符仅允许字母数字及 - _ *pre_schedule复选框❌是否通过 GSuite 应用创建的预排会议schedule_for短文本❌代他人排期时填写对方的邮箱或用户 IDjoin_url长文本❌参会人加入链接作为入参字段存在默认值源码defaults对象当用户未显式提供时以下字段会自动填充const defaults { agenda: My Meeting, default_password: false, duration: 30, pre_schedule: false, settings: { allow_multiple_devices: true, approval_type: 2, audio: telephony, calendar_type: 1, close_registration: false, email_notification: true, host_video: true, join_before_host: false, meeting_authentication: true, mute_upon_entry: false, participant_video: false, private_meeting: false, registrants_confirmation_email: true, registrants_email_notification: true, registration_type: 1, show_share_button: true, host_save_video_order: true, }, timezone: UTC, type: 2, // 2 定时会议 };源码执行逻辑create-meeting.ts先将用户输入与默认值合并再把auto_recording与audio覆写到settings子对象随后剔除内部auth字段最后以 Bearer Token 发送 POST 请求。请求体模型对应MeetingMessageBody接口src/lib/common/models.ts该接口完整定义了settings下的全部可选子项如水印watermark、等待室waiting_room、焦点模式focus_mode、分组讨论室breakout_room、语言传译language_interpretation等即便 UI 未暴露模型层面也保留了扩展空间。3.2 Update Zoom Meeting更新会议定义于 src/lib/actions/update-meeting.ts动作名zoom_update_meeting分类WRITE通过PATCH https://api.zoom.us/v2/meetings/{meetingId}修改已有会议执行成功后返回{ success: true, message: Meeting updated successfully }。它的输入以zoomMeetingDropdown会议下拉选择器为核心用户直接从自己账号下选择要修改的会议无需手填会议 ID。可更新字段包括topic、start_timeISO 8601如2023-05-01T12:00:00Z、duration、timezone如UTC、America/New_York、agenda、password设置类复选框host_video主持人入会开视频、participant_video参会人入会开视频、join_before_host主持人未入会也可加入、mute_upon_entry入会静音、waiting_room开启等候室下拉类auto_recording、audio取值同创建动作实现上的关键细节源码采用仅提交非空字段的增量更新策略update-meeting.ts只把用户填写过的字段放入请求体避免覆盖未修改的设置复选框因需区分未设置与false统一用! undefined判断后写入settings子对象。从aiMetadata可见该动作被标记为幂等idempotent: true适合重复执行。3.3 Find Zoom Meeting查找会议定义于 src/lib/actions/find-meeting.ts动作名zoom_find_meeting分类READ通过GET https://api.zoom.us/v2/meetings/{meetingId}读取会议完整详情是唯一的只读动作幂等。输入字段meeting_id会议下拉选择器必填occurrence_id周期性会议的某次具体发生occurrence的 ID填了则只返回该次详情show_previous_occurrences复选框默认false置为 true 时返回周期性会议所有历史发生的详情返回体对应MeetingResponseBody接口src/lib/common/models.ts包含会议 ID、主持人邮箱、加入链接join_url、密码password、PMI、时区、议程、周期规则recurrence、跟踪字段tracking_fields以及完整的settings结构含全球拨入号码global_dial_in_numbers、认证域等。该动作典型用于先查询再决策的编排例如查出会议状态后再决定是否更新。3.4 Create Zoom Meeting Registrant创建注册人定义于 src/lib/actions/create-meeting-registrant.ts动作名zoom_create_meeting_registrant分类WRITE通过POST https://api.zoom.us/v2/meetings/{meetingId}/registrants为启用了注册机制的会议提交参会人报名成功201时返回注册响应。输入字段由getRegistarantProps()统一生成见 src/lib/common/props.ts字段类型必填说明meeting_id短文本✅会议 ID注意此处是手填文本而非下拉first_name短文本✅注册人名字last_name短文本❌注册人姓氏email短文本✅注册人邮箱address/city/state/zip/country短文本❌地址、城市、州/省、邮编、两字母国家代码phone短文本❌电话comments长文本❌注册人的问题与留言custom_questions对象❌自定义问题键为问题标题、值为回答industry/job_title/org短文本❌行业、职位、组织no_of_employees静态下拉❌员工规模1-20 / 21-50 / 51-100 / 101-500 / 500-1,000 / 1,001-5,000 / 5,001-10,000 / More than 10,000purchasing_time_frame静态下拉❌采购时间窗口Within a month / 1-3 months / 4-6 months / More than 6 months / No timeframerole_in_purchase_process静态下拉❌采购角色Decision Maker / Evaluator/Recommender / Influencer / Not involved实现细节custom_questions对象会在运行时被转换为 Zoom API 要求的{ title, value }[]数组create-meeting-registrant.ts。返回体RegistrationResponsemodels.ts包含注册 IDregistrant_id、加入链接join_url、参会人 PIN 码participant_pin_code等。该动作被标记为非幂等idempotent: false每次调用都会生成一条新注册记录。3.5 自定义 API 调用Custom API Call除了四个封装好的动作piece 还通过createCustomApiCallAction注册了一个通用动作src/index.ts它以https://api.zoom.us/v2为基础 URL自动把 OAuth2 的access_token映射为Authorization: Bearer token请求头。这意味着凡是 Zoom v2 REST API 支持的接口即使未被封装成动作你也可以在这个通用动作中直接填写端点路径与请求体调用——例如管理网络研讨会、用户、录制文件等极大地扩展了该 piece 的能力边界。四、会议下拉选择器分页拉取你的会议列表zoomMeetingDropdownsrc/lib/common/props.ts是更新与查找两个动作共用的动态属性。它借助refreshers: [auth]在认证状态变化时自动刷新选项其数据来源是GET https://api.zoom.us/v2/users/me/meetings且做了两点工程化处理强制类型过滤查询参数固定type: scheduled只展示定时会议排除即时会议与周期性会议分页拉取page_size: 300结合next_page_token循环请求直到没有下一页为止避免大数据量下选项缺失。值得注意的容错设计未连接账号时下拉被禁用并提示 Connect your Zoom account first.若拉取失败例如应用缺少meeting:read:list_meetings作用域下拉同样禁用并给出排障提示——这条错误提示正好与第二节中 Scope 配置步骤呼应。五、构建与打包从源码到可分发产物README.md给出的官方构建方式只有一个命令turbo run build --filteractivepieces/piece-zoom这是通过仓库根目录的 turbo.jsonTurborepo 任务编排执行的。拆解--filteractivepieces/piece-zoom的含义它只构建该 piece 及其依赖链即activepieces/pieces-common、activepieces/pieces-framework等工作区包避免全仓构建非常适合开发调试单个 piece。构建的实际过程由 package.json 中的脚本定义scripts: { build: tsc -p tsconfig.lib.json cp package.json dist/, bundle: node ../../../../dist/packages/cli/src/index.js pieces bundle, lint: eslint src/**/*.ts }build先用 TypeScript 编译器按 tsconfig.lib.jsonCommonJS 模块、outDir: ./dist、生成.d.ts声明文件、排除测试文件编译源码再把package.json复制进dist/保证产物目录自包含bundle调用 Activepieces CLI 的pieces bundle子命令将 piece 打包成可被运行时加载的分发包lint用 ESLint 检查src/**/*.ts的代码规范。构建产物dist/src/index.js即包的main入口见 package.json。依赖方面它完全基于工作区内部包无第三方运行时依赖tslib仅为 devDependency这保证了 piece 与 Activepieces 主程序的版本一致性。六、多语言与 AI 元数据面向全球化与 AI 编排的设计该 piece 还附带了一个完整的 i18n 目录包含德语de、西班牙语es、法语fr、日语ja、荷兰语nl、葡萄牙语pt、俄语ru、越南语vi与中文zh等 9 个翻译文件说明 Activepieces 的 piece 界面文案支持随产品语言切换本地化。同时每个动作都携带aiMetadata字段如创建会议动作的description与idempotent标记用自然语言描述动作的语义、使用场景与幂等性。这是 Activepieces 面向 AI Agent 编排方向的设计——让 LLM 能够理解每个动作做什么、何时用、能否重复执行从而在对话式或 Agent 式工作流中更准确地选配动作。七、实战编排建议基于以上源码事实可以推断出几个典型的 Zoom 自动化场景报名自动转会议用表单触发器接收参会人信息 →zoom_create_meeting_registrant自动报名 → 用返回的join_url发送确认邮件定时会议批处理zoom_create_meeting批量创建会议 →zoom_find_meeting校验创建结果 → 不满足条件时zoom_update_meeting修正开始时间或时长会议运维先用zoom_find_meeting查询配合occurrence_id定位周期会议的某次再按需zoom_update_meeting调整密码、录制方式或入会设置能力延伸四个封装动作覆盖不到的 Zoom 能力如网络研讨会、用户管理统一走createCustomApiCallAction通用动作以https://api.zoom.us/v2为基址直接调用。八、延伸阅读Piece 主入口与动作注册src/index.ts四个动作实现actions 目录请求/响应模型与下拉属性src/lib/common/models.ts、src/lib/common/props.ts构建配置package.json、tsconfig.lib.json了解 Activepieces 中 piece 的整体开发规范可参阅 packages/pieces/CLAUDE.md 与 brain/knowledge/pieces-engine/building-pieces.md其他社区 piece 的同类实现可对照 packages/pieces/community 目录下的任意子包【免费下载链接】activepiecesAI Agents MCPs AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows AI Agents • MCPs for AI Agents项目地址: https://gitcode.com/GitHub_Trending/ac/activepieces创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表