数据同步服务-语音
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.

6.0 KiB

语音数据同步服务 (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. 创建目录结构

mkdir -p /opt/dataservice-yy/config
mkdir -p /opt/dataservice-yy/logs

3. 复制文件

# 复制 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,修改以下配置项:

数据库配置

spring:
  datasource:
    url: jdbc:kingbase8://{数据库IP}:{端口}/kingbase?currentSchema=mid_voice&clientEncoding=utf8
    username: {数据库用户名}
    password: {数据库密码}

OSS 配置

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}

其他配置

vaa-sync:
  download-path: ./vaa-recordings    # 本地录音文件存储路径
  sync-interval-cron: "0 0 0/2 * * ?" # 同步间隔(默认每2小时)
  device-username: admin              # 录音盒登录账号
  device-password: admin              # 录音盒登录密码

server:
  port: 8088                         # 服务端口

5. 启动服务

cd /opt/dataservice-yy
nohup java -jar dataservice-yy-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &

6. 查看日志

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,可通过以下命令查看:

# 查看实时日志
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、端口、账号密码是否正确,网络是否连通。