Browse Source

config change

dss 2 years ago
parent
commit
3442658f82

+ 5 - 0
src/CallCenter.Api/appsettings.Development.json

@@ -107,6 +107,11 @@
       }
     ]
   },
+  "RecordSettings": {
+    "Remote": "http://192.168.100.101/mcc/Recorder/",
+    "Local": "http://192.168.100.36:50001/Recorder/",
+    "IsDown": false
+  },
   "IdentityConfiguration": {
     "Password": {
       "RequiredLength": 8,

+ 2 - 1
src/CallCenter.Api/appsettings.json

@@ -106,7 +106,8 @@
   },
   "RecordSettings": {
     "Remote": "http://192.168.100.101/mcc/Recorder/",
-    "Local": "http://192.168.100.36:50001/Recorder/"
+    "Local": "http://192.168.100.36:50001/Recorder/",
+    "IsDown": false
   },
   "SendCallRecord": {
     "FwUrl": "http://192.168.100.84:8066/api/call/insertcalls"

+ 78 - 74
src/CallCenter.CacheManager/CallRecordManager.cs

@@ -23,101 +23,105 @@ namespace CallCenter.CacheManager
 
         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
         {
-            using var sc = _serviceScopeFactory.CreateScope();
-            var _logger = sc.ServiceProvider.GetService<ILogger<CallRecordManager>>();
-            var time = TimeSpan.FromMinutes(1);
-            //await Task.Delay(time, stoppingToken);
-            while(!stoppingToken.IsCancellationRequested)
+            var _recordSettings = _serviceScopeFactory.CreateScope().ServiceProvider.GetRequiredService<IOptionsSnapshot<RecordSettings>>();
+            if (_recordSettings.Value.IsDown)
             {
-                using var scope = _serviceScopeFactory.CreateScope();
-                var _callRecordRepository = scope.ServiceProvider.GetService<ICallRecordRepository>();
-                //var _recordSettings = scope.ServiceProvider.GetConfigValue<RecordSettings>();
-                var _recordSettings = _serviceScopeFactory.CreateScope().ServiceProvider.GetRequiredService<IOptionsSnapshot<RecordSettings>>();
-                //TODO 查询所有没有下载语音文件的记录
-                var canDown = await _callRecordRepository!.GetCanDownVoice(stoppingToken);
-                
-                if (canDown != null)
+                using var sc = _serviceScopeFactory.CreateScope();
+                var _logger = sc.ServiceProvider.GetService<ILogger<CallRecordManager>>();
+                var time = TimeSpan.FromMinutes(1);
+                //await Task.Delay(time, stoppingToken);
+                while (!stoppingToken.IsCancellationRequested)
                 {
-                    _logger.LogInformation(canDown.Recording);
-                    //TODO 下载语音文件
+                    using var scope = _serviceScopeFactory.CreateScope();
+                    var _callRecordRepository = scope.ServiceProvider.GetService<ICallRecordRepository>();
+                    //var _recordSettings = scope.ServiceProvider.GetConfigValue<RecordSettings>();
+                    
+                    //TODO 查询所有没有下载语音文件的记录
+                    var canDown = await _callRecordRepository!.GetCanDownVoice(stoppingToken);
 
-                    //分隔数据
-                    if (!string.IsNullOrEmpty(canDown.Recording))
+                    if (canDown != null)
                     {
-                        string dir = canDown.Recording.Split("/")[0];
-                        string filename = canDown.Recording.Split("/")[1];
-                        //string url = "";
-                        string url = _recordSettings.Value.Remote + canDown.Recording;//远程地址
-                        string localfile = "Recorder/" + dir + "/"; //本地地址
-                        long startPosition = 0;//上次下载的文件起始位置
-                        FileStream writeStream;//写入本地文件流对象
-                        if (File.Exists(localfile+filename))
-                        {
-                            writeStream = File.OpenWrite(localfile + filename);
-                            startPosition = writeStream.Length;     //获取已经下载的长度
-                            writeStream.Seek(startPosition, SeekOrigin.Current);//本地文件写入位置定位
-                        }
-                        else
-                        {
-                            if (!File.Exists(localfile))
-                            {
-                                System.IO.Directory.CreateDirectory(localfile);
-                            }
-                            writeStream = new FileStream(localfile + filename, FileMode.Create);//保存
-                            startPosition = 0;
-                        }
+                        _logger.LogInformation(canDown.Recording);
+                        //TODO 下载语音文件
 
-                        try
+                        //分隔数据
+                        if (!string.IsNullOrEmpty(canDown.Recording))
                         {
-                            HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);// 打开网络连接
-                            myRequest.Timeout = 600;//10分钟超时
-                            if (startPosition>0)
+                            string dir = canDown.Recording.Split("/")[0];
+                            string filename = canDown.Recording.Split("/")[1];
+                            //string url = "";
+                            string url = _recordSettings.Value.Remote + canDown.Recording;//远程地址
+                            string localfile = "Recorder/" + dir + "/"; //本地地址
+                            long startPosition = 0;//上次下载的文件起始位置
+                            FileStream writeStream;//写入本地文件流对象
+                            if (File.Exists(localfile + filename))
                             {
-                                myRequest.AddRange((int)startPosition); //设置Range值,与上面的writeStream.Seek用意相同,是为了定义远程文件读取位置
+                                writeStream = File.OpenWrite(localfile + filename);
+                                startPosition = writeStream.Length;     //获取已经下载的长度
+                                writeStream.Seek(startPosition, SeekOrigin.Current);//本地文件写入位置定位
                             }
-                            Stream readStream = myRequest.GetResponse().GetResponseStream();// 向服务器请求,获得服务器的回应数据流
-                            if (readStream.CanRead)
+                            else
                             {
-                                _logger.LogInformation("读取设备");
-                                byte[] btArray = new byte[512];// 定义一个字节数据,用来向readStream读取内容和向writeStream写入内容
-                                int contentSize = readStream.Read(btArray, 0, btArray.Length);// 向远程文件读第一次
+                                if (!File.Exists(localfile))
+                                {
+                                    System.IO.Directory.CreateDirectory(localfile);
+                                }
+                                writeStream = new FileStream(localfile + filename, FileMode.Create);//保存
+                                startPosition = 0;
+                            }
 
-                                while (contentSize > 0)// 如果读取长度大于零则继续读
+                            try
+                            {
+                                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);// 打开网络连接
+                                myRequest.Timeout = 600;//10分钟超时
+                                if (startPosition > 0)
                                 {
-                                    writeStream.Write(btArray, 0, contentSize);// 写入本地文件
-                                    contentSize = readStream.Read(btArray, 0, btArray.Length);// 继续向远程文件读取
+                                    myRequest.AddRange((int)startPosition); //设置Range值,与上面的writeStream.Seek用意相同,是为了定义远程文件读取位置
                                 }
+                                Stream readStream = myRequest.GetResponse().GetResponseStream();// 向服务器请求,获得服务器的回应数据流
+                                if (readStream.CanRead)
+                                {
+                                    _logger.LogInformation("读取设备");
+                                    byte[] btArray = new byte[512];// 定义一个字节数据,用来向readStream读取内容和向writeStream写入内容
+                                    int contentSize = readStream.Read(btArray, 0, btArray.Length);// 向远程文件读第一次
 
-                                //关闭流
-                                writeStream.Close();
-                                readStream.Close();
+                                    while (contentSize > 0)// 如果读取长度大于零则继续读
+                                    {
+                                        writeStream.Write(btArray, 0, contentSize);// 写入本地文件
+                                        contentSize = readStream.Read(btArray, 0, btArray.Length);// 继续向远程文件读取
+                                    }
 
-                                //成功 修改状态
-                                canDown.IsDown = true;
-                                canDown.DownRemark = "下载成功(200)";
-                                await _callRecordRepository.UpdateAsync(canDown);
+                                    //关闭流
+                                    writeStream.Close();
+                                    readStream.Close();
+
+                                    //成功 修改状态
+                                    canDown.IsDown = true;
+                                    canDown.DownRemark = "下载成功(200)";
+                                    await _callRecordRepository.UpdateAsync(canDown);
+                                }
+                                else
+                                {
+                                    canDown.IsDown = true;
+                                    canDown.DownRemark = "无法读取(500)";
+                                    await _callRecordRepository.UpdateAsync(canDown);
+                                }
                             }
-                            else
+                            catch (Exception ex)
                             {
+                                _logger.LogInformation(ex.Message);
                                 canDown.IsDown = true;
-                                canDown.DownRemark = "无法读取(500)";
+                                canDown.DownRemark = "未找到文件(404)";
                                 await _callRecordRepository.UpdateAsync(canDown);
+                                writeStream.Close();
+                                await Task.Delay(time, stoppingToken);
                             }
                         }
-                        catch(Exception ex)
-                        {
-                            _logger.LogInformation(ex.Message);
-                            canDown.IsDown = true;
-                            canDown.DownRemark = "未找到文件(404)";
-                            await _callRecordRepository.UpdateAsync(canDown);
-                            writeStream.Close();
-                            await Task.Delay(time, stoppingToken);
-                        }
                     }
-                }
-                else
-                {
-                    await Task.Delay(time, stoppingToken);
+                    else
+                    {
+                        await Task.Delay(time, stoppingToken);
+                    }
                 }
             }
         }

+ 2 - 0
src/CallCenter/Calls/RecordSettings.cs

@@ -11,5 +11,7 @@ namespace CallCenter.Calls
         public string Remote { get; set; }
 
         public string Local { get; set; }
+
+        public bool IsDown { get; set; }
     }
 }