## **新增查询和删除本地录制文件**
### **1、版本说明**
    此功能基于集群版本以上:[V7.1_r1743](https://www.kancloud.cn/anychat-doc/br2018-v1_0_001/711284)
    MT版本:MTConsole_20180723.zip
    发布日期:2018-07-27
### **2、功能介绍**
    (某客户提出)录像文件支持同时在本地和服务器进行录制,当发现服务端的录像文件有异常时,可以在本地查找到对应的录像文件并手动上传。由于坐席本地录制,磁盘可能不足,可由坐席端手动触发文件的删除。
    即开发了2个接口:
#define ANYCHAT_SDKCTRL_DIRCLEAN 86 ///< 目录清理
#define ANYCHAT_SDKCTRL_FINDFILE 87 ///< 查找文件
    1)定期清理
char szJson[1024] = { "pathname":"D:\\\\record\\\\","maxsize":20000, "reservesize":20000 }; // pathname:工作目录
///maxsize:设置文件最大的缓存空间阈值,超过则开始清理;
///reservesize:设置磁盘空间阈值,当磁盘空间小于这个阈值则开始清理
BRAC_SDKControl(ANYCHAT_SDKCTRL_DIRCLEAN, szJson); // 伪代码
    2)目录下模糊查找指定文件
char szJson[1024] = { "pathname":"D:\\\\record\\\\", "keyword":"xxx" }; // keyword:查找的目标文件关键字(即文件名字中包含该字符串)
char szOutJson[1024] = {0}; // 保存返回的json格式字符串
BRAC_SDKControl(ANYCHAT_SDKCTRL_FINDFILE, szJson, szOutJson); // 伪代码
### **3、业务场景**
   1)采用服务器合成流的方式录像,为确保不能因为网络原因导致文件丢失的情况发生,因此采用服务器那边录像的同时,坐席端这边也备份一个相同的录像文件
   2)当客户通过后台或其他方式,发现有录像文件残缺或丢失时,在坐席备份的录像中找到与异常文件匹配的文件,人工干预方式重新上传该文件到服务器
   3)此方案涉及到诸多环节,其中包括:定期清理本地备份的文件 以及 从本地备份的众多视频文件中找出指定名字的某一个文件
   4)定期清理
   以两个维度作为清理文件的条件:当前文件夹所占大小 以及 磁盘剩余空间;需要注意一点,保存录像的目录里面文件夹的命名必须是你 yyyy-mm-dd的方式命名,
   文件的清理以文件夹日期名字为依据优先删除日志较早的
   例:
   ----record(首层目录命名无要求)
   |s
   |--20180706
   ||
   ||--xxxxxxxx_xxxx.mp4
   ||
   5)查找文件
   客户对保存的录像文件命名也是有规则的,比如总会包含一个唯一的guid,那我们查找的条件也是以这个唯一的字符串标识进行模糊查找
### **4、测试要点**
    1)参数正确/错误时,调用、日志是否正常
    2)按照业务场景模拟,当文件夹大小超过阈值时,时候能按预期执行
    3)当需要删除的文件被占用(被其他工具打开),导致无法正常删除时,是否有错误码
    4)其他根据业务场景设置测试用例
### **5、web示例**
````
//清除文件夹
function clean(){
var szJson = {"pathname":"D:\\recordsync\\","maxsize":200, "reservesize":512000}; //Byte 、MB
// pathname:工作目录
// maxsize:设置文件最大的缓存空间阈值,超过则开始清理;
// reservesize:设置磁盘空间阈值,当磁盘空间小于这个阈值则开始清理
var isclean = BRAC_SDKControl(ANYCHAT_SDKCTRL_DIRCLEAN, JSON.stringify(szJson)); //一次清理一个文件,最多2个文件
AddLog("--cleanfile:"+isclean, LOG_TYPE_ERROR);
}
//查找文件
function findfile(){
var keyword=GetID("keyword1").value;
if (GetID("keyword1").value==""){
alert("请输入关键字!")
}
else{
var szJson = {"pathname":"D:\\recordsync\\", "keyword":keyword};// keyword:查找的目标文件关键字(即文件名字中包含该字符串)
var szOutJson = {"pathname":0};// 保存返回的json格式字符串
var szOutJson1 = BRAC_SDKControl(ANYCHAT_SDKCTRL_FINDFILE,JSON.stringify(szJson),szOutJson); //,JSON.stringify(szOutJson)
alert(szOutJson1);
}
}
````
### **6、补充说明**
    1、路径后一定要带符号“D:\\\\record\\\\”,如果不带,则直接在record后拼接名字。
- 1 版本更新记录
- 1.1 集群V6.3_r1337
- 1.2 集群V6.3_r1342
- 1.3 集群V6.4_r1352
- 1.4 集群V6.4_r1387&1389
- 1.5 集群V6.4_r1391
- 1.6 集群V6.4_r1402
- 1.7 集群V6.4_r1404&r1405
- 1.8 集群V6.4_r1412
- 1.9 集群V6.4_r1416
- 1.10 集群V6.4_r1427&r1428
- 1.11 集群V6.4_r1430&r1431
- 1.12 集群V6.4_r1433
- 1.13 集群V6.4_r1443
- 1.14 集群V6.4_r1445
- 1.15 集群V6.4_r1447
- 1.16 集群V6.4_r1451
- 1.17 集群V6.4_r1453
- 1.18 集群V6.5_r1452
- 1.19 集群V6.5_r1469
- 1.20 集群V6.5_r1471
- 1.21 集群V6.5_r1488
- 1.22 集群V6.5_r1498&r1500
- 1.23 集群V6.5_r1502
- 1.24 集群V6.5_r1503
- 1.25 集群V6.5_r1514
- 1.26 集群V6.5_r1517
- 1.27 集群V6.5_r1526
- 1.28 集群V7.0_r1570
- 1.29 集群V7.0_r1583
- 1.30 集群V7.0_r1599
- 1.31 集群V7.0_r1612
- 1.32 集群V7.0_r1616
- 1.33 集群V7.1_r1671
- 1.34 集群V7.1_r1678
- 1.35 集群V7.1_r1743
- 1.36 集群V7.1_r1754~1769
- 1.37 集群V7.2_r1794
- 1.38 集群V7.2_r1797&1799
- 2 集群新增功能说明
- 2.1 新增“不校验APPID”配置项
- 2.2 运营商绑定应用和物理机[r1503~r1583]
- 2.3 寻址服务指定寻址区域
- 2.4 新增“关联营业厅客户等待时间”配置项(智能排队-全局服务改造)
- 2.5 新增“视频流传输方式”配置
- 2.6 新增了队列变化通知回调接口
- 2.7 通过内核日志查询指定应用绑定的核心
- 2.8 新增录制wav格式文件的功能
- 2.9 新增“客户端日志路径前缀”配置项
- 2.10 一个坐席同时服务多个用户的功能
- 2.11 H5视频编码器配置项
- 2.12 开启服务器时间戳
- 2.13 【新】运营商绑定应用和物理机功能[V7.0_r1599]
- 2.14 新增应用配置项“录像时UDP通道优先”
- 2.15 录像服务扩展项新增“限制连接IP”
- 2.16 新增限制物理机IP的功能
- 2.17 新增查询和删除本地录制文件的功能
- 2.18 新增营业部的设置和查询接口
- 2.19 智能排队统计信息项变更
- 2.20 新增房间服务器以及使用房间服务器配置项
- 2.21 DNS寻址H5接入服务器注意事项
- 2.22 集群灾备服务器
- 3 其他说明
- 3.1 datatype
- 3.2 eventtype
- 3.3 日志标记
- 3.3.1 业务服务器
- 3.3.2 接入服务器
- 3.3.3 云平台代理
- 3.3.4 数据库服务
- 3.3.5 进程服务
- 3.3.6 监控服务
- 3.3.7 升级服务
- 3.3.8 核心服务
- 3.3.9 录像服务
- 3.3.10 总线服务
- 3.3.11 H5接入服务
- 3.3.12 通用服务
- 4功能点说明
- 4.1安全级别设置说明(SSL证书校验)