wecomcli-meeting

wecomcli-meeting

Popular

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.

2.4Kstars
166forks
Updated 7/2/2026
SKILL.md
readonlyread-only
name
wecomcli-meeting
description

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-cli is the command-line tool provided by WeCom. All operations are performed by executing wecom-cli commands.

Overview

wecomcli-meeting provides complete management capabilities for WeCom meetings, including:

  1. Create scheduled meeting - Create a meeting with configurable parameters and invite participants
  2. Query meeting list - Query meeting IDs by user and time range (limit: current day ± 30 days, max 100)
  3. Get meeting details - Retrieve full meeting info by meeting ID
  4. Cancel meeting - Cancel a scheduled meeting
  5. 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-contact skill.

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-contact skill.

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 the wecomcli-contact skill.

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:

  1. Parse intent: Time and topic are provided; no invitees mentioned, leave empty and create directly.
  2. Call create command:
wecom-cli meeting create_meeting '{"title": "Weekly Sync", "meeting_start_datetime": "2026-03-18 15:00", "meeting_duration": 3600}'
  1. 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:

  1. Parse intent: Invitees present; query address book for userids.
  2. Address book query: Call wecomcli-contact skill to get members, filter by name.
wecom-cli contact get_userlist '{}'

Filter userlist for names containing "Zhang San" and "Li Si", get their userid.

  1. 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"]}}'
  1. 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:

  1. Determine time range: Calculate start and end of current week.
  2. 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}'
  1. Get details for each meeting:
wecom-cli meeting get_meeting_info '{"meetingid": "<meeting_id1>"}'
wecom-cli meeting get_meeting_info '{"meetingid": "<meeting_id2>"}'
  1. 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_cursor is not empty, use cursor parameter to fetch next page.


Workflow 4: Get Meeting Details

Example: User says "Show me details of the Tech Design Review meeting"

Steps:

  1. Locate meeting: Query meeting list and find target meeting by keyword.
  2. Get details:
wecom-cli meeting get_meeting_info '{"meetingid": "<target_meetingid>"}'
  1. 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:

  1. Determine range: Default to current day ± 30 days (API limit).
  2. 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}'
  1. Get details for each and match title keyword.
  2. Stop on match, display result:

#会议号: <meeting_code>

✅ Found meeting: "<meeting title>"

📅 Time: <start time>, Duration: <duration>
📍 Location: <location>
👥 Participants: <participant names>
🔗 Link: <meeting link>
  1. 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:

  1. Locate meeting: Query via list_user_meetings + get_meeting_info and match keyword.
  2. Execute cancel:
wecom-cli meeting cancel_meeting '{"meetingid": "<target_meetingid>"}'
  1. 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:

  1. Locate meeting: Query via list_user_meetings + get_meeting_info and match keyword.
  2. Get current invitees: Since set_invite_meeting_members is a full replacement, first get current members via get_meeting_info.
  3. Address book query: Call wecomcli-contact skill to get Wang Wu's userid.
wecom-cli contact get_userlist '{}'

Filter userlist for name containing "Wang Wu", get userid.

  1. Merge member list: Combine existing and new members (full replacement).
  2. Execute update:
wecom-cli meeting set_invite_meeting_members '{"meetingid": "<target_meetingid>", "invitees": [{"userid": "zhangsan"}, {"userid": "lisi"}, {"userid": "wangwu"}]}'
  1. 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-contact skill's get_userlist to get full member list, then filter by name/alias locally to get userid. This interface has no parameters and returns members visible to the current user (including userid, 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 via get_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_members replaces the entire list; get current members first before merging
  • Participants are limited to internal enterprise members; external users are not supported