项目简介
OpenWA 是一款免费开源 WhatsApp API 网关,为开发者提供 REST API、Webhook、多会话管理和网页控制台。基于 NestJS 和 TypeScript 构建,支持 SQLite/PostgreSQL 和 Docker 部署。
README 预览
\n \n\n\nOpenWA\n\n Open Source WhatsApp API Gateway\n\n\n\n Features •\n Quick Start •\n Docs •\n API •\n Contributing\n\n\n\n \n \n \n \n \n \n\n\n---\n\n## ✨ Why OpenWA?\n\n**OpenWA** is a free, open-source WhatsApp API Gateway designed for developers who need full control over their messaging infrastructure—without vendor lock-in or hidden paywalls.\n\nBuilt on a **pluggable architecture**, OpenWA lets you swap database engines (SQLite/PostgreSQL), storage backends (Local/S3), and cache layers (Memory/Redis) without changing a single line of application code.\n\n| | |\n| ----------------------------- | ------------------------------------------------------------ |\n| 🔓 **100% Open Source** | No licensing fees, no feature locks, full source code access |\n| 🏗️ **Pluggable Architecture** | Swap adapters for database, storage, and cache via config |\n| 🖥️ **Full Dashboard** | Modern React UI for session, webhook, and API key management |\n| 🔹 **Multi-Session Ready** | Run multiple WhatsApp sessions concurrently on one instance |\n| 🐳 **Docker Native** | Production-ready with zero configuration |\n| 🔗 **n8n Integration** | Community nodes for workflow automation |\n\n---\n\n## 🎯 Features\n\n### Core Features\n\n| Feature | Status | Description |\n| ------------- | ------ | ------------------------------------ |\n| REST API | ✅ | Full WhatsApp API via HTTP endpoints |\n| Multi-Session | ✅ | Manage multiple WhatsApp accounts |\n| Webhooks | ✅ | Real-time events with HMAC signature |\n| Web Dashboard | ✅ | Visual management interface |\n| API Key Auth | ✅ | Secure API authentication |\n| Swagger Docs | ✅ | Interactive API documentation |\n\n### Messaging\n\n| Feature | Status |
常见问题 (3)
故障排除为什么 OpenWA Chats 仪表板不为已编辑的 WhatsApp 消息显示"edited"标记?
这是一个在 OpenWA 0.26.0(PR #1906)中修复的 bug。此前,当编辑消息到达时,网关仅更新存储的消息正文,而不记录已编辑标记,因此仪表板会显示新文本,但没有任何指示标识。升级到 OpenWA 0.26.0 或更高版本:该修复会在入站编辑路径和 REST 编辑路径的消息元数据中存储 edited 标记,Chats 会在时间戳旁显示本地化的已编辑指示标识,且在重新加载后依然保持。注意:升级前编辑的消息不带有该标记,因此不会追溯显示该指示标识。
故障排除为什么在 open-wa 中 POST /api 返回 404 "Cannot POST" 而不是 413 Payload Too Large 或 400 Bad Request?
在 open-wa 0.25.0(以及 Docker 镜像 ghcr.io/rmyndharis/openwa:0.25.0)中,/api 下的请求如果请求体超过 BODY_SIZE_LIMIT(默认 25mb)或包含无效 JSON,会错误地返回 404 "Cannot POST <path>",而不是 413 或 400。问题根源是 @nestjs/serve-static:当内置 dashboard 被提供服务时,它会注册一个 Express 错误处理器,将其排除路径(/api、/socket.io、/mcp)上的所有错误重写为 404。这会吞掉 body parser 在路由之前抛出的真实 413/400/415 错误。
修复方法:升级到 0.26.0,该版本已修复此问题(#1925)——超限的请求体现在返回 413,格式错误的 JSON 返回 400,嵌套超过 100 层的请求体和不支持的字符集也能正确返回 400/415。
0.25.0 上的临时解决方案:设置 SERVE_DASHBOARD=false,使其不提供 dashboard 构建;这样 serve-static 模块就不会安装其错误处理器,正确的状态码便会正常返回。请注意,请求体大小限制本身始终都在执行——只是状态码错了——因此升级只会改变返回的响应,而不会改变行为。
故障排除使用OpenWA WhatsApp自动化会导致我的账号被封禁吗?如何降低风险?
是的,使用非官方WhatsApp自动化存在账号封禁风险。有用户反映即使使用频率低且不发送垃圾信息仍遭封禁。为降低风险,请遵循OpenWA文档中的缓解策略:严格执行速率限制、在消息之间添加合理延迟、避免向未知号码批量发送消息、切勿重复使用相同消息模板。请查阅风险管理文档:https://github.com/rmyndharis/OpenWA/blob/main/docs/16-risk-management.md。注意:使用OpenWA进行扫描可能导致WhatsApp移除已关联设备。