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
}