Skip to content
Back to skills

ezjoin-meeting-skill

ASecurity

EzyJoin 智慧会议操作技能 - 预约会议室、创建/取消会议、查询会议日程与 AI 纪要、企业知识库检索

  • 279 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added September 8, 2026
ai-agents

Works with

  • mcp

Security analysis

A100/100

Scanned September 8, 2026

npx -y skills add infometa/workbuddyskills --skill skills --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of ezjoin-meeting-skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for ezjoin-meeting-skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/infometa-ezjoin-meeting-skill/badge)](https://www.skillsdirectory.com/skills/infometa-ezjoin-meeting-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: ezjoin-meeting-skill
description: EzyJoin 智慧会议操作技能 - 预约会议室、创建/取消会议、查询会议日程与 AI 纪要、企业知识库检索
version: "1.0.0"
author: "EzyJoin Team"
---

# EzyJoin 智慧会议 Skill

本 Skill 提供 EzyJoin 智慧会议平台的完整操作能力。所有操作通过 MCP Server 暴露的工具完成,无需拼接 URL 或设置请求头。

## 认证说明

- 用户需先完成 OAuth 授权(WorkBuddy 自动引导,浏览器登录 EzyJoin 账号后点击"允许")
- 授权后 WorkBuddy 自动携带 access_token,MCP Server 自动识别当前用户身份
- access_token 有效期 1 小时,过期后 WorkBuddy 自动用 refresh_token 续期(30 天),无需用户干预
- 若 refresh_token 也过期,提示用户重新授权即可
- **不要要求用户提供 userId**:当前用户身份已由授权自动确定,userId 参数由服务端自动注入

## 可用工具

### teamMembers - 查询团队成员

查询当前用户加入的所有团队及成员清单。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| teamId | integer | - | 团队ID,不传则返回所有团队 |

**使用示例**:
- 用户问"我有哪些团队/同事"时调用,无需参数
- 用户提到某团队名称时,先调用本工具拿到 teamId

### meetingList - 查询会议列表

查询团队成员(含自己)权限范围内参与的所有会议,含各种审核状态(审批中/已通过/无需审核/已驳回)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| teamId | integer | - | 仅查指定团队的会议 |
| creatorUserId | integer | - | 仅查指定创建人的会议 |
| subject | string | - | 会议主题模糊搜索,最大100字符 |
| start_time | string | - | 开始时间 >= 该时间,格式 Y-m-d H:i:s |
| end_time | string | - | 开始时间 <= 该时间,格式 Y-m-d H:i:s(跨度最多30天) |
| page | integer | - | 页码,默认1 |
| pageSize | integer | - | 每页数量,默认20,最大100 |

**使用示例**:
- 用户问"我今天的会议"→ 传 start_time/end_time 为当天 00:00:00~23:59:59
- 用户问"本周/本月会议安排"→ 按时间范围过滤
- 返回的 auditStatus 可直接判断是否在审批中:1=无需审核、2=审批中、3=已通过、4=已驳回

### meetingDetail - 查询会议详情

查询指定会议的详细信息(主题、时间、会议室、参会人等)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| meetingId | integer | ✅ | 会议ID |

**使用示例**:
- 用户问"XX会议的详情"→ 先用 meetingList 找到 meetingId,再调用本工具

### meetingTranscription - 查询会议转写

查询指定会议的转写内容(语音转文字记录)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| meetingId | integer | ✅ | 会议ID |

### meetingMinutes - 查询会议 AI 纪要

查询指定会议的 AI 纪要内容。type=4 为全文纪要(默认),其他类型为分段纪要:1=会议议程、2=会议决议、3=会议任务。当前用户无纪要时自动回退到该会议最新一份纪要(管理员可查看成员纪要)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| meetingId | integer | ✅ | 会议ID |
| type | integer | - | 纪要类型:4=全文纪要(默认), 1=议程, 2=决议, 3=任务 |

**使用示例**:
- 用户问"XX会议的纪要/会议记录"→ 先 meetingList 找 meetingId,再调用本工具(默认全文纪要)
- 用户问"会议有什么决议/任务"→ 传 type=2 或 type=3
- 会议尚无纪要时返回 content=null,应如实告知用户纪要尚未生成

### companyUsers - 搜索公司用户

搜索公司用户(扁平列表),支持按姓名/手机/邮箱/拼音模糊搜索。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| keyword | string | - | 搜索关键词,不传返回全部 |
| pageSize | integer | - | 每页数量,默认20,最大100 |

### inviteUserList - 查询可邀请参会人

查询可邀请为参会人的用户列表(按部门分组),用于创建会议前查找参会人。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| keyword | string | - | 搜索关键词(部门名或用户姓名/手机/邮箱) |

### buildingRoomTree - 查询楼宇/会议室树

查询当前公司下所有楼宇、区域、会议室的三级树结构。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| 无 | - | - | 直接调用即可 |

**使用示例**:
- 用户问"有哪些会议室"或预约前先查会议室 → 调用本工具,返回楼宇(building)→区域(area)→会议室(meetingRoom)结构,取 meetingRoom 的 id/value 作为 meetingRoomId

### meetingRoomAvailability - 查询会议室占用情况

查询指定时间段内会议室的占用情况(空闲/已占用及冲突会议),用于预约前判断可用性。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| startTime | string | ✅ | 开始时间,格式 Y-m-d H:i:s |
| endTime | string | ✅ | 结束时间,格式 Y-m-d H:i:s |
| meetingRoomId | integer | - | 会议室ID(可选,只查指定会议室) |
| buildingId | integer | - | 楼宇ID(可选,只查该楼宇下的会议室) |

**使用示例**:
- 预约前先调用本工具确认会议室空闲,若占用需如实告知用户并推荐其他可用会议室
- 用户说"帮我找明天下午空闲的会议室"→ 结合 buildingRoomTree + 本工具(不带 meetingRoomId)筛选

### meetingCreate - 创建会议

创建会议。type=1 线下日程(仅会议室),type=2 综合会议(会议室 + 线上视频会议)。支持周期会议(meetingType=1 + repeatType/repeatUntil)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| type | integer | - | 1=线下(默认), 2=综合会议 |
| meetingType | integer | - | 0=单次(默认), 1=周期会议 |
| repeatType | integer | 周期时必填 | 0=每天, 1=每周, 2=每月, 7=每个工作日 |
| repeatUntil | string | 周期时必填 | 重复截止时间,格式 Y-m-d H:i:s,最多向后1年 |
| repeatInterval | integer | - | 重复间隔,仅每周生效,默认1 |
| meetingRoomId | integer | ✅ | 会议室ID(从 buildingRoomTree 获取) |
| startTime | string | ✅ | 开始时间,格式 Y-m-d H:i:s |
| endTime | string | ✅ | 结束时间,格式 Y-m-d H:i:s |
| platform | integer | type=2 时必填 | 1=企微, 4=飞书, 5=腾讯会议 |
| password | string | - | 入会密码(最大20字符) |
| subject | string | - | 会议主题,最大50字,默认"未命名会议" |
| content | string | - | 会议描述/预约原因,最大500字 |
| inviteUserIds | integer[] | - | 参会人 userId 数组 |

**时间规则**(不满足会创建失败):
- startTime 必须晚于当前时间
- endTime 必须晚于 startTime
- 时长不少于 5 分钟

**使用示例**:
- "帮我预约明天下午 3 点到 4 点的会议室" → 先 buildingRoomTree 选会议室 → meetingRoomAvailability 确认空闲 → meetingCreate
- **创建后必须检查返回结果**:isError=true 或 code!=200 表示失败,必须如实把失败原因(msg)告知用户,禁止谎报"预约成功"

### meetingEdit - 更新会议

更新当前用户自己创建的未开始会议。只传需修改的字段,未传的保持不变。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| meetingId | integer | ✅ | 会议ID |
| subject | string | - | 新主题,最大50字 |
| content | string | - | 新描述,最大500字 |
| startTime | string | - | 新开始时间,格式 Y-m-d H:i:s |
| endTime | string | - | 新结束时间,格式 Y-m-d H:i:s |
| inviteUserIds | integer[] | - | 参会人 userId 数组(传此字段时替换全部参会人) |

**注意事项**:
- 只能修改自己创建的、未开始的会议
- 时间规则同创建会议
- 更新后必须检查返回结果,失败时如实告知用户原因

### meetingCancel - 取消会议

取消当前用户自己创建的未开始会议。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| meetingId | integer | ✅ | 会议ID |

**使用示例**:
- 用户说"取消 XX 会议" → 先用 meetingList 确认会议存在且可取消,再调用
- 调用后必须检查返回结果,失败时如实告知原因

### sendWeworkMessage - 发送企业微信消息

向公司成员发送企业微信消息。支持 text 文本和 textcard 卡片消息。收件人必须是当前用户同公司的有效用户。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| recipientUserIds | integer[] | ✅ | 收件人 userId 数组(至少1个,需为本公司用户) |
| msgType | string | ✅ | text=文本, textcard=卡片 |
| content | string | ✅ | 消息内容,最大2000字符 |
| title | string | textcard 时必填 | 卡片标题,最大100字符 |
| url | string | - | 卡片跳转链接,最大500字符 |

**使用示例**:
- 用户说"给张三发条企微消息说下午开会" → 先 companyUsers 找到张三 userId → 调用本工具
- 用户说"发个会议通知卡片给参会人" → msgType=textcard,title 填"会议通知",url 填会议链接

### sendEmail - 发送邮件

向公司成员发送邮件(通过企业微信邮箱发送)。收件人可通过 userId 或邮箱地址指定,至少需要一种。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| recipientUserIds | integer[] | - | 收件人 userId 数组(与 recipientEmails 至少填一个) |
| recipientEmails | string[] | - | 收件人邮箱地址数组(与 recipientUserIds 至少填一个) |
| ccUserIds | integer[] | - | 抄送人 userId 数组 |
| ccEmails | string[] | - | 抄送邮箱地址数组 |
| subject | string | ✅ | 邮件主题,最大200字符 |
| content | string | ✅ | 邮件正文,最大10000字符 |
| contentType | string | - | html 或 text(默认 text) |

**使用示例**:
- 用户说"给团队发封邮件" → 先 companyUsers/teamMembers 找到收件人 → 调用本工具
- 收件人指定:recipientUserIds 与 recipientEmails 至少填一种,否则工具会报错

### scheduledTaskCreate - 创建 AI 定时任务

创建一个 AI 助手定时任务,按指定频率自动执行提示词。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| title | string | ✅ | 任务标题,≤100字 |
| prompt | string | ✅ | 提示词,执行时发送给 AI 助手 |
| frequency | integer | ✅ | 1=每天 2=按间隔 3=单次 |
| executeTime | string | frequency=1 必填 | HH:MM |
| intervalHours | integer | frequency=2 必填 | 间隔小时数(1-24),从每天0点起算 |
| weekdays | integer[] | - | 执行日 1-7(1=周一 7=周天),不传=每天 |
| executeDate | string | frequency=3 必填 | Y-m-d H:i:s |
| validStartDate | string | - | 生效开始日期 Y-m-d |
| validEndDate | string | - | 生效结束日期 Y-m-d |

### scheduledTaskList - 查询 AI 定时任务

列出当前用户的 AI 助手定时任务。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| frequency | integer | - | 按频率筛选:1=每天 2=按间隔 3=单次 |

### scheduledTaskUpdate - 修改 AI 定时任务

修改当前用户的 AI 助手定时任务(仅传需修改的字段)。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| taskId | integer | ✅ | 任务ID |
| title | string | - | 新标题 |
| prompt | string | - | 新提示词 |
| frequency | integer | - | 1=每天 2=按间隔 3=单次 |
| executeTime | string | - | HH:MM |
| intervalHours | integer | - | 间隔小时数 |
| weekdays | integer[] | - | 执行日 1-7 |
| executeDate | string | - | Y-m-d H:i:s |
| validStartDate | string | - | Y-m-d |
| validEndDate | string | - | Y-m-d |

### scheduledTaskDelete - 删除 AI 定时任务

删除当前用户的 AI 助手定时任务。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| taskId | integer | ✅ | 任务ID |

### scheduledTaskPause - 暂停 AI 定时任务

暂停当前用户的 AI 助手定时任务,暂停后到点不再执行。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| taskId | integer | ✅ | 任务ID |

### scheduledTaskResume - 恢复 AI 定时任务

恢复当前用户已暂停的 AI 助手定时任务。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| taskId | integer | ✅ | 任务ID |

### knowledgeSearch - 搜索企业知识库

搜索企业知识库,返回文档标题和摘要。企业知识库文档(公司制度、流程规范、业务资料)始终包含在结果中。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| teamIds | integer[] | - | 团队ID数组,查这些团队下所有成员上传的文档 |
| meetingIds | integer[] | - | 会议ID数组,查这些会议的附件文档 |

**使用场景**:
- 用户询问公司制度、流程规范、业务资料、会议文档时使用
- 查询维度优先级:meetingIds > teamIds > 默认(只查当前用户自己的文档)

### knowledgeGet - 读取知识库文档全文

读取知识库中指定文档的原文全文。先调用 knowledgeSearch 拿到 docId 后再调用本工具。

**参数说明**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|:----:|------|
| docId | integer | ✅ | 文档ID(从 knowledgeSearch 返回结果获取) |

## 通用注意事项

- **会议操作流程**:预约会议前先查会议室(buildingRoomTree)→ 查占用(meetingRoomAvailability)→ 创建(meetingCreate);取消/改期先查列表(meetingList)确认 meetingId
- **如实反馈结果**:任何工具返回 isError=true 或 code!=200 时,必须把 msg 原样转达用户,禁止谎报成功
- **会议状态**:auditStatus=2 表示审批中,需等待审批通过;1=无需审核、3=已通过、4=已驳回
- **时间格式**:统一使用 Y-m-d H:i:s(如 2026-08-08 15:00:00)
- **权限边界**:只能操作当前用户自己创建或参与的会议;无权限时工具会返回明确错误
- **多租户**:每个用户只看到自己所属公司的数据,天然隔离
- **遇到 401/Token 过期**:提示用户重新授权,不要尝试绕过

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…