using Hotline.Share.Dtos.FlowEngine.Workflow; using Hotline.Share.Dtos.Order; using Hotline.Share.Enums.CallCenter; using Hotline.Share.Requests; using XF.Utility.EnumExtensions; namespace Hotline.Share.Dtos.TrCallCenter { #region 分机 public class TrTelDto { public string Id { get; set; } public string Name { get; set; } public string TelNo { get; set; } public string Description { get; set; } public string QueueId { get; set; } /// /// 外呼分机组(由内部系统提供) /// public string? CallOutQueue { get; set; } } public class TrTelStateDto { /// /// ID /// public string? Id { get; set; } /// /// 分机号 /// public string? TelNo { get; set; } /// /// 通道流水 /// public string? ChannelUUid { get; set; } /// /// 鉴权用户名 /// public string? TelName { get; set; } /// /// 分机状态机类型 /// public string? Type { get; set; } /// /// 权重 /// public string? Weight { get; set; } /// /// 所在呼叫组 /// public string? Queue { get; set; } /// /// 分机状态 /// public string? State { get; set; } /// /// 前一状态 /// public string? OldState { get; set; } /// /// 注册设备 /// public string? Device { get; set; } /// /// 注册IP /// public string? SipIp { get; set; } /// /// 二级状态 /// public string? PrivateData { get; set; } /// /// 是否注册 /// public string? SipState { get; set; } /// /// 签入时间 /// public string? CreatedAt { get; set; } /// /// 状态变更时间 /// public string? UpdatedAt { get; set; } /// /// 呼叫方向 /// public string? CallDirection { get; set; } /// /// 呼叫号码 /// public string? OtherNumber { get; set; } /// /// 使用线路 /// public string? GateWay { get; set; } /// /// 接听时间 /// public string? AnsweredAt { get; set; } /// /// 分机用户名 /// public string? WorkUserName { get; set; } /// /// 分机用户ID /// public string? WorkUserId { get; set; } } #endregion #region 黑白名单 public class TrAddBlacklistDto { public string Phone { get; set; } public int SpecialFlag { get; set; } } public class TrDelBlacklistDto { public string Phone { get; set; } public int? SpecialFlag { get; set; } } public class TrQueryBlacklistDto { public string? Phone { get; set; } /// /// 1:白名单;2:呼入黑名单;3:呼出黑名单;4:呼入呼出黑名单; /// public int? SpecialFlag { get; set; } } public class TrQueryBlacklistResponseDto { public string Id { get; set; } public string UserId { get; set; } public DateTime CreationTime { get; set; } public string Phone { get; set; } public int SpecialFlag { get; set; } public int? Priority { get; set; } } #endregion #region 登录 public class TrOnDutyDto { public string? TelNo { get; set; } public int TelModelState { get; set; } } public class ChangeTelModelDto { public bool isCallOut { get; set; } } public class TrOnDutyResponseDto { public string? TelNo { get; set; } public string? TelPwd { get; set; } public string? Description { get; set; } public string? QueueId { get; set; } public string? QueueCallOut { get; set; } public DateTime StartTime { get; set; } public bool? IsRest { get; set; } public bool? IsCallHold { get; set; } public bool? IsCallEndArrange { get; set; } public bool? IsTelMute { get; set; } public int Second => CalcSecond(); public ETelModel? TelModel { get; set; } public int CalcSecond() { return (int)(DateTime.Now - StartTime).TotalSeconds; } } #endregion #region 小休 public class TrRestDto { public string Reason { get; set; } } #endregion #region 通话记录(对外) public class ReceiveCallRecordDto { /// /// IPPBX用户名 /// public string user { get; set; } /// /// 可直接访问的通话录音地址 /// public string? recording_file_url { get; set; } /// /// 呼叫方向:呼入 in / 呼出 out /// public string call_direction { get; set; } /// /// 挂断方:主叫挂断 caller / 被叫挂断 callee / 其他未知情况 /// public string hangup_side { get; set; } /// /// 转接分机号 /// public string? agent_transfer_number { get; set; } /// /// 坐席侧通话流水,无坐席参与则为手机侧通话流水 /// public string call_accept { get; set; } /// /// 主叫号码 /// public string caller_id_name { get; set; } /// /// 主叫号码 /// public string caller_id_number { get; set; } /// /// 被叫号码 /// public string destination_number { get; set; } /// /// 通话录音绝对路径 /// public string? recording_file_name { get; set; } /// /// 通话创建时间 /// public string created_time { get; set; } /// /// 接通时间 /// public string? answered_time { get; set; } /// /// 挂机时间 /// public string over_time { get; set; } /// /// 线路号 /// public string gateway { get; set; } /// /// 呼出时自定义的内容 /// public string? other_str { get; set; } /// /// 手机侧通话流水,无坐席参与则为空 /// public string? other_accept { get; set; } /// /// 状态码,语音信箱:999/其他:16 /// public string status { get; set; } /// /// IVR开始时间 /// public string? beginIvrTime { get; set; } /// /// IVR结束时间 /// public string? endIvrTime { get; set; } /// /// 开始等待时间 /// public string? beginQueueTime { get; set; } /// /// 结束等待时间 /// public string? endQueueTime { get; set; } /// /// 开始振铃时间 /// public string? beginRingTime { get; set; } /// /// 结束振铃时间 /// public string? endRingTime { get; set; } /// /// 队列ID /// public string? ola_queue { get; set; } /// /// 批量外呼流水 /// public string? batch_accept { get; set; } /// /// IVR按键信息 /// public string? ivr_dtmf { get; set; } /// /// IVR按键对应动作,需解码 /// public string? dtmf_type { get; set; } public string? phoneTypes { get; set; } } public class ReceiveCallEvaluateDto { public string dtmf { get; set; } public string call_accept { get; set; } public int type { get; set; } } public class PublishCallRecrodDto { public OrderDto? Order { get; set; } /// /// 办理节点信息 /// public WorkflowTraceDto WorkflowTrace { get; set; } public TrCallDto? TrCallRecordDto { get; set; } } #endregion #region 通话记录(对内) public record class GetCallListDto : PagedRequest { /// /// 主叫 /// public string? CPN { get; set; } /// /// 被叫 /// public string? CDPN { get; set; } /// /// 分机号 /// public string? TelNo { get; set; } /// /// 用户名 /// public string? UserName { get; set; } /// /// 电话方向 /// public ECallDirection? CallDirection { get; set; } /// /// 通话状态 /// public EOnState? OnState { get; set; } /// /// 挂断方 /// public EEndBy? EndBy { get; set; } /// /// IVR开始开始时间 /// public DateTime? BeginIvrTimeStart { get; set; } /// /// IVR开始结束时间 /// public DateTime? BeginIvrTimeEnd { get; set; } /// /// IVR结束开始时间 /// public DateTime? EndIvrTimeStart { get; set; } /// /// IVR结束结束时间 /// public DateTime? EndIvrTimeEnd { get; set; } /// /// 开始等待开始时间(队列开始时间) /// public DateTime? BeginQueueTimeStart { get; set; } /// /// 开始等待结束时间(队列开始时间) /// public DateTime? BeginQueueTimeEnd { get; set; } /// /// 结束等待开始时间(队列结束时间) /// public DateTime? EndQueueTimeStart { get; set; } /// /// 结束等待结束时间(队列结束时间) /// public DateTime? EndQueueTimeEnd { get; set; } /// /// 应答开始时间 /// public DateTime? AnsweredTimeStart { get; set; } /// /// 应答结束时间 /// public DateTime? AnsweredTimeEnd { get; set; } /// /// 通话结束开始时间 /// public DateTime? OverTimeStart { get; set; } /// /// 通话结束结束时间 /// public DateTime? OverTimeEnd { get; set; } /// /// 振铃开始开始时间 /// public DateTime? BeginRingTimeStart { get; set; } /// /// 振铃开始结束时间 /// public DateTime? BeginRingTimeEnd { get; set; } /// /// 振铃结束开始时间 /// public DateTime? EndRingTimeStart { get; set; } /// /// 振铃结束结束时间 /// public DateTime? EndRingTimeEnd { get; set; } /// /// 通话开始时间开始 /// public DateTime? CallTimeStart { get; set; } /// /// 通话开始时间结束 /// public DateTime? CallTimeEnd { get; set; } /// /// 工单编号 /// public string? OrderNo { get; set; } /// /// 工单标题 /// public string? Title { get; set; } /// /// 中继号 /// public string? Gateway { get; set; } /// /// 是否智能应答(需要OnState条件传 接通) /// public bool IsAiAnswered { get; set; } /// /// 电话类型 /// public EPhoneTypes? PhoneTypes { get; set; } } public class TrCallDto { /// /// 可直接访问的通话录音地址 /// public string? RecordingFileUrl { get; set; } public string? RecordingBaseAddress { get; set; } public string? RecordingAbsolutePath { get; set; } /// /// 呼叫方向 /// public ECallDirection CallDirection { get; set; } /// /// 呼叫方向 /// public string CallDirectionText => CallDirection.GetDescription(); /// /// 挂断方 /// public EEndBy? EndBy { get; set; } /// /// 挂断方 /// public string EndByText => EndBy.GetDescription(); /// /// 坐席侧通话流水,无坐席参与则为手机侧通话流水 /// public string CallAccept { get; set; } /// /// 主叫 /// public string CPN { get; set; } /// /// 主叫名称 /// public string CPNName { get; set; } /// /// 被叫 /// public string CDPN { get; set; } /// /// 分机号 /// public string TelNo { get; set; } /// /// 用户ID /// public string UserId { get; set; } /// /// 用户名 /// public string UserName { get; set; } /// /// 通话录音绝对路径 /// public string? RecordingFileName { get; set; } /// /// 通话创建时间 /// public DateTime CreatedTime { get; set; } /// /// 接通时间 /// public DateTime? AnsweredTime { get; set; } /// /// 挂机时间 /// public DateTime OverTime { get; set; } /// /// 线路号 /// public string Gateway { get; set; } /// /// 呼出时自定义的内容 /// public string? OtherStr { get; set; } /// /// 手机侧通话流水,无坐席参与则为空 /// public string? OtherAccept { get; set; } /// /// 状态码,语音信箱:999/其他:16 /// public string Status { get; set; } /// /// IVR开始时间 /// public DateTime? BeginIvrTime { get; set; } /// /// IVR结束时间 /// public DateTime? EndIvrTime { get; set; } /// /// 开始等待时间 /// public DateTime? BeginQueueTime { get; set; } /// /// 结束等待时间 /// public DateTime? EndQueueTime { get; set; } /// /// 开始振铃时间 /// public DateTime? BeginRingTime { get; set; } /// /// 结束振铃时间 /// public DateTime? EndRingTimg { get; set; } /// /// 队列ID /// public string? OlaQueue { get; set; } /// /// 批量外呼流水 /// public string? BatchAccept { get; set; } /// /// IVR按键信息 /// public string? IvrDtmf { get; set; } /// /// IVR按键对应动作,需解码 /// public string? DtmfType { get; set; } #region 自定义字段 /// /// 通话时长(挂机时间-接通时间) /// public int Duration { get; set; } /// /// 振铃时长(振铃结束时间-振铃开始时间) /// public int RingTimes { get; set; } /// /// 排队时长(排队结束时间-排队开始时间) /// public int QueueTims { get; set; } /// /// 通话状态 /// public EOnState OnState { get; set; } /// /// 通话状态 /// public string OnStateText => OnState.GetDescription(); public ECallOrderType? CallOrderType { get; set; } /// /// 外部ID /// public string? ExternalId { get; set; } /// /// 工单 /// public OrderDto Order { get; set; } /// /// 归属地 /// public string? MobileAreaName { get; set; } /// /// 运营商 /// public string? OFlag { get; set; } /// /// 卡类型 /// public string? OperatorName { get; set; } #endregion } #endregion #region 关联 public class LinkCallRecordDto { public bool IsOrder { get; set; } public string Id { get; set; } public string CallId { get; set; } } #endregion #region 坐席动作类型 public record TelActionListDto:PagedRequest { public string TelNo { get; set; } public EActionType? ActionTtype { get; set; } public string? UserName { get; set; } public DateTime? StartTime { get; set; } public DateTime? EndTime { get; set; } } public class TelActionListRep { public string Id { get; set; } /// /// 用户ID /// public string UserId { get; set; } /// /// 用户名称 /// public string UserName { get; set; } /// /// 分机号 /// public string TelNo { get; set; } /// /// 分机组 /// public string QueueId { get; set; } /// /// 开始时间 /// public DateTime StartTime { get; set; } /// /// 结束时间 /// public DateTime? EndTime { get; set; } /// /// 动作类型 /// public EActionType ActionType { get; set; } public string ActionTypeText => ActionType.GetDescription(); /// /// 用时 /// public double Duration { get; private set; } } #endregion }