# SmartCall **Repository Path**: gdzWork/SmartCall ## Basic Information - **Project Name**: SmartCall - **Description**: 结合了传统呼叫中心和大模型实现的大模型AI客服呼叫中心。 基于JAVA17、SpringBoot3+开发。 🔝 🔝 记得上边点个star 关注更新。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://qidiangk.com - **GVP Project**: No ## Statistics - **Stars**: 61 - **Forks**: 31 - **Created**: 2026-06-30 - **Last Updated**: 2026-07-03 ## Categories & Tags **Categories**: erp **Tags**: 呼叫中心, AI客服, Java, 人工智能, 大模型 ## README
AI 驱动的智能客服呼叫中心系统,让每一通电话都被智慧对待
官网 | 🎯 在线演示 | 功能特性 | 系统架构 | 技术栈 | 快速开始
**核心调用链路**:
- **语音通话**:SIP 话机 → Asterisk PBX(SIP 协议)→ AGI 触发 IVR 流程 → smart-aster 执行节点链
- **API 请求**:Web 前端 → Nginx → Gateway(路由 / 鉴权)→ 各业务服务
- **IVR 节点执行**:ASR/TTS 节点 → WebSocket → 语音服务(通义千问 DashScope / 阿里云 NLS / 电信)
- **智能体对话**:Agent 节点 → smart-maxkb → MaxKB Server(HTTP 多轮对话)
### 模块说明
| 模块 | 说明 |
| --- | --- |
| `smart-aster` | **核心呼叫模块** — 集成 Asterisk AMI/AGI,实现呼叫控制、IVR 流程引擎、ASR/TTS 对接、AI 意图识别等核心通信能力 |
| `smart-maxkb` | **AI 智能体模块** — 智能体平台适配层,内置 MaxKB 对接实现,管理智能体应用列表、API Key 认证、多轮对话会话管理,为 IVR 流程提供知识问答能力。基于模块化设计,可扩展对接其他 AI Agent 平台 |
| `smart-gateway` | **API 网关** — 基于 Spring Cloud Gateway,统一路由转发、OAuth2 鉴权、跨域处理、访问日志、动态路由 |
| `smart-auth` | **认证中心** — 统一身份认证与授权服务,支持 OAuth2 多客户端接入 |
| `smart-boot` | **单体启动器** — 聚合所有模块的单体模式启动入口,一键运行完整系统,无需微服务基础设施 |
| `smart-api` | **服务间 API** — 各微服务间的 Feign 客户端接口定义(含 smart-system-api、smart-user-api、smart-resource-api、smart-maxkb-api) |
| `smart-common` | **公共模块** — 通用常量、枚举、校验注解、公共工具类 |
| `smart-upms` | **用户权限管理** — 包含 smart-system(系统管理、字典、组织、角色、菜单、租户)、smart-user(用户、岗位)、smart-resource(文件、OSS、短信) |
| `smart-ops` | **运维监控** — 包含 smart-log(操作日志、监控面板)、smart-doc(Knife4j 接口文档聚合)、smart-admin(Spring Boot Admin 服务监控) |
### 双模运行
- **微服务模式**:各模块独立部署为 Spring Cloud 微服务,通过 Nacos 进行服务注册与配置管理,Gateway 统一网关路由,适合大规模生产部署
- **单体模式**:运行 `smart-boot` 模块即可启动完整系统,无需 Nacos / Gateway 等中间件依赖,适合中小规模快速部署与开发调试
## 🛠️ 技术栈
### 后端技术栈
| 技术 | 版本 | 说明 |
| --- | --- | --- |
| Java | 17 | 基础运行环境 |
| Spring Boot | 3.5.x | 应用框架 |
| Spring Cloud | 2025.x | 微服务治理 |
| Spring Cloud Alibaba | - | Nacos / Sentinel / Seata |
| Spring AI | - | 大模型集成框架(DashScope / DeepSeek) |
| MyBatis-Flex | 1.11.5 | ORM 持久层框架 |
| Asterisk + PJSIP | - | 开源 PBX 通信引擎 |
| Asterisk-Java | - | Asterisk AMI / AGI Java SDK |
| Alibaba NLS SDK | 2.2.x | 阿里云智能语音(ASR / TTS) |
| DashScope SDK | - | 通义千问语音(Qwen3-ASR / CosyVoice / Qwen-TTS) |
| Spring Cloud Gateway | - | API 网关 |
| OpenFeign + OkHttp | - | 服务间调用 |
| Knife4j / SpringDoc | - | 接口文档 |
| Redisson | - | 分布式锁 / 缓存 / 消息 |
| Druid | - | 数据库连接池与 SQL 监控 |
| Retrofit | - | MaxKB HTTP 客户端 |
| Groovy / Nashorn | 3.0 / 15.6 | 动态脚本引擎 |
| Undertow | - | 高性能 Web 容器 |
| Docker / Docker Compose | - | 容器化部署 |
| SkyWalking | 10.4 | 分布式链路追踪 |
### 前端技术栈
| 技术 | 说明 |
| --- | --- |
| Vue 3 + TypeScript | 渐进式前端框架 |
| Vite | 下一代前端构建工具 |
| Vue Vben Admin | 企业级中后台框架 |
| Element Plus | UI 组件库 |
| LogicFlow | 可视化流程编排引擎 |
| CodeMirror | 在线代码编辑器(支持 JavaScript / Groovy 语法高亮与校验) |
| Pinia | 状态管理 |
| Vue Router | 路由管理 |
| pnpm Monorepo | 多应用工程管理(web-admin 管理端 + web-smart 坐席端) |
### AI 与通信能力
| 能力 | 支持 | 说明 |
| --- | --- | --- |
| 大语言模型 | 通义千问 / DeepSeek | 基于 Spring AI 统一抽象,可平滑切换模型 |
| ASR 语音识别 | 阿里云 NLS / 通义千问 DashScope / 电信 ASR | 实时流式语音转文字,支持多种模型与自定义对接 |
| TTS 语音合成 | 阿里云 NLS / 通义千问 DashScope / 电信 TTS | 文字转语音播报,支持多模型、多音色与参数配置 |
| 情感分析 | 阿里云 NLP | 实时情感倾向判断(正面 / 负面 / 中性) |
| 知识库问答 | MaxKB(内置)/ 可扩展 | 企业知识库智能体多轮对话,支持扩展对接 Dify、Coze、FastGPT 等平台 |
> 💡 **扩展能力**:系统通过 `VoiceModelEnum` 枚举统一管理语音引擎,ASR 和 TTS 均基于接口抽象实现。目前已内置阿里云、通义千问(DashScope)、电信三家引擎,同时支持企业自定义对接第三方 ASR/TTS 引擎(如科大讯飞、百度语音、腾讯云等),只需实现对应接口即可无缝替换。
## 🖥️ 功能截图
### 拨号盘

### IVR 流程编排

### 通话记录

### 坐席管理

### 外呼任务

## 🚀 快速开始
### 环境要求
| 组件 | 版本要求 |
| --- |--------------------|
| JDK | 17+ |
| MySQL | 8.0+ |
| Redis | 6.0+ |
| Asterisk | 22 (PJSIP) |
| Nacos | 3.x(微服务模式需要) |
| Node.js | 18+(前端构建) |
| pnpm | 9+(前端包管理) |
| MaxKB | 最新版(可选,AI 知识库问答需要) |
### 数据库初始化
1. 创建数据库:
```sql
CREATE DATABASE smartaster DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE DATABASE smartaster_asterisk DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
2. 导入 SQL 脚本:
```
sql/mysql_create_core.sql -- 核心表结构
sql/mysql_smartaster.sql -- 业务数据
sql/mysql_asterisk.sql -- Asterisk 配置表
```
### 后端启动
#### 单体模式(推荐开发环境)
```bash
# 1. 克隆项目
git clone <仓库地址>
cd SmartAster
# 2. 修改配置
# 编辑 smart-boot/src/main/resources/application.yml
# 修改 MySQL、Redis 等连接信息
# 3. 编译打包
mvn clean package -DskipTests
# 4. 启动 BootStartApplication
java -jar smart-boot/target/smart-boot.jar
```
> 单体模式无需 Nacos / Gateway,直接访问 `http://localhost:9999` 即可
#### 微服务模式
```bash
# 1. 启动基础设施
cd script/app
docker-compose up -d nacos sentinel
# 2. 配置 Nacos
# 将 docs/config/nacos/ 下的配置文件导入 Nacos
# 3. 依次启动各微服务
java -jar smart-gateway/target/smart-gateway.jar
java -jar smart-auth/target/smart-auth.jar
java -jar smart-aster/target/smart-aster.jar
java -jar smart-upms/smart-system/target/smart-system.jar
java -jar smart-upms/smart-user/target/smart-user.jar
java -jar smart-upms/smart-resource/target/smart-resource.jar
java -jar smart-ops/smart-log/target/smart-log.jar
java -jar smart-maxkb/target/smart-maxkb.jar
```
### Asterisk 部署
```bash
# 使用项目提供的 Docker 镜像一键部署 Asterisk
cd script/asterisk
docker-compose up -d
```
> Asterisk 配置请参考 `script/asterisk/image/conf/` 目录下的配置文件
### 前端启动
```bash
# 1. 进入前端项目
cd smart-call-ui
# 2. 安装依赖
pnpm install
# 3. 启动坐席工作台
pnpm -F @jpower/web-smart dev
```
### Docker Compose 一键部署
```bash
cd script/app
docker-compose up -d
```
## 📁 项目结构
```
SmartCall
├── smart-aster # 核心呼叫模块(IVR引擎 / ASR / TTS / AI意图)
├── smart-maxkb # MaxKB 智能体对接模块
├── smart-gateway # API 网关(路由/鉴权/限流/日志)
├── smart-auth # 统一认证中心
├── smart-boot # 单体模式启动器
├── smart-api # 服务间 Feign API
│ ├── smart-system-api
│ ├── smart-user-api
│ ├── smart-resource-api
│ └── smart-maxkb-api
├── smart-common # 公共模块(常量/枚举/校验注解)
├── smart-upms # 用户权限管理
│ ├── smart-system # 系统管理(字典/组织/角色/菜单/租户)
│ ├── smart-user # 用户管理(用户/岗位/角色用户)
│ └── smart-resource # 资源管理(文件/OSS/短信)
├── smart-ops # 运维监控
│ ├── smart-log # 日志与监控
│ ├── smart-doc # Knife4j 接口文档聚合
│ └── smart-admin # Spring Boot Admin
├── script # 部署脚本
│ ├── app # Docker Compose 编排
│ ├── asterisk # Asterisk 镜像与配置
│ ├── docker # Nacos / Nginx / SkyWalking / ELK 配置
│ └── elk # ELK 日志栈
├── sql # 数据库脚本
└── docs # 文档与配置模板
```
## 🔌 扩展与集成
### 自定义 ASR / TTS 引擎
系统通过 `VoiceModelEnum` 枚举统一管理语音引擎,在 IVR 流程中可按节点选择 ASR/TTS 引擎。
#### 已内置引擎
| 引擎 | ASR 实现 | TTS 实现 | 说明 |
| --- | --- | --- | --- |
| 阿里云 | `AliAsrClient` | `AliTtsClient` | 阿里云 NLS 智能语音,WebSocket 流式通信 |
| 通义千问(DashScope) | `DashScopeAsrClient` | `DashScopeTtsClient` | 通义千问语音大模型,支持多模型自动路由 |
| 电信 | `DianxinAsrClient` | `DianxinTtsClient` | 电信 AI 语音,WebSocket 流式通信 |
#### 通义千问(DashScope)详细说明
通义千问引擎采用**代理 + 模型路由**架构,根据配置的模型名称自动选择底层实现:
**ASR 语音识别**(`DashScopeAsrClient` 自动路由):
- `DashScopeQwenAsrClient` — Qwen3-ASR 系列(`qwen3-asr-flash-realtime`),基于 `OmniRealtimeConversation` API
- `DashScopeFunAsrClient` — Fun-ASR / Paraformer 系列(`fun-asr-realtime`、`paraformer-realtime-8k-v2`),基于 `Recognition` API
**TTS 语音合成**(`DashScopeTtsClient` 自动路由):
- `DashScopeQwenTtsClient` — Qwen3-TTS 系列(`qwen3-tts-flash-realtime`、`qwen3-tts-instruct-flash-realtime`)
- `DashScopeCosyVoiceTtsClient` — CosyVoice 系列(`cosyvoice-v3-flash`、`cosyvoice-v3-plus` 等)
```yaml
ivr:
dashscope:
api-key: ${IVR_DASHSCOPE_API_KEY:} # DashScope API Key
# 自定义 WebSocket 地址(内网私有化部署时配置,留空使用阿里云官方地址)
# websocket-url: wss://your-private-dashscope-server/api-ws/v1/realtime
asr-option:
model: qwen3-asr-flash-realtime # ASR 模型
sample-rate: 8000 # 采样率(电话场景建议 8000)
language: zh # 识别语言
tts-option:
model: qwen3-tts-flash-realtime # TTS 模型
sample-rate: 8000 # 采样率
volume: 50 # 音量 [0, 100]
speech-rate: 1.0 # 语速 [0.5, 2.0]
```
> 💡 IVR 流程中每个节点可独立配置 ASR/TTS 引擎参数(模型、音色、采样率等),页面传入的动态配置会自动覆盖配置文件中的默认值,实现灵活的多引擎混用。
### 自定义 AI 大模型
基于 Spring AI 统一抽象,通过配置切换不同的大模型提供商:
```yaml
jpower:
ai:
primary: dashscope # 可选: dashscope / deepseek / 自定义
spring:
ai:
dashscope:
api-key: your-api-key
chat:
options:
model: qwen3.5-plus
deepseek:
api-key: your-api-key
chat:
options:
model: deepseek-r1
```
### AI 智能体平台集成
系统内置了 MaxKB 知识库平台的对接实现,通过 `AgentChatClient` Feign 接口与智能体服务交互,支持智能体选择、API Key 自动管理、按来电号码维护对话上下文等能力。IVR 流程中的「智能体对话」节点通过 `NodeGranter` 插件机制调用智能体服务,开发者可基于同一机制扩展对接其他 AI Agent 平台:
```yaml
maxkb:
username: admin
password: your-password
baseUrl: http://your-maxkb-host:8081/
externalBaseUrl: http://your-maxkb-host:8081/ # 外网访问地址
```
### 内网环境部署
系统**完整支持内网(私有化)环境部署**,所有外部依赖均可通过配置指向内网地址:
- **语音引擎**:通义千问 DashScope 支持自定义 `websocket-url`,可将 ASR/TTS 的 WebSocket 连接指向内网私有化部署的语音服务,无需访问公网
- **AI 大模型**:DeepSeek / 通义千问等模型均通过 `base-url` 配置,可对接内网部署的大模型推理服务(如 vLLM、Ollama 等)
- **智能体平台**:MaxKB 的 `baseUrl` 配置项直接支持内网地址
- **基础设施**:MySQL、Redis、Nacos、Asterisk 等全部通过环境变量注入连接信息,适配任意内网环境
- **容器化部署**:提供完整的 Docker Compose 编排文件,一键拉起全部服务
## 📄 开源协议
SmartCall 开源软件遵循 [Apache 2.0 协议](https://www.apache.org/licenses/LICENSE-2.0.html) ,允许商业使用,但务必保留类作者、Copyright 信息。
## 🤝 联系我们
- **官网**:[https://qidiangk.com](https://qidiangk.com)
- **邮箱**:ding931226@yeah.net
---
SmartCall — 让 AI 为每一通电话赋能