
wecomcli-meeting
PopularWeCom meeting skill that supports creating scheduled meetings, querying meeting lists, retrieving meeting details, canceling meetings, and updating meeting members. Triggered when users need to create, schedule, view, find, cancel, delete, or modify meeting members.
WeCom meeting skill that supports creating scheduled meetings, querying meeting lists, retrieving meeting details, canceling meetings, and updating meeting members. Triggered when users need to create, schedule, view, find, cancel, delete, or modify meeting members.
WeCom Meeting Skill
wecom-cliis the command-line tool provided by WeCom. All operations are performed by executingwecom-clicommands.
Overview
wecomcli-meeting provides complete management capabilities for WeCom meetings, including:
- Create scheduled meeting - Create a meeting with configurable parameters and invite participants
- Query meeting list - Query meeting IDs by user and time range (limit: current day ± 30 days, max 100)
- Get meeting details - Retrieve full meeting info by meeting ID
- Cancel meeting - Cancel a scheduled meeting
- Update meeting invitees - Modify the participant list of a meeting
Command Invocation
Execute the specified command:
wecom-cli meeting <tool_name> '<json_params>'
Command Details
1. Create Scheduled Meeting (create_meeting)
Create a scheduled meeting with optional settings.
Command
wecom-cli meeting create_meeting '{"title": "<meeting title>", "meeting_start_datetime": "<start time>", "meeting_duration": <duration in seconds>}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
title |
string | Yes | Meeting title |
meeting_start_datetime |
string | Yes | Start time, format: YYYY-MM-DD HH:mm |
meeting_duration |
integer | Yes | Duration in seconds, e.g., 3600 = 1 hour |
description |
string | No | Meeting description |
location |
string | No | Meeting location |
invitees |
object | No | Invitees, format: {"userid": ["lisi", "wangwu"]} |
settings |
object | No | Meeting settings (see below) |
Invitee userids are obtained via the
wecomcli-contactskill.
settings fields:
| Parameter | Type | Description |
|---|---|---|
password |
string | Meeting password |
enable_waiting_room |
boolean | Enable waiting room |
allow_enter_before_host |
boolean | Allow participants to join before host |
enable_enter_mute |
integer | Mute on entry (0: off, 1: on) |
allow_external_user |
boolean | Allow external users |
enable_screen_watermark |
boolean | Enable screen watermark |
remind_scope |
integer | Reminder scope (1: none, 2: host only, 3: all members, 4: specific users, default: host only) |
ring_users |
object | Ring users, format: {"userid": ["lisi"]} |
Ring user userids are obtained via the
wecomcli-contactskill.
Response
{
"errcode": 0,
"errmsg": "ok",
"meetingid": "meeting ID string",
"meeting_code": "meeting code string",
"meeting_link": "meeting link URL",
"excess_users": ["invalid meeting account userids"]
}
| Field | Type | Description |
|---|---|---|
meetingid |
string | Meeting ID |
meeting_code |
string | Meeting code, display as a standalone line at the beginning of the reply in format #会议号: xxx-xxx-xxx (separated by - every 3 digits) |
meeting_link |
string | Meeting link |
excess_users |
array | Userids of invalid meeting accounts, only returned for professional plan enterprises when some participants lack valid accounts |
2. Query Meeting List (list_user_meetings)
Query the list of meeting IDs for a specified user within a time range.
Command
wecom-cli meeting list_user_meetings '{"begin_datetime": "2026-03-01 00:00", "end_datetime": "2026-03-31 23:59", "limit": 100}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
begin_datetime |
string | No | Start time, format: YYYY-MM-DD HH:mm |
end_datetime |
string | No | End time, format: YYYY-MM-DD HH:mm |
cursor |
string | No | Pagination cursor for next page |
limit |
integer | No | Items per page, max 100 |
Limit: Time range only supports current day ± 30 days.
Response
{
"errcode": 0,
"errmsg": "ok",
"next_cursor": "pagination cursor, empty if no more",
"meetingid_list": ["meeting_id_1", "meeting_id_2"]
}
| Field | Type | Description |
|---|---|---|
meetingid_list |
array | List of meeting IDs |
next_cursor |
string | Next page cursor, empty if no more |
3. Get Meeting Info (get_meeting_info)
Retrieve full details of a meeting by meeting ID.
Command
wecom-cli meeting get_meeting_info '{"meetingid": "<meeting_id>"}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
meetingid |
string | Yes | Meeting ID, obtained via list_user_meetings |
meeting_code |
string | No | Meeting code |
sub_meetingid |
string | No | Sub-meeting ID |
Response
For full response structure and field descriptions, see references/response-get-meeting-info.md
Key fields:
| Field | Type | Description |
|---|---|---|
title |
string | Meeting title |
meeting_start_datetime |
string | Start time |
meeting_duration |
integer | Duration (seconds) |
status |
integer | Status (1: pending, 2: in progress, 3: ended, 4: cancelled, 5: expired) |
meeting_type |
integer | Type (0: one-time, 1: recurring, 2: WeChat exclusive, 3: Rooms screencast, 5: personal meeting ID, 6: webinar) |
meeting_code |
string | Meeting code |
meeting_link |
string | Meeting link |
description |
string | Description |
location |
string | Location |
attendees.member[].status |
integer | Attendance status (1: attended, 2: not attended) |
4. Cancel Meeting (cancel_meeting)
Cancel a scheduled meeting.
Command
wecom-cli meeting cancel_meeting '{"meetingid": "<meeting_id>"}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
meetingid |
string | Yes | Meeting ID, obtained via list_user_meetings + get_meeting_info |
Response
{
"errcode": 0,
"errmsg": "ok"
}
5. Update Meeting Invitees (set_invite_meeting_members)
Update the invitee list of a meeting (full replacement).
Command
wecom-cli meeting set_invite_meeting_members '{"meetingid": "<meeting_id>", "invitees": [{"userid": "lisi"}, {"userid": "wangwu"}]}'
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
meetingid |
string | Yes | Meeting ID, obtained via list_user_meetings + get_meeting_info |
invitees |
array | Yes | List of invitees, each item contains userid field |
Note: invitees is a full replacement; the provided list replaces the existing member list.
Invitee userids are obtained via thewecomcli-contactskill.
Response
{
"errcode": 0,
"errmsg": "ok"
}
Typical Workflows
Workflow 1: Simple Create (No Invitees)
User intent: "Schedule a meeting for tomorrow at 3 PM, topic is weekly sync, duration 1 hour"
Steps:
- Parse intent: Time and topic are provided; no invitees mentioned, leave empty and create directly.
- Call create command:
wecom-cli meeting create_meeting '{"title": "Weekly Sync", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600}'
- Display result:
#会议号: <meeting_code>
✅ Meeting created successfully!
📅 <meeting title>
🕐 Time: <start time>, Duration: <duration>
🔗 Link: <meeting link>
Workflow 2: Create with Invitees, Location, and Description
User intent: "Schedule a meeting for tomorrow at 3 PM, topic is tech design review, invite Zhang San and Li Si, location is 3rd floor meeting room, duration 1 hour"
Steps:
- Parse intent: Invitees present; query address book for userids.
- Address book query: Call
wecomcli-contactskill to get members, filter by name.
wecom-cli contact get_userlist '{}'
Filter userlist for names containing "Zhang San" and "Li Si", get their userid.
- Create meeting (do not expose internal IDs):
wecom-cli meeting create_meeting '{"title": "Tech Design Review", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600, "location": "3rd Floor Meeting Room", "invitees": {"userid": ["zhangsan", "lisi"]}}'
- Display result:
#会议号: <meeting_code>
✅ Meeting created successfully!
📅 <meeting title>
🕐 Time: <start time>, Duration: <duration>
👥 Participants: <participant names>
🔗 Link: <meeting link>
Workflow 3: Query Meeting List
Example: User says "Check what meetings I have this week"
Steps:
- Determine time range: Calculate start and end of current week.
- Query meeting IDs:
wecom-cli meeting list_user_meetings '{"begin_datetime": "2026-03-16 00:00", "end_datetime": "2026-03-22 23:59", "limit": 100}'
- Get details for each meeting:
wecom-cli meeting get_meeting_info '{"meetingid": "<meeting_id1>"}'
wecom-cli meeting get_meeting_info '{"meetingid": "<meeting_id2>"}'
- Display summary:
📋 This week's meetings (3 total):
1. 📅 Tech Design Review
🕐 2026-03-17 10:00 - 11:00
👥 Zhang San, Li Si, Wang Wu
2. 📅 Product Requirements Sync
🕐 2026-03-18 14:00 - 15:00
👥 Zhao Liu, Qian Qi
3. 📅 Friday Weekly
🕐 2026-03-21 09:00 - 10:00
👥 All team members
Pagination: If
next_cursoris not empty, usecursorparameter to fetch next page.
Workflow 4: Get Meeting Details
Example: User says "Show me details of the Tech Design Review meeting"
Steps:
- Locate meeting: Query meeting list and find target meeting by keyword.
- Get details:
wecom-cli meeting get_meeting_info '{"meetingid": "<target_meetingid>"}'
- Display result:
#会议号: <meeting_code>
📅 <meeting title>
🕐 Time: <start time>, Duration: <duration>
📍 Location: <location>
📝 Description: <description>
👤 Creator: <creator name>
👥 Participants: <participant names>
🔗 Link: <meeting link>
Workflow 5: Find Meeting by Keyword
Example: User says "When is the tech review meeting?"
Query strategy:
- Determine range: Default to current day ± 30 days (API limit).
- Fetch meeting list:
wecom-cli meeting list_user_meetings '{"begin_datetime": "2026-02-15 00:00", "end_datetime": "2026-04-16 23:59", "limit": 100}'
- Get details for each and match title keyword.
- Stop on match, display result:
#会议号: <meeting_code>
✅ Found meeting: "<meeting title>"
📅 Time: <start time>, Duration: <duration>
📍 Location: <location>
👥 Participants: <participant names>
🔗 Link: <meeting link>
- If not found: Inform user that no matching meeting was found within the ±30 day range.
Workflow 6: Cancel Meeting
Example: User says "Cancel tomorrow's Tech Design Review meeting"
Steps:
- Locate meeting: Query via
list_user_meetings+get_meeting_infoand match keyword. - Execute cancel:
wecom-cli meeting cancel_meeting '{"meetingid": "<target_meetingid>"}'
- Display result:
✅ Meeting cancelled: Tech Design Review
Workflow 7: Update Meeting Members
Example: User says "Add Wang Wu to the Tech Design Review meeting"
Steps:
- Locate meeting: Query via
list_user_meetings+get_meeting_infoand match keyword. - Get current invitees: Since
set_invite_meeting_membersis a full replacement, first get current members viaget_meeting_info. - Address book query: Call
wecomcli-contactskill to get Wang Wu's userid.
wecom-cli contact get_userlist '{}'
Filter userlist for name containing "Wang Wu", get userid.
- Merge member list: Combine existing and new members (full replacement).
- Execute update:
wecom-cli meeting set_invite_meeting_members '{"meetingid": "<target_meetingid>", "invitees": [{"userid": "zhangsan"}, {"userid": "lisi"}, {"userid": "wangwu"}]}'
- Display result:
✅ Meeting members updated: Tech Design Review
👥 Current members: Zhang San, Li Si, Wang Wu
Complex Scenario Examples
Load on demand to avoid unnecessary examples:
| File | Scenario |
|---|---|
| references/response-get-meeting-info.md | Full response structure for get_meeting_info |
| references/example-security.md | Password, waiting room, external user restrictions |
| references/example-reminder.md | Ring reminders, specific user ringing |
| references/example-full.md | Full parameter scenario (mute, watermark, waiting room, etc.) |
Notes
- Information gathering: If time or topic is missing, ask concisely; if invitees not mentioned, leave empty
- Address book query: When participants are involved, first use
wecomcli-contactskill'sget_userlistto get full member list, then filter by name/alias locally to getuserid. This interface has no parameters and returns members visible to the current user (includinguserid,name,alias) - Direct creation: Create directly once time and topic are known; include invitees if provided, otherwise leave empty. Do not ask for confirmation unless necessary
- Time format: Always use
YYYY-MM-DD HH:mm - Meeting list time range: Only supports current day ± 30 days
- Get details requires two steps: First get meeting IDs via
list_user_meetings, then get details viaget_meeting_info - Locate meeting: For cancel or update operations, first locate the target meeting's meetingid via query
- Member update is full replacement:
set_invite_meeting_membersreplaces the entire list; get current members first before merging - Participants are limited to internal enterprise members; external users are not supported





