ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **新增查询和删除本地录制文件** ### **1、版本说明** &emsp; &emsp; 此功能基于集群版本以上:[V7.1_r1743](https://www.kancloud.cn/anychat-doc/br2018-v1_0_001/711284) &emsp; &emsp; MT版本:MTConsole_20180723.zip &emsp; &emsp; 发布日期:2018-07-27 ### **2、功能介绍** &emsp; &emsp; (某客户提出)录像文件支持同时在本地和服务器进行录制,当发现服务端的录像文件有异常时,可以在本地查找到对应的录像文件并手动上传。由于坐席本地录制,磁盘可能不足,可由坐席端手动触发文件的删除。 &emsp; &emsp; 即开发了2个接口: #define ANYCHAT_SDKCTRL_DIRCLEAN 86 ///< 目录清理 #define ANYCHAT_SDKCTRL_FINDFILE 87 ///< 查找文件 &emsp; &emsp; 1)定期清理 char szJson[1024] = { "pathname":"D:\\\\record\\\\","maxsize":20000, "reservesize":20000 }; // pathname:工作目录 ///maxsize:设置文件最大的缓存空间阈值,超过则开始清理; ///reservesize:设置磁盘空间阈值,当磁盘空间小于这个阈值则开始清理 BRAC_SDKControl(ANYCHAT_SDKCTRL_DIRCLEAN, szJson); // 伪代码 &emsp; &emsp; 2)目录下模糊查找指定文件 char szJson[1024] = { "pathname":"D:\\\\record\\\\", "keyword":"xxx" }; // keyword:查找的目标文件关键字(即文件名字中包含该字符串) char szOutJson[1024] = {0}; // 保存返回的json格式字符串 BRAC_SDKControl(ANYCHAT_SDKCTRL_FINDFILE, szJson, szOutJson); // 伪代码 ### **3、业务场景** &emsp; &emsp;1)采用服务器合成流的方式录像,为确保不能因为网络原因导致文件丢失的情况发生,因此采用服务器那边录像的同时,坐席端这边也备份一个相同的录像文件 &emsp; &emsp;2)当客户通过后台或其他方式,发现有录像文件残缺或丢失时,在坐席备份的录像中找到与异常文件匹配的文件,人工干预方式重新上传该文件到服务器 &emsp; &emsp;3)此方案涉及到诸多环节,其中包括:定期清理本地备份的文件 以及 从本地备份的众多视频文件中找出指定名字的某一个文件 &emsp; &emsp;4)定期清理 &emsp; &emsp;以两个维度作为清理文件的条件:当前文件夹所占大小 以及 磁盘剩余空间;需要注意一点,保存录像的目录里面文件夹的命名必须是你 yyyy-mm-dd的方式命名, &emsp; &emsp;文件的清理以文件夹日期名字为依据优先删除日志较早的 &emsp; &emsp;例: &emsp; &emsp;----record(首层目录命名无要求) &emsp; &emsp;|s &emsp; &emsp;|--20180706 &emsp; &emsp;|| &emsp; &emsp;||--xxxxxxxx_xxxx.mp4 &emsp; &emsp;|| &emsp; &emsp;5)查找文件 &emsp; &emsp;客户对保存的录像文件命名也是有规则的,比如总会包含一个唯一的guid,那我们查找的条件也是以这个唯一的字符串标识进行模糊查找 ### **4、测试要点** &emsp; &emsp; 1)参数正确/错误时,调用、日志是否正常 &emsp; &emsp; 2)按照业务场景模拟,当文件夹大小超过阈值时,时候能按预期执行 &emsp; &emsp; 3)当需要删除的文件被占用(被其他工具打开),导致无法正常删除时,是否有错误码 &emsp; &emsp; 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、补充说明** &emsp; &emsp; 1、路径后一定要带符号“D:\\\\record\\\\”,如果不带,则直接在record后拼接名字。