微信消息文件发送skill
v1.0.0This skill provides integrated WeChat account management, message delivery, and file transmission capabilities. It supports querying current user account inf...
Like a lobster shell, security has layers — review code before you run it.
License
SKILL.md
微信账号消息发送 Skill
使用 OpenClaw 的微信集成功能,实现微信账号信息查询、会话管理、主动文本消息和文件发送功能。 调用时机:当用户需要查询当前微信账户信息,或主动向指定微信联系人/群组发送消息时,通过微信发送文件即可触发。
功能说明
本技能提供以下核心功能:
- 微信会话查询:使用 sessions_list 工具查询当前活跃的微信会话和对话信息。
- 主动文本消息发送:通过微信后端API向指定用户发送文本消息。
- 文件发送:通过微信后端API向指定用户或机器人发送多种格式的文件(如图片、视频、音频、文档)。
功能亮点
- 支持多账号管理
- 自动获取用户配置信息
- 完整的消息与文件发送反馈
- 跨平台兼容性(Windows/Linux/MacOS)
- 详细的调试信息输出
- 会话信息查询和管理
- 实时会话状态监控
- 自动路径检测,无需手动配置
- 支持广泛的文件格式(图片、视频、音频、文档、压缩包等)
使用方法
1. 会话查询功能
列出所有活跃会话
当用户要求列出所有会话时,调用 sessions_list 工具: sessions_list()
#### 找到当前对话
当用户要求找到我们之间的对话时:
# 获取所有会话
sessions_list()
# 过滤出微信渠道的会话
# 找到最新的或与当前对话匹配的会话
获取会话详情
使用 sessions_list 的参数来获取更详细的信息:
获取最近活跃的会话
sessions_list(activeMinutes=60, messageLimit=5)
### 2. 主动消息发送功能
#### 命令行调用方式
```bash
python scripts/main_send_msg <account_id> <message>
示例
python scripts/main_send_msg "6e2f83e62b99-im-bot" "这是发送的消息"
3. 文件发送功能 (新增)
本技能提供两种核心文件发送场景:
场景一:微信文件自我发送
- 使用场景:当用户要求将某个文件(如截图、结果文件等)通过微信发送给自己时触发。
- 执行流程:
- 通过微信会话查询功能,确认当前会话对应的机器人账号。
- 理解用户需要发送的文件(由用户提供或根据上下文生成)。
- 调用文件发送程序,将文件发送至用户微信。
场景二:微信文件推送发送
- 使用场景:当用户要求将某个文件通过微信发送给指定机器人时触发。
- 执行流程:
- 解析用户指令,确认需要发送的文件。
- 调用文件发送程序,将文件发送至目标机器人账号。
命令行调用方式
# 发送图片
python scripts/main_send_file.py "XXXXXXX-im-bot" "/home/测试图片.jpg"
# 发送视频
python scripts/main_send_file.py "XXXXXXX-im-bot" "/home/测试视频.mp4"
# 发送文档
python scripts/main_send_file.py "XXXXXXX-im-bot" "/home/测试文档.pdf"
# 发送音频
python scripts/main_send_file.py "XXXXXXX-im-bot" "/home/测试音频.mp3"
触发条件
当同时满足以下条件时,文件发送功能将被自动调用:
- 用户通过微信发送的消息非纯文本。
- 消息中携带附件(如图片、视频、文档等)。
- 用户明确要求"通过微信发送文件"或表达类似意图。
参数说明
1. 会话查询参数
| 参数名称 | 类型 | 描述 | 默认值 |
|---|---|---|---|
activeMinutes | 整数 | 查询指定分钟内活跃的会话 | 60 |
messageLimit | 整数 | 每个会话返回的消息数量 | 5 |
2. 消息发送参数
命令行参数
| 参数名称 | 类型 | 描述 | 必填 |
|---|---|---|---|
account_id | 字符串 | 微信账号唯一标识符(如:6e2f83e62b99-im-bot) | ✅ 是 |
message | 字符串 | 要发送的文本消息内容 | ✅ 是 |
3. 文件发送参数 (新增)
命令行参数
| 参数名称 | 类型 | 描述 | 必填 |
|---|---|---|---|
account_id | 字符串 | 微信账号唯一标识符(如:XXXXXXX-im-bot) | ✅ 是 |
file_path | 字符串 | 待发送文件的完整本地路径 | ✅ 是 |
注意事项
使用前准备
- 环境配置:确保已正确安装 OpenClaw 并完成微信账号登录。
- 账号配置:确保账号ID对应的配置文件存在于正确的位置。
- 依赖安装:确保已安装所需的 Python 依赖包(
requests,uuid,pathlib等)。
使用限制
- 消息格式:支持文本消息和多种格式的文件发送。
- 频率限制:请遵守微信API的调用频率限制,避免频繁发送。
- 账号状态:确保账号处于正常登录状态。
- 权限控制:发送消息和文件需要对应的权限配置。
- 文件限制:目前不支持发送整个文件夹,文件需携带完整路径。
约束与限制 (新增)
文件大小建议
| 文件类型 | 建议大小上限 |
|---|---|
| 图片 | ≤ 10 MB |
| 视频 | ≤ 20 MB |
| 其他文件 | ≤ 50 MB |
注:实际文件大小限制以微信官方API规定为准,超过限制可能导致发送失败。
已测试支持的文件格式
- 图片:jpg, png, gif, bmp 等
- 视频:mp4, mov, avi 等
- 音频:mp3, wav, m4a 等
- 文档:pdf, doc, docx, xls, xlsx, ppt, pptx, txt 等
- 压缩文件:zip, rar, 7z 等
配置文件位置
账号配置文件默认存放在以下位置:
- Windows:
C:\Users\用户名\.openclaw\openclaw-weixin\accounts - Linux/MacOS:
~/.openclaw/openclaw-weixin/accounts
自动路径检测
技能现在通过 get_openclaw_path() 函数实现自动路径检测:
- 优先检测环境变量
OPENCLAW_STATE_DIR - 如果未设置环境变量,使用默认路径
- 支持 Windows、Linux 和 macOS 平台
错误处理
常见错误及解决方法:
| 错误类型 | 可能原因 | 解决方法 |
|---|---|---|
| 路径不存在 | OpenClaw路径配置错误 | 检查 OpenClaw 是否正确安装 |
| 配置文件缺失 | 账号ID不存在或配置文件损坏 | 重新登录微信账号 |
| 网络请求异常 | 网络连接失败或API地址错误 | 检查网络连接和API地址配置 |
| 权限验证失败 | Token失效或权限不足 | 重新获取身份验证令牌 |
| 文件发送失败 (新增) | 文件路径错误、网络异常、API返回非零状态码、文件类型不支持或大小超限 | 检查文件路径与网络,查看错误日志,确认文件格式与大小 |
示例输出
会话查询示例
sessions_list 返回示例:
{
"sessions": [
{
"sessionKey": "openclaw-weixin:xxxxxxxx-22f75d8b",
"kind": "openclaw-weixin",
"lastMessage": "检查微信助手的账号ID",
"lastMessageTime": "2026-04-01T17:12:00Z"
}
]
}
消息发送示例
成功发送文本消息的输出:
==================================================
【微信消息发送测试】
目标用户: xxxxxxxx
客户端ID: openclaw-weixin:1735114630-abc123def
上下文Token: xxxxxxxx-22f75d8b
------------------------------
HTTP 状态码: 200
API 返回码 (ret): 0
✅ 消息发送成功!
服务器响应详情:
{
"ret": 0,
"msg": "success",
"data": {}
}
==================================================
文件发送示例 (新增)
成功发送文件的输出:
1. 准备上传参数...
准备成功,filekey: a1b2c3d4e5f67890..., aeskey: 0011223344556677...
2. 申请上传参数...
获取到upload_param: xyz123abc456def789...
3. 加密文件...
加密完成,原始大小: 102400, 加密后大小: 102416
4. 上传到CDN...
上传成功,encrypt_query_param: enc_param_abc123def456...
5. 发送文件...
HTTP 状态码: 200
API 返回码 (ret): 0
✅ 文件发送成功!
服务器响应详情:
{
"ret": 0,
"msg": "success",
"data": {}
}
版本历史
| 版本 | 更新日期 | 更新内容 |
|---|---|---|
| 4.0.0 | 2026-04-03 | 新增文件发送功能,支持图片、视频、音频、文档、压缩文件等多种格式文件发送。 |
| 3.0.0 | 2026-04-02 | 新增主动消息发送功能,支持向指定用户发送消息;添加自动路径检测功能 |
| 2.0.0 | 2026-04-01 | 改用sessions_list工具查询会话信息 |
| 1.0.0 | 2026-04-01 | 初始版本发布,支持微信账号信息查询 |
技术说明
工作原理
会话查询原理
- 调用 OpenClaw 的 sessions_list 工具
- 获取所有活跃会话信息
- 过滤出微信渠道的会话
- 返回会话详细信息
消息发送原理
- 根据账号ID查找对应的配置文件
- 读取配置文件中的连接参数
- 构建符合微信API规范的请求
- 发送HTTP请求到微信后端
- 处理响应并显示结果
文件发送原理 (新增)
- 根据账号ID查找对应的配置文件,获取必要的连接参数。
- 读取并验证本地文件,进行加密和上传参数准备。
- 将文件上传至CDN,获取文件访问参数。
- 调用微信API,发送包含文件访问信息的消息到指定会话。
- 处理API响应,返回发送结果。
自动路径检测原理
def get_openclaw_path():
"""获取OpenClaw安装路径,支持Windows、Linux、MacOS"""
# 优先使用环境变量指定的路径
state_dir = os.environ.get('OPENCLAW_STATE_DIR')
if state_dir and os.path.exists(state_dir):
return Path(state_dir)
# 默认路径
home = Path.home()
if sys.platform == 'win32':
# Windows: C:\Users\用户名\.openclaw
return home / '.openclaw'
else:
# Linux/MacOS: ~/.openclaw
return home / '.openclaw'
架构设计
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 会话查询模块 │ │ 账号信息查询 │────▶│ 消息发送模块 │
└─────────────────┘ └──────────────────┘ └──────────────────┘
▲ ▲ ▲
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 错误处理 │ │ 配置文件管理 │ │ 网络请求处理 │
└─────────────────┘ └──────────────────┘ └──────────────────┘
▲ ▲ ▲
│ │ │
▼ ▼ ▼
┌─────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 自动路径检测 │ │ 环境变量检测 │ │ 文件处理模块(新增)│
└─────────────────┘ └──────────────────┘ └──────────────────┘
核心依赖
requests: HTTP请求库json: JSON数据处理time: 时间戳管理base64: 编码解码os: 操作系统交互uuid: 唯一ID生成pathlib: 路径管理sys: 系统级操作
部署说明
1. 目录结构
wechat-account-send/ ├── SKILL.md # 技能文档 ├── scripts/ │ ├── main_send_msg # 文本消息发送主程序 │ └── main_send_file.py # (新增) 文件发送主程序 └── (其他配置文件)
2. 自动路径检测
技能现在支持自动路径检测,无需手动配置环境变量。但如果需要自定义 OpenClaw 路径,可以设置以下环境变量:
# Windows
set OPENCLAW_STATE_DIR=C:\path\to\your\openclaw
# Linux/MacOS
export OPENCLAW_STATE_DIR=/path/to/your/openclaw
安全注意事项
- 配置文件保护:账号配置文件包含敏感信息,请勿泄露。
- 代码执行安全:确保脚本来源可信,避免执行恶意代码。
- API权限控制:定期检查和更新API权限配置。
- 文件安全:发送文件时,请确保文件来源安全可靠,不包含恶意内容。
使用场景
原始功能使用场景
- 检查微信助手的会话信息
- 找到当前对话的 sessionKey
- 查询所有活跃的会话列表
- 监控会话的实时状态
- 自动向微信用户发送通知或提醒文本消息
新增功能使用场景 (文件发送)
- 将本地生成的截图、报告、日志文件通过微信发送给自己。
- 将处理完成的图片、视频、音频或文档发送给指定的同事或机器人账号。
- 集成到自动化流程中,自动推送生成的文件结果。
Files
3 totalComments
Loading comments…
