You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
217 lines
6.0 KiB
217 lines
6.0 KiB
|
1 week ago
|
# 语音数据同步服务 (dataservice-yy)
|
||
|
|
|
||
|
|
## 项目简介
|
||
|
|
|
||
|
|
语音数据同步服务用于从 EBOX 录音盒拉取录音文件,上传到 OSS,并保存通话记录到数据库。
|
||
|
|
|
||
|
|
## 目录结构
|
||
|
|
|
||
|
|
```
|
||
|
|
dataservice-yy/
|
||
|
|
├── dataservice-yy-0.0.1-SNAPSHOT.jar # 主程序 JAR 包
|
||
|
|
├── config/
|
||
|
|
│ └── application-external.yml # 外部配置文件(部署时修改)
|
||
|
|
├── vaa-recordings/ # 本地录音文件存储目录
|
||
|
|
│ ├── 340100/ # 地市编码
|
||
|
|
│ │ ├── 20240101/ # 日期目录
|
||
|
|
│ │ │ └── <device_uuid>/ # 设备目录
|
||
|
|
│ │ │ └── xxx.wav
|
||
|
|
│ │ └── 20240102/
|
||
|
|
│ └── ...
|
||
|
|
├── logs/
|
||
|
|
│ └── app.log # 日志文件
|
||
|
|
└── README.md # 本说明文档
|
||
|
|
```
|
||
|
|
|
||
|
|
## 部署步骤
|
||
|
|
|
||
|
|
### 1. 准备环境
|
||
|
|
|
||
|
|
- JDK 1.8+
|
||
|
|
- 人大金仓数据库(已创建 mid_voice schema)
|
||
|
|
- OSS 服务(已部署并配置好上传接口)
|
||
|
|
|
||
|
|
### 2. 创建目录结构
|
||
|
|
|
||
|
|
```bash
|
||
|
|
mkdir -p /opt/dataservice-yy/config
|
||
|
|
mkdir -p /opt/dataservice-yy/logs
|
||
|
|
```
|
||
|
|
|
||
|
|
### 3. 复制文件
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 复制 JAR 包
|
||
|
|
cp dataservice-yy-0.0.1-SNAPSHOT.jar /opt/dataservice-yy/
|
||
|
|
|
||
|
|
# 复制配置文件模板
|
||
|
|
cp config/application-external.yml /opt/dataservice-yy/config/
|
||
|
|
```
|
||
|
|
|
||
|
|
### 4. 修改配置
|
||
|
|
|
||
|
|
编辑 `/opt/dataservice-yy/config/application-external.yml`,修改以下配置项:
|
||
|
|
|
||
|
|
#### 数据库配置
|
||
|
|
```yaml
|
||
|
|
spring:
|
||
|
|
datasource:
|
||
|
|
url: jdbc:kingbase8://{数据库IP}:{端口}/kingbase?currentSchema=mid_voice&clientEncoding=utf8
|
||
|
|
username: {数据库用户名}
|
||
|
|
password: {数据库密码}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### OSS 配置
|
||
|
|
```yaml
|
||
|
|
vaa-sync:
|
||
|
|
oss:
|
||
|
|
base-url: http://{OSS服务器IP}:9090
|
||
|
|
upload-url: http://{OSS服务器IP}:9090/apiOss/oss/fileUpload
|
||
|
|
appcode: dataservice-yy
|
||
|
|
appid: {appid}
|
||
|
|
appsecret: {appsecret}
|
||
|
|
```
|
||
|
|
|
||
|
|
#### 其他配置
|
||
|
|
```yaml
|
||
|
|
vaa-sync:
|
||
|
|
download-path: ./vaa-recordings # 本地录音文件存储路径
|
||
|
|
sync-interval-cron: "0 0 0/2 * * ?" # 同步间隔(默认每2小时)
|
||
|
|
device-username: admin # 录音盒登录账号
|
||
|
|
device-password: admin # 录音盒登录密码
|
||
|
|
|
||
|
|
server:
|
||
|
|
port: 8088 # 服务端口
|
||
|
|
```
|
||
|
|
|
||
|
|
### 5. 启动服务
|
||
|
|
|
||
|
|
```bash
|
||
|
|
cd /opt/dataservice-yy
|
||
|
|
nohup java -jar dataservice-yy-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
|
||
|
|
```
|
||
|
|
|
||
|
|
### 6. 查看日志
|
||
|
|
|
||
|
|
```bash
|
||
|
|
tail -f logs/app.log
|
||
|
|
```
|
||
|
|
|
||
|
|
## 配置文件说明
|
||
|
|
|
||
|
|
### application-external.yml
|
||
|
|
|
||
|
|
此文件包含所有需要部署时调整的参数,**无需重新打包 JAR**。
|
||
|
|
|
||
|
|
| 配置项 | 说明 | 示例 |
|
||
|
|
|-------|------|------|
|
||
|
|
| `spring.datasource.url` | 数据库连接URL | `jdbc:kingbase8://53.1.194.60:54321/kingbase?currentSchema=mid_voice&clientEncoding=utf8` |
|
||
|
|
| `spring.datasource.username` | 数据库用户名 | `dcms_dev` |
|
||
|
|
| `spring.datasource.password` | 数据库密码 | `sdy@2025#dc$ks` |
|
||
|
|
| `vaa-sync.oss.base-url` | OSS基础地址 | `http://53.1.194.59:9090` |
|
||
|
|
| `vaa-sync.oss.upload-url` | OSS上传接口 | `http://53.1.194.59:9090/apiOss/oss/fileUpload` |
|
||
|
|
| `vaa-sync.oss.appcode` | OSS应用编码 | `dataservice-yy` |
|
||
|
|
| `vaa-sync.oss.appid` | OSS应用ID | `371a3368-e28e-4ba3-95a3-c31c19cf0ad0` |
|
||
|
|
| `vaa-sync.oss.appsecret` | OSS应用密钥 | `06a6a80e-f9d2-4b3b-acc0-8d182c876074` |
|
||
|
|
| `vaa-sync.download-path` | 本地录音存储路径 | `./vaa-recordings` |
|
||
|
|
| `vaa-sync.sync-interval-cron` | 同步定时任务 | `0 0 0/2 * * ?`(每2小时) |
|
||
|
|
| `vaa-sync.device-username` | 录音盒登录账号 | `admin` |
|
||
|
|
| `vaa-sync.device-password` | 录音盒登录密码 | `admin` |
|
||
|
|
| `server.port` | 服务端口 | `8088` |
|
||
|
|
|
||
|
|
## 定时任务说明
|
||
|
|
|
||
|
|
同步任务默认每2小时执行一次,可通过修改 `sync-interval-cron` 调整:
|
||
|
|
|
||
|
|
| 表达式 | 说明 |
|
||
|
|
|-------|------|
|
||
|
|
| `0 0 0/2 * * ?` | 每2小时执行一次(默认) |
|
||
|
|
| `0 0/30 * * * ?` | 每30分钟执行一次 |
|
||
|
|
| `0 0 2 * * ?` | 每天凌晨2点执行 |
|
||
|
|
| `0 0/1 * * * ?` | 每分钟执行(测试用) |
|
||
|
|
|
||
|
|
## 数据表说明
|
||
|
|
|
||
|
|
### mid_voice_device_config
|
||
|
|
|
||
|
|
设备基础配置表,存储录音盒设备信息。
|
||
|
|
|
||
|
|
| 字段 | 说明 |
|
||
|
|
|-----|------|
|
||
|
|
| device_no | 设备编号(UUID) |
|
||
|
|
| city_code | 地市编码 |
|
||
|
|
| city_name | 地市名称 |
|
||
|
|
| ip_address | IP地址 |
|
||
|
|
| device_port | 端口号 |
|
||
|
|
| device_status | 设备状态(0在线) |
|
||
|
|
|
||
|
|
### mid_voice_channel_config
|
||
|
|
|
||
|
|
通道配置表,存储录音盒通道绑定的电话号码。
|
||
|
|
|
||
|
|
| 字段 | 说明 |
|
||
|
|
|-----|------|
|
||
|
|
| device_no | 设备编号 |
|
||
|
|
| channel_no | 通道号(1-8) |
|
||
|
|
| phone_number | 绑定电话号码 |
|
||
|
|
|
||
|
|
### mid_voice_call_record
|
||
|
|
|
||
|
|
通话记录表,存储录音文件信息和OSS地址。
|
||
|
|
|
||
|
|
| 字段 | 说明 |
|
||
|
|
|-----|------|
|
||
|
|
| call_record_id | 通话记录ID(device_no + record_id) |
|
||
|
|
| device_no | 设备编号 |
|
||
|
|
| city_code | 地市编码 |
|
||
|
|
| city_name | 地市名称 |
|
||
|
|
| call_tel | 主叫号码 |
|
||
|
|
| called_tel | 被叫号码 |
|
||
|
|
| call_start_time | 通话开始时间 |
|
||
|
|
| call_end_time | 通话结束时间 |
|
||
|
|
| call_duration | 通话时长(秒) |
|
||
|
|
| call_direction | 通话方向(1呼入,2呼出) |
|
||
|
|
| recording_file_name | 录音文件名 |
|
||
|
|
| recording_file_path | OSS完整访问URL |
|
||
|
|
| recording_file_size | 文件大小(字节) |
|
||
|
|
|
||
|
|
## 日志说明
|
||
|
|
|
||
|
|
日志文件位于 `logs/app.log`,可通过以下命令查看:
|
||
|
|
|
||
|
|
```bash
|
||
|
|
# 查看实时日志
|
||
|
|
tail -f logs/app.log
|
||
|
|
|
||
|
|
# 只看错误日志
|
||
|
|
tail -f logs/app.log | grep "【异常】"
|
||
|
|
|
||
|
|
# 只看设备同步日志
|
||
|
|
tail -f logs/app.log | grep "【设备】"
|
||
|
|
|
||
|
|
# 只看录音处理日志
|
||
|
|
tail -f logs/app.log | grep "【录音】"
|
||
|
|
```
|
||
|
|
|
||
|
|
## 常见问题
|
||
|
|
|
||
|
|
### 1. 配置文件读取失败
|
||
|
|
|
||
|
|
检查 `config/application-external.yml` 是否在 JAR 包同级目录的 `config/` 文件夹下。
|
||
|
|
|
||
|
|
### 2. 数据库连接失败
|
||
|
|
|
||
|
|
检查数据库URL、用户名、密码是否正确,网络是否连通。
|
||
|
|
|
||
|
|
### 3. OSS上传失败
|
||
|
|
|
||
|
|
检查 OSS 地址、认证信息是否正确,OSS服务是否正常。
|
||
|
|
|
||
|
|
### 4. 录音盒连接失败
|
||
|
|
|
||
|
|
检查录音盒IP、端口、账号密码是否正确,网络是否连通。
|
||
|
|
|
||
|
|
## 技术支持
|
||
|
|
|
||
|
|
如有问题,请联系开发人员。
|