名称: whatsapp-ultimate
版本: 3.5.0
描述: "具备三重安全规则的 WhatsApp 技能。您的智能体仅在正确的聊天中,被正确的人@时才会发言。"
元数据:
openclaw:
emoji: "📱"
requires:
channels: ["whatsapp"]
您在 WhatsApp 上能做的所有事情,您的 AI 智能体同样可以做到。
本技能记录了通过 OpenClaw 原生渠道集成可用的所有 WhatsApp 功能。无需外部 Docker 服务,无需 CLI 封装器——仅通过 Baileys 直接使用 WhatsApp Web 协议。
openclaw whatsapp login)| 类别 | 功能 |
|---|---|
| 消息发送 | 文本、媒体、投票、贴纸、语音消息、GIF |
| 消息交互 | 反应、回复/引用、编辑、撤回 |
| 群组管理 | 创建、重命名、图标、描述、成员、管理员、邀请链接 |
总计:22 项独立操作
message action=send channel=whatsapp to="+34612345678" message="你好!"
message action=send channel=whatsapp to="+34612345678" message="看看这个" filePath=/path/to/image.jpg
支持格式:JPG, PNG, GIF, MP4, PDF, DOC 等。
message action=poll channel=whatsapp to="+34612345678" pollQuestion="什么时间?" pollOption=["下午3点", "下午4点", "下午5点"]
message action=sticker channel=whatsapp to="+34612345678" filePath=/path/to/sticker.webp
必须是 WebP 格式,建议尺寸 512x512。
message action=send channel=whatsapp to="+34612345678" filePath=/path/to/audio.ogg asVoice=true
关键: 语音消息请使用 OGG/Opus 格式。MP3 格式可能无法正常播放。
message action=send channel=whatsapp to="+34612345678" filePath=/path/to/animation.mp4 gifPlayback=true
请先将 GIF 转换为 MP4(WhatsApp 要求):
ffmpeg -i input.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4 -y
message action=react channel=whatsapp chatJid="34612345678@s.whatsapp.net" messageId="ABC123" emoji="🚀"
message action=react channel=whatsapp chatJid="34612345678@s.whatsapp.net" messageId="ABC123" remove=true
message action=reply channel=whatsapp to="34612345678@s.whatsapp.net" replyTo="QUOTED_MSG_ID" message="回复这条消息!"
message action=edit channel=whatsapp chatJid="34612345678@s.whatsapp.net" messageId="ABC123" message="更新后的文本"
message action=unsend channel=whatsapp chatJid="34612345678@s.whatsapp.net" messageId="ABC123"
message action=group-create channel=whatsapp name="项目团队" participants=["+34612345678", "+34687654321"]
message action=renameGroup channel=whatsapp groupId="123456789@g.us" name="新名称"
message action=setGroupIcon channel=whatsapp groupId="123456789@g.us" filePath=/path/to/icon.jpg
message action=setGroupDescription channel=whatsapp groupJid="123456789@g.us" description="第一季度项目团队聊天"
message action=addParticipant channel=whatsapp groupId="123456789@g.us" participant="+34612345678"
message action=removeParticipant channel=whatsapp groupId="123456789@g.us" participant="+34612345678"
message action=promoteParticipant channel=whatsapp groupJid="123456789@g.us" participants=["+34612345678"]
message action=demoteParticipant channel=whatsapp groupJid="123456789@g.us" participants=["+34612345678"]
message action=leaveGroup channel=whatsapp groupId="123456789@g.us"
message action=getInviteCode channel=whatsapp groupJid="123456789@g.us"
返回:https://chat.whatsapp.com/XXXXX
message action=revokeInviteCode channel=whatsapp groupJid="123456789@g.us"
message action=getGroupInfo channel=whatsapp groupJid="123456789@g.us"
返回:名称、描述、成员、管理员、创建日期。
WhatsApp 内部使用 JID(Jabber ID):
| 类型 | 格式 | 示例 |
|---|---|---|
| 个人 | <号码>@s.whatsapp.net |
34612345678@s.whatsapp.net |
| 群组 | <ID>@g.us |
123456789012345678@g.us |
当使用 to= 参数并传入电话号码时,OpenClaw 会自动转换为 JID 格式。
始终使用 OGG/Opus 格式:
ffmpeg -i input.wav -c:a libopus -b:a 64k output.ogg
将图片转换为 WebP 贴纸:
ffmpeg -i input.png -vf "scale=512:512:force_original_aspect_ratio=decrease,pad=512:512:(ow-iw)/2:(oh-ih)/2:color=0x00000000" output.webp
当收到入站消息时,在网关层面(模型推理之前)立即发送一条文本消息:
{
"channels": {
"whatsapp": {
"ackMessage": {
"text": "⚡",
"direct": true,
"group": "never"
}
}
}
}
| 字段 | 类型 | 默认值 | 描述 |
|---|---|---|---|
text |
字符串 | "" |
要发送的消息(空字符串 = 禁用) |
direct |
布尔值 | true |
在私聊中发送 |
group |
"always" / "mentions" / "never" |
"never" |
群聊中的行为 |
这与 ackReaction(发送表情反应)不同。ackMessage 发送一个独立的消息气泡——在 WhatsApp Web 中,即使反应翻转不可见,此消息也可见。
WhatsApp 有反垃圾邮件措施。请避免:
- 向大量联系人批量发送消息
- 快速连续发送消息
- 向未先向您发送消息的联系人发送消息
要进行反应/编辑/撤回操作,您需要消息 ID。入站消息的事件负载中包含此 ID。对于您自己发送的消息,发送响应中包含该 ID。
| 功能 | whatsapp-ultimate | wacli | whatsapp-automation | gif-whatsapp |
|---|---|---|---|---|
| 原生集成 | ✅ | ❌ (CLI) | ❌ (Docker) | N/A |
| 发送文本 | ✅ | ✅ | ❌ | ❌ |
| 发送媒体 | ✅ | ✅ | ❌ | ❌ |
| 投票 | ✅ | ❌ | ❌ | ❌ |
| 贴纸 | ✅ | ❌ | ❌ | ❌ |
| 语音消息 | ✅ | ❌ | ❌ | ❌ |
| GIF | ✅ | ❌ | ❌ | ✅ |
| 反应 | ✅ | ❌ | ❌ | ❌ |
| 回复/引用 | ✅ | ❌ | ❌ | ❌ |
| 编辑 | ✅ | ❌ | ❌ | ❌ |
| 撤回 | ✅ | ❌ | ❌ | ❌ |
| 创建群组 | ✅ | ❌ | ❌ | ❌ |
| 群组管理 | ✅ (完整) | ❌ | ❌ | ❌ |
| 接收消息 | ✅ | ✅ | ✅ | ❌ |
| 双向聊天 | ✅ | ❌ | ❌ | ❌ |
| 外部依赖 | 无 | Go 二进制文件 | Docker + WAHA | ffmpeg |
ackMessage —— 网关级即时消息确认。在入站消息到达时(在任何模型推理之前)发送一条可配置的文本消息(例如 ⚡)。触发速度与 ackReaction(表情翻转)相同。在 WhatsApp Web 中,当反应翻转不可见时,此功能可作为视觉提示,用以区分您的消息和机器人回复。@lid 和 @s.whatsapp.net 两种 JID 格式的消息。resolveChatJids() 交叉引用聊天、联系人和消息表,以发现给定聊天筛选器的所有 JID 别名。您的智能体
↓
OpenClaw 消息工具
↓
WhatsApp 渠道插件
↓
Baileys (WhatsApp Web 协议)
↓
WhatsApp 服务器
无需外部服务。无需 Docker。无需 CLI 工具。直接协议集成。
MIT —— OpenClaw 的一部分