# Teleman AI - 电话营销VoIP服务SaaS应用
## 项目概述
- **项目类型**:全栈SaaS应用(Laravel + Vue.js/React)
- **主要功能**:
- 自动化语音呼叫活动管理
- AI驱动的消息生成
- 实时通话分析和报告
- 专业软电话集成(浏览器内通话)
- 联系人管理和列表管理
- 信用系统和定价管理
- Stripe支付集成
- Twilio集成(语音通话)
- 角色权限管理(管理员、客户、代理)
- CRM集成(Webhook)
- 通话录音和转录
- DTMF交互支持
- 答录机检测(AMD)
- **技术栈**:
- 后端:Laravel 12 (PHP 8.2+)
- 前端:Vue.js 3 / React + Inertia.js
- 实时通信:Laravel Reverb
- 数据库:MySQL/PostgreSQL
- 缓存:Redis
- 队列:Laravel Queue
- 语音服务:Twilio
- 支付:Stripe
- 监控:Sentry
## 项目结构
```
teleman/
├── app/ # 应用核心代码
│ ├── Actions/ # 动作类
│ ├── Console/ # 命令行工具
│ ├── Enums/ # 枚举类型
│ ├── Events/ # 事件类
│ ├── Helpers/ # 辅助函数
│ ├── Http/ # HTTP层
│ │ ├── Controllers/ # 控制器
│ │ ├── Middleware/ # 中间件
│ │ └── Requests/ # 请求验证
│ ├── Jobs/ # 队列任务
│ ├── Listeners/ # 事件监听器
│ ├── Models/ # 数据模型
│ ├── Notifications/ # 通知类
│ ├── Policies/ # 授权策略
│ ├── Providers/ # 服务提供者
│ ├── Services/ # 业务服务
│ └── Traits/ # 特性类
├── bootstrap/ # 启动文件
├── config/ # 配置文件
├── database/ # 数据库
│ ├── factories/ # 模型工厂
│ ├── migrations/ # 迁移文件
│ └── seeders/ # 数据种子
├── deployment/ # 部署配置
├── docs/ # 文档
├── public/ # 公共资源
├── resources/ # 资源文件
│ ├── css/ # 样式文件
│ ├── js/ # JavaScript
│ └── views/ # 视图模板
├── routes/ # 路由定义
├── storage/ # 存储文件
├── tests/ # 测试代码
├── vendor/ # Composer依赖
├── artisan # Artisan命令
├── composer.json # PHP依赖
├── components.json # 组件配置
├── ecosystem.config.cjs # PM2配置
├── eslint.config.js # ESLint配置
├── package.json # Node依赖
├── tsconfig.json # TypeScript配置
└── vite.config.ts # Vite配置
```
## 核心业务逻辑
### 1. 用户角色系统
#### 1.1 角色定义
- **管理员(Admin)**:系统最高权限
- 管理所有客户账户
- 配置Twilio集成
- 设置定价规则
- 查看系统统计
- **客户(Customer)**:付费用户
- 创建和管理活动
- 管理联系人列表
- 查看通话报告
- 充值信用点
- **代理(Agent)**:外呼代理
- 使用软电话拨打电话
- 查看分配的活动
- 记录通话结果
### 2. 活动管理流程
#### 2.1 活动创建
```
创建活动 → 配置语音消息 → 上传联系人 → 设置时间规则 → 启动活动
```
#### 2.2 语音消息类型
- **文本转语音(TTS)**:多语言AI语音
- **音频文件**:预录制的MP3/WAV文件
- **混合模式**:TTS + 音频组合
#### 2.3 活动状态流转
```
草稿 → 计划中 → 进行中 → 暂停 → 已完成/已取消
```
### 3. 通话流程
#### 3.1 自动外呼流程
```
系统拨号 → 检测接听 → 播放消息 → 检测按键(DTMF) → 记录结果 → 生成报告
```
#### 3.2 软电话流程
```
代理登录 → 获取呼叫任务 → 点击拨号 → 通话中 → 记录结果 → 下一个呼叫
```
#### 3.3 AMD(答录机检测)
- 自动识别真人接听或答录机
- 根据检测结果播放不同消息
- 提高接通率和转化率
### 4. 信用系统
#### 4.1 计费规则
- 按通话时长计费(每分钟)
- 按通话次数计费
- 按成功接通计费
#### 4.2 充值流程
```
选择套餐 → Stripe支付 → 信用到账 → 开始呼叫
```
#### 4.3 定价管理
- 支持多层级定价
- 可按国家/地区设置不同费率
- 支持促销和折扣
### 5. CRM集成
#### 5.1 Webhook事件
- `call_completed` - 通话完成
- `lead_qualified` - 线索合格
- `contact_added` - 联系人添加
- `contact_updated` - 联系人更新
- `campaign_started` - 活动开始
- `dtmf_response` - DTMF按键响应
#### 5.2 认证方式
- Bearer Token
- API Key
- HMAC签名
- 无认证(仅测试)
### 6. 实时通信
使用Laravel Reverb实现:
- 实时通话状态更新
- 代理状态同步
- 活动进度推送
- 系统通知
## 核心代码分析
### 1. 依赖配置 (composer.json)
关键依赖:
```json
{
"require": {
"php": "^8.2",
"laravel/framework": "^12.0",
"laravel/fortify": "^1.30",
"laravel/reverb": "^1.6",
"twilio/sdk": "^8.8",
"stripe/stripe-php": "^18.2",
"razorpay/razorpay": "^2.9",
"predis/predis": "^3.2",
"sentry/sentry-laravel": "^4.19"
}
}
```
### 2. 服务架构
#### 2.1 通话服务
... (content truncated)