executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
wecomcli-message何时用:仅当用户明确指向企业微信(给企微同事/群发消息、查企微会话)时使用;泛指发消息默认走本地通讯工具,邮件走 wecomcli-email。查询可发消息的聊天会话范围,向单聊/群聊发送文本、Markdown、图片、文件、语音、视频消息。
Independent GitHub snapshot · Automated classification · Original documentation governs
执行任何
wecom-cli命令前,必须先读取并完成wecomcli-shared技能的公共前置检查。
wecom-cli identity whoami 获取授权人ID,可作为 chat_id 使用,无需调用 sessions list。sessions list 返回结果中 → 告知用户当前只能向最近活跃的会话或授权人发送调用依赖技能前,必须先完整读取对应 SKILL.md。
| 依赖技能 | 触发场景 | 数据流向 |
|---|---|---|
wecomcli-media | 发送图片、文件、语音或视频时只有本地文件路径,没有可直接复用的 media_id | 包含媒体上传接口,如没有已有的 media_id,必须先阅读该技能获取 media_id。media upload 以本地 file_path 上传,type 为可选入参(image/voice/video/file);发送时以上传响应返回的 type 对齐 msg_type |
wecom-cli message aibot sessions list
| 字段 | 类型 | 说明 |
|---|---|---|
sessions | array | 会话列表,按最后一条消息时间从新到旧排序,具体数量以实际回包为准 |
sessions[].chat_id | string | 会话 ID |
sessions[].chat_name | string | 群名称或单聊名称 |
sessions[].chat_type | string | single 单聊或 group 群聊 |
sessions[].last_msg_time | string | 最后一条消息时间,格式 YYYY-MM-DD HH:MM:SS |
sessions_count | integer | sessions 数组元素数量 |
chat_id 来源向授权人以外的用户发送消息,调用 wecom-cli message aibot send 前,需要先调用一次 sessions list,然后从本次返回的 sessions[] 中选定目标项,把该项的 chat_id 原样复制到 send.chat_id。
以下值都不能直接作为 send.chat_id:
chat_idwecomcli-contact 返回的 userid这些值最多只能作为匹配线索;最终发送参数必须重新取自本次 sessions list 的匹配项。
sessions[] 中按非空 chat_name 精确匹配;不能精确匹配需要向用户反问确认发送目标,唯一命中时从匹配项复制 chat_id。sessions[] 原始顺序选择用户明确指定的项。sessions[].chat_id 做完全相等校验;命中后仍从匹配项复制 chat_id,不能直接复用用户输入值。匹配结果处理:
sessions list,再用选定对象匹配当次返回值。chat_id 绕过限制。sessions_count=0 时停止发送,告知当前没有可发送的最近会话。chat_id。调用本接口前必须完成以下步骤:
wecom-cli message aibot sessions list获取 chat_id 或 wecom-cli identity whoami 获取授权人ID。sessions[].chat_id。media_id。在目标会话匹配成功前,不上传媒体,也不调用 send。
wecom-cli message aibot send --json '<JSON 参数>'
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
chat_id | string | 是 | 必须取自 wecom-cli identity whoami 或当前发送流程中刚调用的 sessions list 返回的目标 sessions[].chat_id |
msg_type | string | 是 | markdown / image / file / voice / video |
markdown | object | 条件必填 | 仅 msg_type="markdown" 时传 |
image | object | 条件必填 | 仅 msg_type="image" 时传 |
file | object | 条件必填 | 仅 msg_type="file" 时传 |
voice | object | 条件必填 | 仅 msg_type="voice" 时传 |
video | object | 条件必填 | 仅 msg_type="video" 时传 |
每次请求必须且只能携带一个与 msg_type 同名的内容对象。不要传空对象,也不要同时传多个消息对象。
markdown.content 必填,最长 20480 UTF-8 字节。普通文本也按 Markdown 发送。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "markdown",
"markdown": {
"content": "<markdown 消息内容>"
}
}'
image.media_id 必填,必须来自媒体上传接口上传后返回 type=image 的结果。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "image",
"image": {
"media_id": "<media_id>"
}
}'
file.media_id 必填,必须来自媒体上传接口上传后返回 type=file 的结果;文件名取上传时的原始文件名。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "file",
"file": {
"media_id": "<media_id>"
}
}'
voice.media_id 必填,必须来自媒体上传接口上传后返回 type=voice 的结果;源文件仅支持 AMR 格式,不能只改扩展名冒充 AMR。
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "voice",
"voice": {
"media_id": "<media_id>"
}
}'
| 字段 | 必填 | 说明 |
|---|---|---|
video.media_id | 是 | 来自媒体上传接口上传后返回 type=video 的结果 |
video.title | 否 | 最长 128 UTF-8 字节;省略时使用上传时的原始文件名 |
video.description | 否 | 最长 512 UTF-8 字节;省略时不展示描述 |
wecom-cli message aibot send --json '{
"chat_id": "<本次 sessions[].chat_id>",
"msg_type": "video",
"video": {
"media_id": "<media_id>",
"title": "产品演示",
"description": "本周版本的核心功能演示"
}
}'
用户没有提供视频标题或描述时直接省略对应字段,不传空字符串,也不追问非必填字段。
send 前都重新调用 sessions list 或 wecom-cli identity whoami,但连续发送中途上下文发生压缩时重新调用确保 chat_id 正确。chat_id、userid、media_id 都是内部调用值,禁止面向用户展示。wecom-cli。