这个项目能做什么

OpenWA 是一个免费、开源的 WhatsApp API 网关,提供 HTTP 端点和 webhook,用于收发 WhatsApp 消息,而无需依赖 Meta 的官方 Cloud API。它使用 NestJS、TypeScript 和 React 仪表盘构建,并且原生支持 Docker,便于部署。 架构 OpenWA 采用可插拔架构:数据库后端可以是 SQLite(零配置)或 PostgreSQL,存储和迁移使用本地文件系统或兼容 S3 的服务,缓存可选通过 Redis 实现。媒体文件以内联方式返回给 API 和 webhook 消费方,而不会自动持久化到存储中。 引擎 提供两种 WhatsApp 引擎,各有不同的取舍: - whatsapp-web.js:驱动真实的 headless Chromium 实例,模拟真实的 WhatsApp Web 流量,因此封号风险较低,但内存占用较高(每个会话约 300–500 MB)。 - Baileys:直接使用多设备 WebSocket 协议,内存占用较低(每个会话约 30–80 MB),但由于更容易被指纹识别,封号风险更高。 核心能力 - 多会话管理:在一个实例上同时运行多个 WhatsApp 账号。 - 消息收发:发送和接收文本、媒体(图片、视频、音频、文档)、表情回应和消息编辑;支持批量发送消息。 - 群组和频道:创建、加入、配置群组;管理标签;支持 WhatsApp Channels/新闻通讯。 - Webhook:实时事件,支持 HMAC 签名验证和可选的预分发过滤器。 - API 认证:operator 和 viewer 令牌,支持会话范围和聊天范围的访问控制,因此集成可以限制到特定会话或单个聊天。 - 通话处理:call.received 事件和按会话自动拒接(仅 Baileys)。 - 基础设施:面向 Kubernetes 的健康检查、后端之间的数据迁移、按会话代理支持、可配置的速率限制和 CIDR 白名单。 安全 生产 Docker 栈通过 dumb-init 和 gosu 以非 root 用户运行 Node 进程,在修复卷所有权后降低权限,并通过专用代理 sidecar 路由 Docker socket 访问,而不是直接挂载 socket。安全文档见 SECURITY.md。 集成 通过沙箱化集成框架,为 Chatwoot 和 Typebot 提供官方插件,并且存在用于 n8n 工作流自动化的社区节点。也支持 ioBroker 等第三方适配器。 警告 由于 OpenWA 通过逆向工程客户端而非 Meta 官方 API 连接,因此始终存在账号受限或封禁的非零风险。维护者建议使用一个你可以承受丢失的专用号码,逐步预热新账号,遵守速率限制,并为关键流程保留短信或电子邮件作为备用方案。在受监管环境(医疗、金融、欧盟/GDPR 场景)中,应改用官方 WhatsApp Cloud API。 快速开始 最快的方式是使用 Docker Compose:克隆仓库,运行 docker compose -f docker-compose.dev.yml up -d,然后在 http://localhost:2785 访问仪表盘和 API。生产部署可以通过 compose profiles 添加 PostgreSQL、Redis 和 MinIO。启用后,可在 /api/docs 使用交互式 Swagger 端点。