企业微信消息技能
用途
wecom-msg 用于通过 wecom_mcp 这个 MCP tool 与企业微信消息系统交互,支持查看会话、拉取聊天记录、下载消息中的多媒体文件以及发送文本消息。
前置条件
首次调用 wecom_mcp 前,必须按 wecom-preflight 技能执行前置条件检查,确保工具已加入白名单。所有操作均通过 wecom_mcp tool 调用,调用形式为 wecom_mcp call msg <接口名> '<json入参>'。
主要能力(接口列表)
get_msg_chat_list — 获取会话列表。按时间范围查询有消息的会话列表,支持分页。示例:wecom_mcp call msg get_msg_chat_list '{"begin_time": "2026-03-11 00:00:00", "end_time": "2026-03-17 23:59:59"}'
get_message — 拉取会话消息。根据会话类型和 ID 拉取指定时间范围内的消息记录,支持分页,支持 text/image/file/voice/video 消息类型,仅支持 7 天内。示例:wecom_mcp call msg get_message '{"chat_type": 1, "chatid": "zhangsan", "begin_time": "2026-03-17 09:00:00", "end_time": "2026-03-17 18:00:00"}'
get_msg_media — 获取消息文件内容。根据文件 ID 自动下载文件到本地,返回文件的本地路径(local_path)、名称、类型、大小及 MIME 类型,用于获取图片、文件、语音、视频等非文本消息的实际内容。示例:wecom_mcp call msg get_msg_media '{"media_id": "MEDIAID_xxxxxx"}'
send_message — 发送文本消息。向单聊或群聊发送文本消息。示例:wecom_mcp call msg send_message '{"chat_type": 1, "chatid": "zhangsan", "msgtype": "text", "text": {"content": "hello world"}}'
使用方式与核心规则
时间范围:所有时间参数使用 YYYY-MM-DD HH:mm:ss 格式;用户未指定时默认最近 7 天;开始时间不能早于当前时间 7 天前,也不能晚于当前时间;支持“昨天”“最近三天”等相对时间自动推算。
chatid 查找:当用户提供人名或群名而非 ID 时,先调用 get_msg_chat_list 获取会话列表(时间范围与目标查询一致),在 chats 中按 chat_name 匹配。精确匹配唯一结果直接使用;模糊匹配多个结果展示候选列表让用户选择;无匹配则告知用户未找到。chat_type 判断:get_msg_chat_list 返回中不含会话类型字段,需根据上下文推断,用户明确提到“群”时使用 chat_type=2,否则默认 chat_type=1(单聊)。
userid 转 username:先调用 wecom-contact get_userlist 获取用户列表,建立 userid 到 username 的映射;精确匹配显示 username,无匹配保持显示 userid。
强制交互步骤(涉及非文本消息下载时不可跳过):下载完成后必须主动向用户展示所有文件的完整路径和存放目录;告知位置后必须立即询问用户是否需要清理临时文件。
典型工作流
查看会话列表:确定时间范围,调用 get_msg_chat_list,展示会话名称、最后消息时间、消息数量;若 has_more 为 true,告知用户还有更多会话可继续查看。
查看聊天记录:确定时间范围,通过 chatid 查找规则确定 chatid 和 chat_type,调用 get_message 拉取消息列表,调用 wecom-contact 的 get_userlist 建立映射,统计非文本消息数量与类型,展示时将 userid 替换为可读姓名。文本消息格式为“姓名 [时间]: 内容”,图片、语音、视频分别为“姓名 [时间]:[图片]”“姓名 [时间]:[语音] 语音内容”“姓名 [时间]:[视频]”,文件消息额外带文件名称。存在非文本消息时,主动询问是否下载;用户确认后逐个调用 get_msg_media 获取 local_path,检查文件后缀,根据 content_type 与 name 判断并补全或修正后缀,确认文件大小大于 0;不要对下载的文件使用 MEDIA: 指令;随后必须主动展示文件位置并询问是否删除;若 next_cursor 不为空,告知用户还有更多消息可继续查看。
发送消息:通过 chatid 查找规则确定目标会话,发送前向用户确认发送对象和内容,确认后调用 send_message(msgtype 固定为 text),最后展示发送结果。
查看消息并回复:先执行“查看聊天记录”流程并复用已获取的 chatid 和 chat_type,展示消息后执行“发送消息”流程(需确认后再发送)。
错误处理与限制
时间范围超限时告知用户 7 天限制并调整为有效范围;会话未找到时明确告知用户;API 错误时展示具体错误信息,必要时重试;网络问题导致 HTTP 错误时主动重试最多 3 次。消息记录仅支持 7 天内;发送接口仅支持文本消息;获取消息文件内容依赖有效的 media_id。