123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- //using Hotline.CallCenter.Calls;
- //using Hotline.Repository.SqlSugar;
- //using Microsoft.Extensions.DependencyInjection;
- //using Microsoft.Extensions.Hosting;
- //using Microsoft.Extensions.Logging;
- //using SqlSugar;
- //namespace Hotline.Application.CallCenter
- //{
- // public class CallRecordManager : BackgroundService
- // {
- // private readonly IServiceScopeFactory _serviceScopeFactory;
- // public CallRecordManager(IServiceScopeFactory serviceScopeFactory, ISugarUnitOfWork<WexDbContext> uowWex)
- // {
- // _serviceScopeFactory = serviceScopeFactory;
- // }
- // //TODO
- // protected override async Task ExecuteAsync(CancellationToken stoppingToken)
- // {
- // //20秒扫描一次威尔信数据库
- // using var sc = _serviceScopeFactory.CreateScope();
- // var _logger = sc.ServiceProvider.GetService<ILogger<CallRecordManager>>();
- // var time = TimeSpan.FromSeconds(20);
- // while (!stoppingToken.IsCancellationRequested)
- // {
- // using var scope = _serviceScopeFactory.CreateScope();
- // var _wexCallRecordRepository = scope.ServiceProvider.GetService<IWexCallRecordRepository>();
- // var _uowWex = scope.ServiceProvider.GetService<ISugarUnitOfWork<WexDbContext>>();
- // var wexRes = _uowWex?.Db.Ado.SqlQuery<WexRecord>("select * from view_telinfo_full where IsSynch=@IsSynch and IsOk = @IsOk and CallType<>'会议' ", new { IsSynch = 0, IsOk = 1 });
- // if (wexRes != null)
- // {
- // foreach (var item in wexRes)
- // {
- // var wexCallRecord = new WexCallRecord();
- // wexCallRecord.CallId = item.CallId;
- // //呼叫方向
- // switch (item.CallType)
- // {
- // case "外呼":
- // wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.Out;
- // break;
- // case "来电":
- // wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
- // break;
- // case "中继":
- // wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
- // break;
- // case "留言":
- // wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
- // break;
- // case "黑名单":
- // wexCallRecord.Direction = Share.Enums.CallCenter.ECallDirection.In;
- // break;
- // default:
- // break;
- // }
- // //TODO 分机号取出有误差(可能存在工号的问题)
- // if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.Out)
- // {
- // wexCallRecord.CPN = item.TelPhone;
- // wexCallRecord.CDPN = item.GongHao;
- // }
- // else
- // {
- // wexCallRecord.CPN = item.GongHao;
- // wexCallRecord.CDPN = item.TelPhone;
- // }
- // wexCallRecord.StaffNo = item.GongHao;
- // wexCallRecord.AreaName = item.AreaName;
- // wexCallRecord.InIvrTime = item.BeginIvrTime;
- // wexCallRecord.OutIvrTime = item.EndIvrTime;
- // wexCallRecord.InQueueTime = item.BeginQueueTime;
- // wexCallRecord.OutQueueTime = item.EndQueueTime;
- // wexCallRecord.BeginTime = item.CallTime;
- // wexCallRecord.BeginRingTime = item.BeginRingTime;
- // wexCallRecord.EndRingTime = item.EndRingTime;
- // wexCallRecord.RingTimes = int.Parse(item.RingTimes);
- // wexCallRecord.AnsweredTime = item.BeginTalking;
- // wexCallRecord.ByeTime = item.EndTalking;
- // wexCallRecord.TalkTime = int.Parse(item.TalkLength);
- // wexCallRecord.RecordUrl = item.RecordUrl;
- // wexCallRecord.RecordName = item.RecordName;
- // wexCallRecord.SourceRecord = item.SourceRecord;
- // wexCallRecord.TrunkLine = item.TrunkNum;
- // switch (item.NoAnswerResult)
- // {
- // case "客户先挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "外呼挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "员工先挂机":
- // if (wexCallRecord.Direction == Share.Enums.CallCenter.ECallDirection.In)
- // {
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
- // }
- // else
- // {
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // }
- // break;
- // case "坐席振铃挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.To;
- // break;
- // case "对端振铃挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "自助语音挂机":
- // //TODO 确定不了是自动挂机 还是来电挂机
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "排队挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "中继转接挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "来电挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "开始转人工挂机":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "电话广播":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // case "播放工号":
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // default:
- // wexCallRecord.EndBy = Share.Enums.CallCenter.EEndBy.From;
- // break;
- // }
- // switch (item.Result)
- // {
- // case "成功":
- // wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
- // break;
- // case "失败":
- // wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
- // break;
- // case "接听":
- // wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.On;
- // break;
- // case "未接":
- // wexCallRecord.OnState = Share.Enums.CallCenter.EOnState.NoOn;
- // break;
- // default:
- // break;
- // }
- // wexCallRecord.Result = item.Result;
- // wexCallRecord.EvaluateResult = item.AssessName;
- // var id = await _wexCallRecordRepository.AddAsync(wexCallRecord);
- // if (!string.IsNullOrEmpty(id))
- // {
- // //执行更新已下载数据
- // _uowWex?.Db.Ado.ExecuteCommand("update telinfo set IsSynch=1 where GUID=@CallId", new { CallId = wexCallRecord.CallId });
- // }
- // }
- // }
- // else
- // {
- // await Task.Delay(time, stoppingToken);
- // }
- // }
- // }
- // public class WexRecord
- // {
- // [SugarColumn(ColumnName = "CallID")]
- // public string CallId { get; set; }
- // [SugarColumn(ColumnName = "CallType")]
- // public string CallType { get; set; }
- // [SugarColumn(ColumnName = "Telphone")]
- // public string TelPhone { get; set; }
- // [SugarColumn(ColumnName = "TrunkLinePhone")]
- // public string TrunkNum { get; set; }
- // [SugarColumn(ColumnName = "GongHao")]
- // public string GongHao { get; set; }
- // [SugarColumn(ColumnName = "AreaName")]
- // public string AreaName { get; set; }
- // [SugarColumn(ColumnName = "BeginIvrTime")]
- // public DateTime? BeginIvrTime { get; set; }
- // [SugarColumn(ColumnName = "EndIvrTime")]
- // public DateTime? EndIvrTime { get; set; }
- // [SugarColumn(ColumnName = "BeginQueueTime")]
- // public DateTime? BeginQueueTime { get; set; }
- // [SugarColumn(ColumnName = "EndQueueTime")]
- // public DateTime? EndQueueTime { get; set; }
- // [SugarColumn(ColumnName = "BeginRingTime")]
- // public DateTime? BeginRingTime { get; set; }
- // [SugarColumn(ColumnName = "EndRingTime")]
- // public DateTime? EndRingTime { get; set; }
- // [SugarColumn(ColumnName = "RingTimes")]
- // public string RingTimes { get; set; }
- // [SugarColumn(ColumnName = "CallTime")]
- // public DateTime? CallTime { get; set; }
- // [SugarColumn(ColumnName = "BeginTalking")]
- // public DateTime? BeginTalking { get; set; }
- // [SugarColumn(ColumnName = "EndTalking")]
- // public DateTime? EndTalking { get; set; }
- // /// <summary>
- // /// 通话时长
- // /// </summary>
- // [SugarColumn(ColumnName = "TalkLenth")]
- // public string TalkLength { get; set; }
- // [SugarColumn(ColumnName = "RecordUrl")]
- // public string RecordUrl { get; set; }
- // [SugarColumn(ColumnName = "RecordName")]
- // public string RecordName { get; set; }
- // [SugarColumn(ColumnName = "SourceRecord")]
- // public string SourceRecord { get; set; }
- // [SugarColumn(ColumnName = "noAnswerResult")]
- // public string NoAnswerResult { get; set; }
- // [SugarColumn(ColumnName = "Result")]
- // public string Result { get; set; }
- // [SugarColumn(ColumnName = "AssessName")]
- // public string AssessName { get; set; }
- // }
- // }
- //}
|