qinchaoyue 6 månader sedan
förälder
incheckning
2bd8016f89

+ 10 - 0
src/Hotline.Api/Controllers/Bi/BiCallController.cs

@@ -498,6 +498,16 @@ public class BiCallController : BaseController
     public async Task<List<CallHotLineDto>> QueryGateWay([FromQuery] BiQueryGateWayDto dto)
         => await _callReportApplication.GetCallHotLineListAsync(dto, HttpContext.RequestAborted);
 
+    /// <summary>
+    /// 从兴唐库获取数据修复CallNative库中没有 CallState 值的数据
+    /// </summary>
+    /// <returns></returns>
+    [HttpGet("fix-xingtang-callnative")]
+    public async Task FixCallnativeAsync()
+    {
+        await _callReportApplication.FixCallnativeAsync(HttpContext.RequestAborted);
+    }
+
     /// <summary>
     /// 热线号码统计导出
     /// </summary>

+ 10 - 1
src/Hotline.Application/Mappers/CallMapperConfigs.cs

@@ -83,9 +83,18 @@ namespace Hotline.Application.Mappers
                 .Map(d => d.WaitDuration, s => s.WaitTime)
                 .Map(d => d.AudioFile, s => s.AudioFile)
                 .Map(d => d.AgentTransferNumber, s => s.TransCalled)
+                .AfterMapping((s, d) => {
+                    if (s.CallState == 0 || s.CallState == 4 || s.CallState == 5 || s.CallState == 8)
+                        d.CallState = ECallState.On;
+                    if (s.CallState == 1)
+                        d.CallState = ECallState.NotAcceptedHang;
+                    if (s.CallState == 2 || s.CallState == 3 || s.CallState == 7)
+                        d.CallState = ECallState.Missed;
+                    if (s.CallState == 6)
+                        d.CallState = ECallState.IVRNoAccept;
+                    })
                 .AfterMapping((s, d) =>
                 {
-                    //todo 等待兴唐补全Disposition字段
                     d.EndBy = d.Direction == ECallDirection.In
                         ? EEndBy.From
                         : EEndBy.To;

+ 1 - 0
src/Hotline.Application/StatisticalReport/ICallReportApplication.cs

@@ -46,6 +46,7 @@ namespace Hotline.Application.StatisticalReport
         /// <param name="cancellationToken"></param>
         /// <returns></returns>
         Task<(int, List<QueryCallsStatisticsDetailOutDto>)> QueryCallsStatisticsDetailAsync(QueryCallsStatisticsDetailInDto dto, CancellationToken cancellationToken);
+        Task FixCallnativeAsync(CancellationToken requestAborted);
         // Task<PagedDto<TrCallDto>> GetCallDetailListAsync(GetCallListDto dto, CancellationToken cancellationToken);
     }
 }

+ 33 - 0
src/Hotline.Share/Enums/CallCenter/ECallState.cs

@@ -1,14 +1,47 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
 namespace Hotline.Share.Enums.CallCenter
 {
+    /// <summary>
+    /// 呼叫状态
+    /// 兴唐状态: 0: 留言; 1: 队列等待超时; 2: 坐席振铃超时; 3: 未接; 4: 满意度; 5: 通话; 6: IVR; 7: 振铃挂机; 8: 分机互打挂机; 9: ASR交互;
+    /// </summary>
     public enum ECallState
     {
+        /// <summary>
+        /// 无效
+        /// </summary>
+        [Description("无效")]
+        Invalid = 0,
+
+        /// <summary>
+        /// 接通
+        /// </summary>
+        [Description("接通")]
         On = 1,
+
+        /// <summary>
+        /// 未接
+        /// </summary>
+        [Description("未接")]
         Missed = 2,
+
+        /// <summary>
+        /// 呼入队列挂断
+        /// </summary>
+        [Description("呼入队列挂断")]
+        NotAcceptedHang = 3,
+
+
+        /// <summary>
+        /// IVR挂断
+        /// </summary>
+        [Description("IVR挂断")]
+        IVRNoAccept = 5
     }
 }

+ 7 - 6
src/Hotline/CallCenter/Calls/CallNative.cs

@@ -161,15 +161,16 @@ namespace Hotline.CallCenter.Calls
         [SugarColumn(ColumnDescription = "电话回复内容")]
         public string? ReplyTxt { get; set; }
 
-        //public string? ExternalId { get; set; }
-
-        //public string? OrderNo { get; set; }
-
-        //public string? Title { get; set; }
-
         /// <summary>
         /// 转接分机号
         /// </summary>
+        [SugarColumn(ColumnDescription = "转接分机号")]
         public string? AgentTransferNumber { get; set; }
+
+        /// <summary>
+        /// 呼叫状态
+        /// </summary>
+        [SugarColumn(ColumnDescription = "呼叫状态")]
+        public ECallState? CallState { get; set; }
     }
 }

+ 1 - 1
src/XingTang.Sdk/XingtangCall.cs

@@ -81,7 +81,7 @@ public class XingtangCall
     public int RingTime { get; set; }
 
     /// <summary>
-    /// 呼叫状态 0 留言 1 队列等待超时 2 坐席振铃超时 3 未接 4 满意度 5 通话 6 IVR 7 振铃挂机 8 分机互打挂机 9 ASR交互
+    /// 呼叫状态 0: 留言; 1: 队列等待超时; 2: 坐席振铃超时; 3: 未接; 4: 满意度; 5: 通话; 6: IVR; 7: 振铃挂机; 8: 分机互打挂机; 9: ASR交互;
     /// </summary>
     public int CallState { get; set; }