🦞OpenClaw ClawBook

WhatsApp 接入

OpenClaw 通过 Baileys 库支持 WhatsApp Web 接入。Gateway 拥有 WhatsApp 会话,通过扫码关联设备登录。

快速开始

  1. 准备一个手机号码(推荐使用单独号码)。
  2. 在配置文件中添加 WhatsApp 渠道。
  3. 运行 openclaw channels login 扫码关联。
  4. 启动 Gateway。
{
  channels: {
    whatsapp: {
      dmPolicy: "allowlist",
      allowFrom: ["+8613800000000"]
    }
  }
}

手机号码选择

专用号码(推荐)

为 OpenClaw 使用单独的手机号码,路由清晰,体验最佳。理想搭配:备用 Android + eSIM,保持 Wi-Fi 和电源连接。 也可以在同一设备上安装 WhatsApp Business 使用不同号码。

个人号码(备选)

在自己的号码上运行 OpenClaw,启用 selfChatMode 通过"给自己发消息"测试。

{
  channels: {
    whatsapp: {
      selfChatMode: true,
      dmPolicy: "allowlist",
      allowFrom: ["+8613800000000"]
    }
  }
}

号码来源建议:本地运营商 eSIM 或预付费 SIM 卡。避免使用 TextNow、Google Voice 等虚拟号码,WhatsApp 会封锁这些。

登录与凭证

# 扫码登录(关联设备)
openclaw channels login

# 多账户登录
openclaw channels login --account work

# 登出
openclaw channels logout
  • 凭证保存在 ~/.openclaw/credentials/whatsapp/<accountId>/creds.json
  • 自动备份到 creds.json.bak
  • 登出只删除 WhatsApp 认证状态,不影响其他 OAuth 凭证

私聊策略

策略行为
pairing默认。未知用户收到配对码,审批后可对话
allowlist仅 allowFrom 中的 E.164 号码可对话
open任何人(需 allowFrom: ["*"])
disabled禁止私聊

你关联的 WhatsApp 号码是隐式信任的,跳过 dmPolicyallowFrom 检查。

群组

  • groupPolicyopen | allowlist(默认) | disabled
  • 激活模式:mention(默认,需 @提及)或 always(始终响应)
  • 群组历史上下文自动注入最近未处理的消息(默认 50 条)
  • 群组元数据缓存 5 分钟

在群组中发送 /activation always/activation mention 切换(仅会话级别)。

已读回执

默认情况下,Gateway 接受消息后自动标记为已读(蓝色勾号)。可按全局或账户级别禁用:

{
  channels: {
    whatsapp: {
      sendReadReceipts: false,
      accounts: {
        personal: { sendReadReceipts: false }
      }
    }
  }
}

自聊天模式始终跳过已读回执。

确认表情

收到消息时自动发送表情回应,在机器人生成回复之前给用户即时反馈:

{
  channels: {
    whatsapp: {
      ackReaction: {
        emoji: "👀",
        direct: true,
        group: "mentions"  // always | mentions | never
      }
    }
  }
}

媒体支持

  • 支持图片、视频、音频、文档的收发
  • 音频以 PTT 语音消息发送(OGG/Opus 格式最佳)
  • 图片超出大小限制时自动优化为 JPEG
  • 动画 GIF:需以 MP4 格式发送并设置 gifPlayback: true
  • 入站媒体上限 mediaMaxMb(默认 50 MB),出站上限 5 MB

多账户

一个 Gateway 可同时运行多个 WhatsApp 账户:

{
  channels: {
    whatsapp: {
      accounts: {
        personal: {
          dmPolicy: "allowlist",
          allowFrom: ["+8613800000000"]
        },
        work: {
          dmPolicy: "pairing",
          sendReadReceipts: false
        }
      }
    }
  }
}

常见问题

未关联 / 需要二维码登录

channels status 显示 linked: false。运行 openclaw channels login 重新扫码。

已关联但断开连接

运行 openclaw doctor 或重启 Gateway。如果持续,重新关联并检查 openclaw logs --follow

Bun 运行时不可靠

WhatsApp (Baileys) 在 Bun 上不可靠,请使用 Node 运行 Gateway。

注意事项

  • 发送出站消息需要 Gateway 运行中且监听器处于活跃状态
  • 出站文本按 textChunkLimit 分块(默认 4000 字符)
  • OpenClaw 不使用 Twilio/WhatsApp Business API(24 小时窗口限制不适合个人助手)
  • 重连退避策略可通过 web.reconnect 配置