Buktal / dudu
git clone https://github.com/Buktal/dudu.git
开源多渠道客服系统,支持自托管、统一消息接待与企业权限管理。Open-source, self-hosted customer support with a unified inbox for WeChat, Telegram, WhatsApp and more. Apache-2.0.
+12
stars, 24h · #3,001
+~84
stars, 7 days · #2,561
+~360
stars, 30 days · #2,310
50
★ total · +84% this week
14
forks · 0 open issues
Star history (as recorded here)
LanguageTypeScript
LicenseApache-2.0
Created2026-09-10 (1mo ago)
Last pushtoday
Watchers0
OwnerUser
GitHub topics
apache-2-0customer-servicecustomer-supportcustomer-support-platformjavamultichannelmysqlopen-sourcereactself-hostedspring-boottauritelegramtypescriptunified-inboxwebhookwechatwhatsapp
Links
- GitHub: github.com/Buktal/dudu
- Homepage: https://buktal.github.io/dudu/
- Releases · Issues · Hacker News mentions
README excerpt
# DuDu 嘟嘟|开源多渠道客服系统 **简体中文** | English **将多个渠道的消息集中到同一坐席工作台,支持在自己的服务器上部署。** DuDu 帮助客服团队统一接收渠道来信、查看会话历史、回复消息并维护来访资料。系统接入微信公众号、Telegram、WhatsApp 等平台的指定消息体系,按企业和用户组划分访问范围。 **体验接待导览** · 项目官网 · 部署与接入指南 *工作台界面示例,内容为演示数据。* ## 从哪里开始 | 您的目标 | 推荐入口 | | --- | --- | | 了解产品是否适合团队 | 接待导览:选择渠道来信、查看会话、模拟回复和查看来访资料 | | 部署并使用系统 | 本地运行,再按使用指南配置企业与渠道 | | 理解代码或参与开发 | 仓库组成、开发与参与及技术文档 | 导览采用固定示例数据,不连接服务端或真实渠道,是精简的产品介绍,并非真实在线试用。项目处于持续开发阶段,目前需要通过源码构建和自行部署使用,尚无正式发布包。 ## 团队如何使用 DuDu 1. **配置团队与渠道。** 平台管理员开通企业;企业管理员配置员工、用户组和渠道账号。 2. **接收并回复消息。** 坐席登录工作台,在授权范围内查看会话、读取历史并发送纯文本回复。 3. **保留接待上下文。** 有权限的员工共享来访标签与内部备注,为后续接待提供必要信息。 工作台提供专注、并排、卡片三种布局,共享会话数据与草稿,支持浏览器访问和 Tauri 桌面构建。**MockPulse 是可选的开发联调工具,运行客服系统无需启动它。** 各应用的功能与界面介绍:Desk · Console · Admin · MockPulse · Server。 ## 是否适合您的团队 DuDu 适合需要接入多个官方消息渠道、能够自行部署和维护系统、希望控制企业数据的团队。部署与渠道接入需要相应的开发和运维能力。 - **当前能力**:统一会话、搜索与筛选、历史记录、实时来信、纯文本回复、来访标签与内部备注,以及员工、渠道、企业和用户组权限管理。 - **当前限制**:暂不支持发送附件;接收非文本消息与读取媒体取决于具体渠道。不提供内置 OAuth 授权向导、自动连通检测或渠道健康监控。 - **上线准备**:部署方需完成渠道账号申请、平台审核、凭据配置与真实收发验证。参数填写完整不代表授权有效或生产环境已可收发。 已实现能力及验证范围见功能图谱。 ## 渠道与限制 目前已实现 **13 种渠道接入**。每种接入对应下表中的指定体系,不代表该平台所有产品、事件和收发能力均可用。 查看各渠道的接入体系与限制 | 渠道 | 当前接入体系 / 主要边界 | | --- | --- | | 微信公众号 | 明文回调;不支持公众号 AES 模式 | | 微信小程序 | 客服消息回调,支持明文与加密模式 | | 企业微信 | 自建应用 agent;不支持 aibot | | 钉钉 | HTTP 密文回调;不支持 Stream | | 飞书 | HTTP Webhook;可选加密配置 | | QQ | 机器人 Webhook;频道会话发送受限 | | 微博 | 粉丝服务消息;发送需已有授权令牌 | | 抖音 | 已实现的私信接入;发送需已有授权凭据 | | 小红书 | 小程序客服消息体系 | | 支付宝 | 生活号消息体系 | | 美团 | 合作中心推送;仅 HTTP、80/8080 入口,须保留实际公网 Host | | Telegram | Bot API Webhook;凭据轮换必须保持同一 Bot ID | | WhatsApp | Cloud API Webhook;发送受平台权限与会话规则约束 | 详细字段与准备条件见渠道配置说明。渠道事实库研究范围比正式接入更广,研究过不等于已经接入。 ## 仓库组成 | 子项目 | 使用者 / 职责 | 技术 | | --- | --- | --- | | DuduDesk | 坐席:接待、回复和来访资料 | React、TypeScript、Tauri 2 | | DuduConsole | 企业管理员:员工、用户组、渠道账号 | React、TypeScript | | DuduAdmin | 平台管理员:企业开通、运营概览和操作记录 | React、TypeScript | | DUDU Server | 认证、授权、持久化、渠道适配及 HTTP/WebSocket | Java 21、Spring Boot 3.5、MyBatis-Plus、MySQL | | MockPulse | 开发者:本地渠道回调模拟与协议联调 | React、Tauri 2、Rust | 各前端独立管理依赖,使用 Yarn 4、Vite、Tailwind CSS 和 shadcn。运行客服系统不需要启动 MockPulse;模拟平台回调时再使用它。 ## 本地运行 以下步骤用于本地开发环境。管理端与工作台支持浏览器访问,无需安装 Rust。命令中的端口是本节显式指定的本地端口。 ### 1. 准备环境 - Git、Java 21、Maven 3.9、Docker Compose。 - Node.js 22.12+;启用 Corepack,使用各子项目 `packageManager` 指定的 Yarn 4。 - 构建桌面端时,另按 Tauri 2 环境要求安装 Rust 和操作系统依赖。 [code] ### 2. 启动数据库和服务端 在仓库根目录启动开发 MySQL,再在同一终端启动 Server: [code] Server 监听 `8080`,Flyway 自动应用迁移。首次空库启动时创建平台管理员 **`admin` / `admin`**。Compose 的数据库口令及 Server 默认 JWT 密钥均仅用于本地开发;公开服务前必须更换,具体配置见 Server 部署说明。 ### 3. 开通企业,再登录控制台和工作台 分别开启三个终端,分别从仓库根目录运行: [code] [code] [code] 1. 打开 Admin,用本地平台管理员登录并开通企业,设置初始企业管理员,记录六位企业 ID。 2. 打开 Console,用企业 ID 和初始管理员登录,创建员工、用户组,添加成员,再接入渠道账号。 3. 打开 Desk,用企业 ID 和已分组员工登录。没有授权渠道账号时,空会话列表是正常状态。 4. 在渠道平台配置 Console 提供的回调地址;本地协议联调可使用 MockPulse。收到合法来信后,Desk 展示会话;回复还需要该渠道的发送凭据与平台权限。 三个前端开发服务器均将 `/api` 代理到本机 Server,Desk 另代理 `/ws`。生产 API 地址、WebSocket 与公开回调根地址的配置以各子项目 README 为准;上述启动命令不是生产部署方案。 ## 开发与参与 问题和改进建议请提交到 Issues。报告问题时附上子项目、版本或提交号、复现步骤、预期与实际行为,以及脱敏后的错误信息;不要上传渠道