## **新增查詢和刪除本地錄制文件**
### **1、版本說明**
    此功能基于集群版本以上:[V7.1_r1743](http://www.hmoore.net/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證書校驗)