菜单

Administrator
发布于 2026-05-20 / 1 阅读
0
0

OpenWA:免费开源的 WhatsApp API 网关 — 自建消息基础设施,告别供应商锁定

OpenWA:免费开源的 WhatsApp API 网关 — 自建消息基础设施,告别供应商锁定

项目介绍

OpenWA(仓库:rmyndharis/OpenWA)是一个免费、开源、可自托管的 WhatsApp API 网关,专为需要完全控制消息基础设施的开发者设计。它直接与付费的 WhatsApp Business API 提供商竞争,提供 MIT 许可证下的完整替代方案。

  • Stars: 4,499(今日 +1,870)
  • 语言: TypeScript(86.3%)
  • 许可证: MIT
  • 最新版本: v0.1.6(2026-05-17)
  • 官网: https://www.open-wa.org

核心价值主张

“没有供应商锁定,没有隐藏的付费墙——完全掌控你的消息基础设施。”

OpenWA 的核心创新在于其可插拔架构——你可以通过配置切换数据库引擎(SQLite/PostgreSQL)、存储后端(本地/S3)和缓存层(内存/Redis),而无需修改任何应用代码。

功能一览

所有功能除了 Contacts API 均已实现 ✅:

类别 核心功能
核心 REST API、多会话、Webhook(HMAC 签名)、完整 React 仪表盘、API Key 认证、Swagger 文档
消息 文本 / 媒体 / 回复、批量消息、投递与已读回执
高级 群组 API、WhatsApp Channel/Newsletter、标签、每会话代理、速率限制、CIDR 白名单、审计日志
基础设施 SQLite、PostgreSQL、Redis 缓存、S3/MinIO 存储、Docker Compose、健康检查(K8s 就绪)、数据迁移

快速上手

开发环境(Docker 推荐)

git clone https://github.com/rmyndharis/OpenWA.git
cd OpenWA
docker compose -f docker-compose.dev.yml up -d

生产部署

使用 docker-compose.yml 的 profiles 选择性部署:

# 完整生产栈
docker compose --profile full up -d

可用 profiles:postgres(PostgreSQL 数据库)、redis(Redis 缓存)、minio(S3 兼容存储)、with-dashboard(Web UI)、with-proxy(Traefik 反向代理)、full(全部服务)

API 使用示例

创建会话并获取二维码:

# 创建会话
curl -X POST http://localhost:2785/api/sessions \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{"name": "my-bot"}'

# 启动并获取二维码
curl -X POST http://localhost:2785/api/sessions/{sessionId}/start
curl http://localhost:2785/api/sessions/{sessionId}/qr

发送消息:

curl -X POST http://localhost:2785/api/sessions/{sessionId}/messages/send-text \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "chatId": "628123456789@c.us",
    "text": "Hello from OpenWA!"
  }'

设置 Webhook:

curl -X POST http://localhost:2785/api/sessions/{sessionId}/webhooks \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "url": "https://your-server.com/webhook",
    "events": ["message.received", "session.status"],
    "secret": "your-hmac-secret"
  }'

技术架构

层级 技术选型
运行时 Node.js 22 LTS
框架 NestJS 11.x
语言 TypeScript 5.x
WhatsApp 引擎 whatsapp-web.js
数据库 SQLite / PostgreSQL(TypeORM)
缓存 Redis(可选)
存储 本地 / S3 / MinIO
容器 Docker + Compose

项目结构

openwa/
├── src/
│   ├── main.ts                 # 入口
│   ├── app.module.ts           # 根模块
│   ├── config/                 # 配置
│   ├── common/                 # 共享工具(缓存、存储)
│   ├── core/                   # 插件钩子与系统
│   ├── engine/                 # WhatsApp 引擎抽象层
│   └── modules/
│       ├── session/            # 会话生命周期
│       ├── message/            # 收发消息
│       ├── webhook/            # 事件转发
│       ├── group/              # 群组管理
│       ├── auth/               # API 密钥安全
│       ├── infra/              # 基础设施管理
│       └── health/             # K8s 探针
├── dashboard/                  # React UI
├── docs/
└── docker-compose.yml

类似项目对比

项目 相似点 差异
WhatsApp Business API 官方 WhatsApp API 收费、需要企业认证、有调用限制;OpenWA 免费开源、完全可控
Baileys WhatsApp Web 协议实现 Baileys 是底层库,需要自己构建完整服务;OpenWA 是开箱即用的完整网关
WWebJS whatsapp-web.js 封装 OpenWA 底层也使用 whatsapp-web.js,但提供了完整的 REST API、Webhook、管理后台

结合当前技术背景的分析

WhatsApp 消息生态的开放化趋势

2026 年,WhatsApp 已经成为全球最重要的商业消息渠道之一,但官方的 Business API 存在高昂的使用成本和严格的审核流程。OpenWA 的爆发反映了开发社区对自建消息基础设施的强烈需求:

  1. 成本控制——免费开源替代商业 API,无需按消息数付费
  2. 数据主权——所有消息数据存储在自己的服务器上
  3. 定制化——可根据业务需求深度定制消息处理逻辑
  4. 隐私合规——完全控制数据流向,满足 GDPR 等合规要求

从"SaaS"到"自托管"的回归

OpenWA 的火爆也反映了 2026 年的一种技术趋势——开发者越来越倾向于可自托管的开源替代品来替代 SaaS 服务。这与 OpenHuman(替代闭源 AI 助手)、RuView(替代摄像头监控)等项目一脉相承。


更新记录(2026-05-20)

  • 首次上榜,当日 Stars 增长 1,870+
  • 总 Stars 达到 4,499
  • 最新版本 v0.1.6 于 2026-05-17 发布

评论