Install
openclaw skills install weixin-send主动向微信 ClawBot 用户推送文本消息。作为 openclaw-weixin 插件 message 工具的兜底方案,仅在其不可用时使用。
openclaw skills install weixin-send⚠️ 本 skill 是兜底方案,仅在 openclaw-weixin 插件原生能力不足时使用。
| 优先级 | 方式 | 前提条件 | 适用场景 |
|---|---|---|---|
| ✅ 首选 | message(action=send, ...) | tools.profile = full(含 group:messaging) | 当前会话 / 跨 agent 发消息/图片/文件 |
| ⚠️ 兜底 | weixin-send (本 skill) | 无限制 | message 工具不可用时(profile 不满足 / 非 agent 环境) |
只有当 openclaw-weixin 插件确实无法完成时才用本 skill:
✅ 已验证:跨 agent session(如飞书 session)中可以用
message(action=send, channel=openclaw-weixin, target=用户ID@im.wechat, message="内容")直接发微信。⚠️ 前提:tools.profile 需为
full(或包含group:messaging),否则 message 工具不可用,此时回退到 weixin-send。
message 工具OpenClaw 的 openclaw-weixin 插件支持微信消息收发,但只在用户主动发消息时才能回复。无法从 cron 定时任务、其他 agent session、或后台脚本中主动向用户推送消息。
本 skill 通过直接调用微信 ilink API 绕过这一限制,实现从任意 session/脚本主动向微信用户发消息。
| 条件 | 说明 |
|---|---|
| openclaw-weixin 通道 | 已通过 openclaw channels login --channel openclaw-weixin 登录 |
| Python | 3.8+(纯标准库,无第三方依赖) |
| context_token | 用户近期与 bot 有过对话(否则消息可能无法送达) |
# 1. 列出可用账号
python3 send.py list
# 2. 发送消息
python3 send.py send "TARGET_USER_ID@im.wechat" "你好!这是一条主动推送的消息 🐾"
# 自动选择账号
python3 send.py send "TARGET_USER_ID@im.wechat" "消息内容"
# 指定 bot 账号(多账号场景)
python3 send.py send "TARGET_USER_ID@im.wechat" "消息内容" --account "your-account-id"
python3 send.py list
# 输出示例:
# your-account-id -> oXxx@im.wechat
from send import send_text, list_accounts
# 列出账号
accounts = list_accounts()
for a in accounts:
print(f"{a['accountId']}: {a['userId']}")
# 发送消息
result = send_text(
to_user="TARGET_USER_ID@im.wechat",
text="你好!"
)
if result["ok"]:
print(f"发送成功 (HTTP {result['status']})")
else:
print(f"发送失败: {result.get('error')}")
{
"name": "daily-reminder",
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Asia/Shanghai" },
"payload": {
"kind": "agentTurn",
"message": "运行命令发送提醒:python3 ~/.openclaw/workspace/skills/weixin-send/send.py send 'TARGET_USER_ID@im.wechat' '早安!新的一天开始了 🐾'"
}
}
Agent 在对话中可以直接 exec 调用:
python3 ~/.openclaw/workspace/skills/weixin-send/send.py send \
"TARGET_USER_ID@im.wechat" "任务已完成 ✅"
{
"ok": true,
"status": 200
}
| 字段 | 说明 |
|---|---|
ok | 是否成功(HTTP 2xx) |
status | HTTP 状态码 |
error | 失败时的错误信息 |
┌─────────────────┐ ┌──────────────────────┐ ┌──────────┐
│ Agent / Cron │────▶│ send.py │────▶│ 用户微信 │
│ (任意 session) │ │ ilink/bot/sendmessage│ │ │
└─────────────────┘ └──────────┬───────────┘ └──────────┘
│
读取本地 token
│
┌──────────────▼──────────────┐
│ ~/.openclaw/openclaw-weixin │
│ /accounts/*.json │
└─────────────────────────────┘
ilinkai.weixin.qq.com/ilink/bot/sendmessage 接口~/.openclaw/openclaw-weixin/accounts/ 自动读取检查 context_token:
cat ~/.openclaw/openclaw-weixin/accounts/*.context-tokens.json
如果目标用户没有 token 记录,需要该用户先在微信里给 bot 发一条消息。
python3 send.py list # 查看所有账号
python3 send.py send "TARGET@im.wechat" "msg" --account "specific-account-id"
不能。 微信 ilink bot 平台对第三方 bot 不开放文件下载能力。消息能发出但客户端无法下载。如需发送文件,可通过其他通道(如元宝)实现。