/************************************************************************* 【文件名】 G_AgentDef.h 【功能模块和目的】 OCX端全局变量声明 【开发者及日期】 郑石诺 2015.05.22 【版本】 V1.0 【版权信息】 Copyright (C)2015 河南加一信息技术有限公司 【更改记录】 *************************************************************************/ // 封装ACD服务器,用于简单扩展 typedef struct tagAcdServer { int m_nAcdServerId; // ACD服务器的标志索引:用于区分主备 CString m_sAcdServerName; // ACD服务器的名称 CString m_sAcdServerIpAddr; // ACD服务器的IP地址 int m_nAcdServerPort; // ACD服务器的端口号 }stAcdServer; // 定义映射结构,建立全局映射表 typedef struct tagMapTable { int codeId; CString codeInfo; }stMapTable; // 座席状态的映射表 static const stMapTable AgentStatusMapTable[] = { // 分机关联状态 {AGENT_STATE_UNKNOWN, "未知座席状态"}, {AGENT_STATE_LOGING, "登录中"}, {AGENT_STATE_FREE, "空闲"}, {AGENT_STATE_BUSY, "通话中"}, {AGENT_STATE_POST_PROCESSING, "话后处理中"}, {AGENT_STATE_REPOSE, "小休"}, {AGENT_STATE_REQUESTED, "被请求"}, {AGENT_STATE_LOGOUT, "注销"} }; // 线路状态的映射表 static const stMapTable LineStatusMapTable[] = { {INNER_STATE_DISABLED, "内线-分机不可用"}, {INNER_STATE_FREE, "内线-空闲"}, {INNER_STATE_INIT, "内线-摘机等待拨号"}, {INNER_STATE_DIALING, "内线-正在拨号"}, {INNER_STATE_RING_BACK, "内线-呼出振铃"}, {INNER_STATE_ALERTING, "内线-来电振铃"}, {INNER_STATE_TALKING, "内线-通话中"}, {INNER_STATE_PLAY_BUSYTONE, "内线-播放忙音中"}, {INNER_STATE_HELD, "内线-通话保持中"}, {INNER_STATE_REMOVE, "内线-话机移除"}, {INNER_STATE_HELD+INNER_STATE_FREE,"内线-保持/空闲"}, {INNER_STATE_HELD+INNER_STATE_INIT,"内线-保持/摘机等待拨号"}, {INNER_STATE_HELD+INNER_STATE_DIALING,"内线-保持/正在拨号"}, {INNER_STATE_HELD+INNER_STATE_RING_BACK,"内线-保持/呼出振铃"}, {INNER_STATE_HELD+INNER_STATE_TALKING,"内线-保持/通话中"} }; // 连接ACD服务器状态的映射表 static const stMapTable LinkStatusMapTable[] = { {PDU_LINK_STATE_UNKNOWN, "连接ACD服务器未知"}, {PDU_LINK_STATE_SUCCESSED, "请求连接ACD服务器成功"}, {PDU_LINK_STATE_FAILED, "请求连接ACD服务器失败"}, {PDU_LINK_STATE_REG_OK, "注册ACD服务器成功"}, {PDU_LINK_STATE_REG_FAILED, "注册ACD服务器失败"}, {PDU_LINK_STATE_DISCONNECTED, "与ACD服务器连接断开"} }; // 错误码的映射表 typedef enum tagErrorCode { NO_ERR = 0, // 无错误 NONE_ERR = 9000, // 无错误 ERR_NO_AGENT_CLIENT, // 座席客户端不存在 ERR_NO_AGENT_OPERATE, // 座席操作类不存在 ERR_NO_AGENT_SOCKET, // 与服务器连接断开 ERR_AGENT_INFO_INVALID, // 座席签入相关信息无效 ERR_CREATE_SOCKET, // 创建MFC的socket套接字失败 ERR_CLOSE_SOCKET, // 关闭MFC的socket套接字失败 ERR_SEND_MSG, // Socket通讯类发送消息失败 ERR_NO_CTI, // CTI未启动 ERR_NO_ACD, // ACD未启动 ERR_NO_IP, // IP地址错误 ERR_NO_EXT, // 分机号不存在 ERR_BIND_EXT, // 分机号已绑定 ERR_BIND_AGENT, // 坐席号已绑定 ERR_PACKAGE_CMD, // 命令打包错误 ERR_IVR_FILE_PATH, // 错误的IVR文件路径:空或者错误 ERR_FAX_FILE_PATH, // 错误的传真文件路径 ERR_FAX_RECV_FILE_PATH, // 错误的传真接收文件路径 ERR_SAY_BUSY, // ACD不能置该座席为忙 ERR_SAY_FREE, // ACD不能置该座席为闲 ERR_RESET_AGENT, // CTI重置该座席失败 ERR_MAKE_CALL, // CTI执行外呼失败 ERR_ANSWER_CALL, // CTI执行应答失败 ERR_DROP_CALL, // CTI执行挂机失败 ERR_HOLD, // CTI执行保持失败 ERR_UN_HOLD, // CTI执行接回失败 ERR_TRANSFER, // CTI执行转移失败 ERR_CANCEL_TRANSFER, // CTI执行取消转移失败 ERR_CANCEL_THREETALK, // CTI执行取消三方失败 ERR_CANCEL, // CTI执行取消失败 ERR_CONSULTATION_CALL, // CTI执行协商呼叫失败 ERR_CONFIRM_TRANSFER, // CTI执行确认转移失败 ERR_THREE_TALK, // CTI执行加三方通话失败 ERR_LISTEN_AGENT, // CTI执行监听座席失败 ERR_INSERT_AGENT, // CTI执行强插座席失败 ERR_INSTEAD, // CTI执行代接座席失败 ERR_CUT_AGENT, // CTI执行强拆座席失败 ERR_INTERCEPT_AGENT, // CTI执行强截座席失败 ERR_FORCE_LOGOUT_AGENT, // 强制签出 ERR_FORCE_CONTROL_AGENT, // CTI执行强制控制座席失败 ERR_TRANSFER_TO_IVR, // CTI执行转移到IVR失败 ERR_MAKECALL_BY_SELF, // 自己呼自己 ERR_TARGET_NUMBER_TOO_LONG, // 目标号码太长 ERR_IVR_FILE_PATH_TOO_LONG, // ivr文件路径太长 ERR_FAX_FILE_PATH_TOO_LONG, // fax文件路径太长 ERR_NO_AGENT_EVENT_MANAGER, // 座席事件管理类为NULL ERR_NO_AGENT_LOG, // 座席日志类为NULL ERR_PREVIEW_MAKECALL, // CTI平台暂不支持 预览外拨 ERR_BEGIN_MUTE, // 开始静音失败 ERR_END_MUTE, // 结束静音失败 ERR_STOP_RECORD, // CTI停止录音失败 ERR_SEND_FAX, // CTI发送传真失败 ERR_RECV_FAX, // CTI接收传真失败 ERR_CREATE_TIMER, // 创建定时器失败 ERR_SUB_AGENT, // 订阅坐席失败 ERR_CANCEL_SUB_AGENT, // 取消订阅坐席失败 ERR_DESTNUM_SPACIL, // 包含特殊字符 ERR_LOGIN_AGIN, // 重复签入 ERR_AUTH_FAILED // 授权验证失败 }ErrorCode; static const stMapTable ErrorCodeMapTable[] = { {NO_ERR, ""}, {NONE_ERR, ""}, {ERR_NO_AGENT_CLIENT, "座席客户端为NULL"}, {ERR_NO_AGENT_OPERATE, "座席操作类为NULL"}, {ERR_NO_AGENT_SOCKET, "座席与ACD连接断开"}, {ERR_AGENT_INFO_INVALID, "座席签入相关信息无效"}, {ERR_CREATE_SOCKET, "创建MFC的socket套接字失败"}, {ERR_CLOSE_SOCKET, "关闭MFC的socket套接字失败"}, {ERR_SEND_MSG, "Socket通讯类发送消息失败"}, //签入时业务性错误 {ERR_NO_CTI, "CTI未启动"}, {ERR_NO_ACD, "ACD未启动"}, {ERR_NO_IP, "IP地址错误"}, {ERR_NO_EXT, "分机号不存在"}, {ERR_BIND_EXT, "分机号已绑定"}, {ERR_BIND_AGENT, "坐席号已绑定"}, {ERR_PACKAGE_CMD, "命令打包错误"}, {ERR_IVR_FILE_PATH, "错误的IVR文件路径:空或者错误"}, {ERR_FAX_FILE_PATH, "错误的传真文件路径"}, {ERR_FAX_RECV_FILE_PATH, "错误的传真接收文件路径"}, {ERR_SAY_BUSY, "ACD不能置该座席为忙"}, {ERR_SAY_FREE, "ACD不能置该座席为闲"}, {ERR_RESET_AGENT, "CTI重置该座席失败"}, {ERR_MAKE_CALL, "CTI执行外呼失败"}, {ERR_ANSWER_CALL, "CTI执行应答失败"}, {ERR_DROP_CALL, "CTI执行挂机失败"}, {ERR_HOLD, "CTI执行保持失败"}, {ERR_UN_HOLD, "CTI执行接回失败"}, {ERR_TRANSFER, "CTI执行转移失败"}, {ERR_CANCEL_TRANSFER, "CTI执行取消转移失败"}, {ERR_CANCEL_THREETALK, "CTI执行取消三方失败"}, {ERR_CANCEL, "CTI执行取消失败"}, {ERR_CONSULTATION_CALL, "CTI执行协商呼叫失败"}, {ERR_CONFIRM_TRANSFER, "CTI执行确认转移失败"}, {ERR_THREE_TALK, "CTI执行加三方通话失败"}, {ERR_LISTEN_AGENT, "CTI执行监听座席失败"}, {ERR_INSERT_AGENT, "CTI执行强插座席失败"}, {ERR_INSTEAD, "CTI执行代接座席失败"}, {ERR_CUT_AGENT, "CTI执行强拆座席失败"}, {ERR_INTERCEPT_AGENT, "CTI执行强截座席失败"}, {ERR_FORCE_LOGOUT_AGENT, "CTI执行强制签出座席失败"}, {ERR_FORCE_CONTROL_AGENT, "CTI执行强制控制座席失败"}, {ERR_TRANSFER_TO_IVR, "CTI执行转移到IVR失败"}, {ERR_MAKECALL_BY_SELF, "目标号码是自己"}, {ERR_TARGET_NUMBER_TOO_LONG,"目标号码太长"}, {ERR_IVR_FILE_PATH_TOO_LONG,"ivr文件路径太长"}, {ERR_FAX_FILE_PATH_TOO_LONG,"fax文件路径太长"}, {ERR_NO_AGENT_EVENT_MANAGER,"座席事件管理类为NULL"}, {ERR_NO_AGENT_LOG, "座席日志类为NULL"}, {ERR_PREVIEW_MAKECALL, "鼎晟CTI平台暂不支持 预览外拨"}, {ERR_BEGIN_MUTE, "开始静音失败"}, {ERR_END_MUTE, "取消静音失败"}, {ERR_STOP_RECORD, "CTI停止录音失败"}, {ERR_SEND_FAX, "CTI发送传真失败"}, {ERR_RECV_FAX, "CTI接收传真失败"}, {ERR_CREATE_TIMER, "创建定时器失败"}, {ERR_SUB_AGENT, "订阅坐席失败"}, {ERR_CANCEL_SUB_AGENT, "取消订阅坐席失败"}, {ERR_DESTNUM_SPACIL, "操作号码中包含特殊字符"}, {ERR_LOGIN_AGIN, "重复签入"}, {ERR_AUTH_FAILED, "授权验证失败"} };