www.pudn.com > dialogic_IVR.rar > apiuse.h
#ifndef __APIUSE_H__
#define __APIUSE_H__
#define _CALL_DEBUG "话务统计"
#include "msgtype.h"
#pragma pack(push,1)
#ifndef US
#define US USHORT
#endif
#ifndef UC
#define UC UCHAR
#endif
#ifndef UL
#define UL ULONG
#endif
#define UC_NO_USE 0xFF
#define US_NO_USE 0xFFFF
#define UL_NO_USE 0xFFFFFFFF
#define UC_ERROR 0xFF
#define US_ERROR 0xFFFF
#define UL_ERROR 0xFFFFFFFF
//变量名: ulSecurity
//定义系统用户的权限
#define RIGHT_BUSYIDLE 0x00000001 // 示忙/示闲
#define RIGHT_MUTEONOFF 0x00000002 // 静音/非静音
#define RIGHT_HOLDFETCH 0x00000004 // 保持/取保持
#define RIGHT_CONNECTHOLD 0x00000008 // 连接保持
#define RIGHT_CALLOUT 0x00000010 // 普通呼出
#define RIGHT_INTERCALL 0x00000020 // 内部呼叫
#define RIGHT_TRANSFER 0x00000040 // 内部转移
#define RIGHT_TRANSITTALK 0x00000080 // 接转接来话
#define RIGHT_TRITALK 0x00000100 // 三方通话
#define RIGHT_TRANSITOUT 0x00000200 // 转出
#define RIGHT_SSPTRANSIVR 0x00000400 // 人工转移自动
#define RIGHT_DENYTALK 0x00000800 // 不接来话
#define RIGHT_SUPERVISEINSERT 0x00001000 // 监听/监听插入
#define RIGHT_INTERCEPT 0x00002000 // 拦截
#define RIGHT_FORCEOUTBUSYIDLE 0x00004000 // 强制签出/强制示忙/强制示闲
#define RIGHT_SPYRECORDPLAY 0x00008000 // 质检录音/质检放音
#define RIGHT_SPYMONITOR 0x00010000 // 质检监视
#define RIGHT_ASSESSMANAGER 0x00020000 // 考评管理员
#define RIGHT_ASSESS 0x00040000 // 普通考评员
#define RIGHT_ALARM 0x00080000 // 告警台
#define RIGHT_REPORT 0x00100000 // 报表处理员
#define RIGHT_SERVICEEXPERT 0x00200000 // 话务专家员
#define RIGHT_MONITOR 0x00400000 // 监控台
#define RIGHT_SYSTEM 0x00800000 // 数管员
#define RIGHT_REPORTMANAGER 0x01000000 // 报表管理员
#define RIGHT_HOMECALLOUT 0x02000000 // 国内长途呼出
#define RIGHT_ABOARDCALLOUT 0x04000000 // 国际长途呼出
const SHORT DBCCC_MAXLEN_USERNAME = 20; //最大用户名长度
const SHORT DBCCC_MAXLEN_PASSWORD = 8; //最大口令长度
const UCHAR MAX_FILENAME_LEN = 40; //文件名长度
const CHAR MAX_VERSION_LEN = 20; //版本信息长度
const UCHAR MAXLEN_EXTEN = 24; //最大电话号码长度
const UCHAR MAX_PILOT_LEN = MAXLEN_EXTEN; //导引号码长度
const SHORT MAX_PEOPLE_NAME_LENGTH = 20; //代理人姓名长度
const SHORT AGENT_NAME_LENGTH = MAX_PEOPLE_NAME_LENGTH; //代理人姓名长度
const SHORT MAX_SKILL_NAME_LENGTH = 20; //技能名称长度
const SHORT MAX_DN_LENGTH = 2*MAXLEN_EXTEN; //DN最大长度
const SHORT MAX_IVR_INNO_LENGTH = MAXLEN_EXTEN; //最大接入码长度
const SHORT MAX_SYSINNO_NUM = 200; //系统接入码数目
const SHORT MAX_VALUE_LENGTH = 1024; //配置项目长度
const SHORT MAX_WORKGROUP_NAME_LENGTH = 100; //班组名称长度
const SHORT ERROR_NOTE_LENGTH = 200; //系统错误说明长度
const SHORT MAX_SKILL_STRING_LENGTH = 200; //技能队列描述长度
const SHORT MAX_SKILLINFO_LEN = MAX_SKILL_STRING_LENGTH; //技能队列描述长度
const SHORT MAX_INNO_INFO_LEN = 200; //接入码对应功能描述长度
const SHORT MAX_SERVICE_DESCRIPTION_LEN = 100; //业务描述字符
const SHORT MAX_HISTORY_ITEMS = 5; //一次取得的最大历史记录条数
const SHORT MAX_HISTORY_LENGTH = 1024; //一条历史记录长度
const SHORT MAX_CLASS_NAME_LENGTH = 20; //级别名称长度
const SHORT MAX_SERIALNO_LENGTH = 20; //最大流水号码长度
const SHORT MAX_ANI_LENGTH = MAXLEN_EXTEN; //呼叫主叫长度
const SHORT MAX_DNIS_LENGTH = MAXLEN_EXTEN; //呼叫被叫长度
const SHORT MAX_SECTIONNAME_LENGTH = 32; //Section长度
const SHORT MAX_KEYNAME_LENGTH = 32; //Key长度
const SHORT MAX_VALUENAME_LENGTH = 1024; //Value缺省长度
const SHORT MAX_CUSTOMER_ID_LENGTH = 15; //用户标识长度
const SHORT MAX_COMPANY_LENGTH = 40; //公司名字长度
const SHORT MAX_ADDRESS_LENGTH = 40; //地址名字长度
const SHORT MAX_AREA_LENGTH = 20; //专业
const SHORT MAX_LANGUAGE_LENGTH = 10; //语言
const SHORT MAX_DESCRIPTION_LENGTH = 100; //用户简要介绍
const USHORT MAX_CALLDATA_LEN = 1024; //呼叫数据长度
const UCHAR MAXLEN_PILOTNBR = MAXLEN_EXTEN;
const SHORT MAX_PACKET_LEN = 1024*5; //一个包最大长度
const UCHAR MAX_COMPUTER_NAME_SIZE = 30;
const USHORT MAX_AGENT_KEEPCALL_NUMS = 100; //一个话务员最大的保持呼叫数
const MAX_CCC_DATA = 36000;
const SHORT MAX_SKILL_NUM = 300; //最大的技能项目
const SHORT MAX_NODE_NUM = 1000; //最大的节点数目
const SHORT MAX_TREE_NUM = 500; //最大技能树个数
const SHORT MAX_SERVICE_NUM = 300; //最大的业务类型
const SHORT MAX_LEAF_NUM = 1000; //最大的叶子节点数目
const SHORT MAX_WORKGROUP_NUM = 500; //最大工作组数目
const SHORT MAX_SKILL_GROUP = 300; //最大的技能分组
const SHORT MAX_DN_NUM = 500; //最大的DN数目
const SHORT MAX_PROXY_NUM = 100; //最大的代理服务器数目
const SHORT MAX_CCC_NUM = 1500; //最大的CCC数目
const SHORT MAX_NODES_COUNT = MAX_PROXY_NUM + MAX_CCC_NUM;
const SHORT MAX_IVR_SERVICE_NUM = 500; //最大IVR业务流程数目
const SHORT MAX_IVR_INNO_NUM = 500; //最大IVR接入码数目
const SHORT MAX_DNIS_NUM = 300; //最大被叫数目
const SHORT MAX_SECT_NUM = 5; //一天中的最大分段数
const SHORT MAX_HOLIDAY_NUM = 50; //最大假期数目
const SHORT MAX_ACCESS_NUM = 16; //接入码个数
const SHORT MAX_CONFERENCE_NUM = 1000;
const SHORT WORKGROUP_AGENT_NUM = 100;
const SHORT MAX_USER_CLASS_NUM = 15;
const SHORT MAX_OUTBOUND_NUM = 100; //一次取回的呼出呼叫数目
const USHORT MAX_CBK_NUM = 4096;
const USHORT MAX_ANI_NUM_ONE_PACKAGE = 500; //数据库一次返回的最大主叫号码数目
const UCHAR DRV_MAX_GET_NUM = 24; //最大收号长度
const UCHAR MAX_START_DIGIT_BCD_LEN = 9 ;
const UCHAR MAX_STOP_DIGIT_BCD_LEN = 9 ;
const UCHAR E1_MAX_FILENAME_LEN = 40;
const UCHAR MAX_E1_SENTENCE_LENGTH = 215;
const USHORT MAX_REPORT_BUFF_SIZE = 2000; //最大报音缓冲区
const USHORT MAX_QC_SKILL_GROUP_SIZE = 50;//最大质检员能处理的技能组个数
const USHORT MAX_QC_CALLQUEUE_SIZE = 50;//最大质检员能处理的呼叫队列个数
enum ACK_cause
{
AGENT_FAULT=0, //无效话务员
CALL_FAULT, //无效的呼叫
STATE_FAULT, //状态错误
CONNECT_FAIL, //连接错误
GET_HOLD_FAIL, //取保持错误
HOLD_FAIL, //保持错误
TIMEOUT, //超时
OCCUPY_FAIL, //占用话务员错误
USER_DISCONNECT , //用户挂机
NO_CONF, //申请不到会场
NO_RIGHT, //没有权限
ICD_ACCESS_CODE, //ICD系统接入码
RESOURCE_UNAVAIL, //资源不可用
NO_SUCH_NUMBER, //空号
CALLED_BUSY //被叫忙
};
//呼出类型
enum CCC_CALL_OUT_MODE
{
NORMAL_CALL_OUT, //普通呼出
FORCE_INSERT_CALL_OUT, //强插
PRI_CALL_OUT //PRI呼出
};
enum CCC_REPORT_VOICE_TYPE
{
SECRET_NUMBER_VOICE = 10, //保密电话
NULL_NUMBER_VOICE = 11, //空号
};
//设置监视的类型
enum MI_TYPE
{
MI_TRUNKNO = 0, //按中继监视
MI_CALLER, //按主叫监视
MI_CALLED //按被叫监视
};
//所有设备类型定义
enum ICD_DEVICETYPE
{
NotKnowType = 0,
QueueType = 1,
AgentType,
IvrType,
ConferenceType,
CallPartyType,
AgentQueueType
};
enum CONNECT_BY_TYPE
{
BY_DIRECT = 0,
BY_CONFERENCE
};
enum CALL_DIRECT_MODE //离开设备原因
{
NORMAL_DIRECT = 0 , //正常离开
KEEP_DIRECT, //保持
WAIT_DIRECT, //等待
RELEASE_DIRECT //释放
};
//*******************************************
//CccNotifyConfigChaned ucType
//*******************************************
enum CONFIG_NOTIFY_TYPE
{
NOTIFY_IVR = 0,
NOTIFY_PROXY ,
NOTIFY_LOGDBSERVER ,
NOTIFY_ROTINGDBSERVER ,
NOTIFY_OUTBOUNDDBSERVER
};
enum MONITOR_TALK_FLAG
{
NOT_ALLOWED_TALK = 0,
ALLOWED_TALK = 1
};
enum RELOCATION_DIRECTION
{
SEEK_FORWARD, // 0: ----> 向前
SEEK_BACKWARD // 1: <---- 向后
};
enum RELOCATION_SEEK_FROM
{
SEEK_FROM_HEAD=0, //文件头
SEEK_FROM_CURRENT, //文件当前位置
SEEK_FROM_TAIL //文件尾
};
enum CallFlag
{
CALL_IN =0 , //呼入
CALL_OUT //呼出
} ;
enum ACD_Call_Feature_Type //排队机呼叫特征
{
ACD_SP_CALL_NORMAL =0, // 普通呼叫
ACD_SP_CALL_SPECIAL , // SPECIAL CALL , USED BY CONFERENCE CALL
ACD_KE11_CALL, // KE=11, USED BY VMS CALL--GET VOICE INFORMATION
ACD_KE15_CALL, // KE=15, USED BY VMS CALL--DELETE VOICE INFORMATION
ACD_BP_CALL , // BP,USED BY VMS CALL--SEND INFORMATION TO BP
ACD_SP_CALL_LONG, //长途呼叫
ACD_OP_CALL_OUT, //=6座席呼出类型
};
enum Call_Feature_Type //CCS内部呼叫特征,目前与排队机呼叫特征不一致的是OP_CALL_OUT
{
SP_CALL_NORMAL =0, // 普通呼叫
SP_CALL_SPECIAL , // SPECIAL CALL , USED BY CONFERENCE CALL
KE11_CALL, // KE=11, USED BY VMS CALL--GET VOICE INFORMATION
KE15_CALL, // KE=15, USED BY VMS CALL--DELETE VOICE INFORMATION
BP_CALL , // BP,USED BY VMS CALL--SEND INFORMATION TO BP
SP_CALL_LONG, //长途呼叫
INTER_CALL, //内部呼叫
SP_CALL_OUT, //呼出
OP_CALL_OUT, //座席呼出类型,可以支持强插在发送到SIP模块后要转换成6
//而在呼叫对象中转换为用SP_CALL_OUT
} ;
enum AGENT_TYPE //座席类型
{
EXTENSION_TYPE = 0, //分机类型
USERLINE_TYPE, //用户线类型
BDAGENT_TYPE //1B+1D座席类型
};
enum AGENT_STATE //座席状态
{
NOT_LOGINED = 0, //未签入
IDLE , //空闲状态
PREOCCUPY , //预占用状态
OCCUPY , //占用状态
ANSWERING , //应答状态
TALKING , //通话状态
WORKING, //工作状态
SETBUSY //忙状态
};
enum IVR_TYPE {
IVR_RCP,
IVR_SPP,
};
enum AGENT_OP_STATUS //座席状态
{
//话务员主要状态的变化
ops_null=0, //坐席签出
ops_login, //坐席签入
ops_idle, //空闲
ops_busy, //示忙
ops_active, //通话态
ops_wait_answer,//给话务员分来话后等话务员应答
ops_wait_connect,//话务员应答或话务员呼出成功后等待连接成功的消息
ops_release, //话务员拆线
ops_disconnect, //请求释放
ops_wait_alerting,//呼出时等被叫振铃
ops_tri_tlak = 10,//三方通话
ops_fail, //坐席通道坏或坐席死机
ops_ok , //坐席通道或坐席已恢复
ops_hungup ,//人工转自动,话务员处于挂起状态
//话务员是否被监听或插入
ops_supervise_insert, //被监听或插入
ops_stop_supervise_insert, //停止被监听或插入
//话务员是否被录音
ops_record_begin,//被录音
ops_record_stop ,//停止被录音
//话务员是否被监视
ops_monitor,//被监视
ops_stop_monitor,//停止被监视
///////////////
ops_monitor_supervisor_other = 20,//监听或插入
ops_stop_monitor_supervisor_other,//停止监听或插入
ops_playvoice,//放音
ops_stop_playvoice,//停止放音
ops_surveillant,//监视
ops_stop_surveillant =25 ,//停止监视
ops_rest, //座席休假(休息)
ops_work, //工作状态
ops_monitor_insert_call //监听插入呼叫
};
enum TIMEOUT_PROCESS_STYLE //Timeout or Transfer Type
{
RELEASE_STYLE = 0,
TRANSFER_STYLE
};
//告警类型
enum ALARM_TYPE
{
ResourceAlarm = 3,
IvrRcpDisconnectAlarm,
SSPDead, //排队机死机
ProxyDisconnetAlarm
};
//告警级别
enum ALARM_LEVEL
{
Note = 0,
General,
Important,
Critical
};
enum voice_resource //放音资源类型
{
SPT_RESOURCE=0, //SPT放音
VP_RESOURCE, //VP放音
SIG_RESOURCE, //SIG信号音
NO_VOICE //没有语音
};
enum Play_Type //放音类型
{
PLAY_NOTE=0, // 放提示音
PLAY_LOCAL_FILE, // 没用,仅为与A型机INtess业务兼容
PLAY_SPEC_FILE, // 放指定文件
PLAY_TEM_FILE, // 放临时文件
PLAY_COMBINE, // 放合成音
PLAY_QC_FILE //播放质检录音
};
enum PLAY_COLLECT
{
PLAY_VOICE = 0 , //放音
GET_USERINFORMATION //收号
};
enum ACD_TRUNK_TYPE
{
INBOUND_TRUNK = 0, //入中继
OUTBOUND_TRUNK, //出中继
BIDIRECT_TRUNK //双向中继
};
//呼叫拆线原因
enum SP_Disconnect_Cause
{
SP_Normal_Clearing_Cause = 0 , /* 呼叫正常拆除 */
SP_No_Resource_Cause , /* 资源已占满 */
SP_Timeout_Cause , /* 超时 */
SP_Fault_Cause , /* 呼叫异常拆除,*/ //呼出失败 A4 B4
SP_No_Such_Number , /* 空号 ,B5或A5 */
SP_Vms_Unavail , /* 邮箱已满或暂停使用,向对端发B4*/
SP_Not_Permit , // 不允许呼入邮箱
SP_FAIL_CONNECT,
SP_CALLED_BUSY = 47,
// CCS
SP_CCS_SIPEx_UIM_SCP_USER_Disconnect_Response = 56,
SP_CCS_SIP_WaitRelease = 57,
SP_CCS_SIP_VPRelease,
SP_CCS_SIP_NormalRelease,
SP_CCS_SIP_CcsNormalRelease,
SP_CCS_SIP_UIMDisconTimeout,
SP_CCS_SIP_SpecialTimeout,
SP_CCS_SIP_EnterIdle,
SP_CCS_IVR_Disconnect1 = 64,
SP_CCS_IVR_Disconnect2,
SP_CCS_IVR_Disconnect3,
SP_CCS_IVR_Disconnect4 = 67,
SP_CCS_IVR_Disconnect5,
SP_CCS_IVR_Disconnect6,
SP_CCS_IVR_Disconnect7,
SP_CCS_IVR_Disconnect8,
SP_CCS_IVR_Disconnect9,
SP_CCS_IVR_Disconnect10,
SP_CCS_IVR_Disconnect11,
SP_CCS_IVR_Disconnect12,
SP_CCS_IVR_Disconnect13,
SP_CCS_IVR_Disconnect14 = 77,
SP_CCS_IVR_Disconnect15,
SP_CCS_IVR_Disconnect16,
SP_CCS_IVR_Disconnect17,
SP_CCS_IVR_Disconnect18,
SP_CCS_IVR_Disconnect19,
SP_CCS_IVR_Disconnect20,
SP_CCS_IVR_Disconnect21,
SP_CCS_IVR_Disconnect22,
SP_CCS_IVR_Disconnect23,
SP_CCS_MC_Disconnect1 = 87,
SP_CCS_MC_Disconnect2,
SP_CCS_MC_Disconnect3,
SP_CCS_MC_Disconnect4,
SP_CCS_MC_Disconnect5,
SP_CCS_MC_Disconnect6,
SP_CCS_MC_Disconnect7,
SP_CCS_MC_Disconnect8,
SP_CCS_MC_Disconnect9,
SP_CCS_MC_Disconnect10,
SP_CCS_MC_Disconnect11 = 97,
SP_CCS_MC_Disconnect12,
SP_CCS_MC_Disconnect13,
SP_CCS_MC_Disconnect14,
SP_CCS_MC_Disconnect15,
SP_CCS_MC_Disconnect16,
SP_CCS_MC_Disconnect17,
SP_CCS_MC_Disconnect18,
SP_CCS_MC_Disconnect19,
SP_CCS_MC_Disconnect20,
SP_CCS_MC_Disconnect21 = 107,
SP_CCS_MC_Disconnect22,
SP_CCS_MC_Disconnect23,
SP_CCS_MC_Disconnect24,
SP_CCS_MC_Disconnect25,
SP_CCS_OP_Disconnect1 = 113,
SP_CCS_OP_Disconnect2,
SP_CCS_OP_Disconnect3,
SP_CCS_OP_Disconnect4,
SP_CCS_OP_Disconnect5 = 117,
SP_CCS_OP_Disconnect6,
SP_CCS_OP_Disconnect7,
SP_CCS_OP_Disconnect8,
SP_CCS_OP_Disconnect9,
SP_CCS_OP_Disconnect10,
SP_CCS_OP_Disconnect11,
SP_CCS_OP_Disconnect12,
SP_CCS_OP_Disconnect13,
SP_CCS_OP_Disconnect14,
SP_CCS_OP_Disconnect15 = 127,
SP_CCS_OP_Disconnect16,
SP_CCS_OP_Disconnect17,
SP_CCS_OP_Disconnect18,
SP_CCS_OP_Disconnect19,
SP_CCS_OP_Disconnect20,
SP_CCS_OP_Disconnect21,
SP_CCS_OP_Disconnect22,
SP_CCS_OP_Disconnect23,
SP_CCS_OP_Disconnect24,
SP_CCS_OP_Disconnect25 = 137,
SP_CCS_OP_Disconnect26,
SP_CCS_OP_Disconnect27,
SP_CCS_OP_Disconnect28,
SP_CCS_OP_Disconnect29,
SP_CCS_OP_Disconnect30,
SP_CCS_OP_Disconnect31,
SP_CCS_OP_Disconnect32,
SP_CCS_OP_Disconnect33,
SP_CCS_OP_Disconnect34,
SP_CCS_OP_Disconnect35 = 147,
SP_CCS_OP_Disconnect36,
SP_CCS_OP_Disconnect37,
SP_CCS_OP_Disconnect38,
SP_CCS_OP_Disconnect39,
SP_CCS_OP_Disconnect40,
SP_CCS_OP_Disconnect41,
SP_CCS_OP_Disconnect42,
SP_CCS_OP_Disconnect43,
SP_CCS_OP_Disconnect44,
SP_CCS_OP_Disconnect45 = 157,
SP_CCS_OP_Disconnect46,
SP_CCS_OP_Disconnect47,
SP_CCS_OP_Disconnect48,
SP_CCS_OP_Disconnect49,
SP_CCS_OP_Disconnect50,
SP_CCS_OP_Disconnect51,
SP_CCS_OP_Disconnect52,
SP_CCS_OP_Disconnect53,
SP_CCS_OP_Disconnect54,
SP_CCS_OP_Disconnect55 = 167,
SP_CCS_OP_Disconnect56,
SP_CCS_OP_Disconnect57,
SP_CCS_OP_Disconnect58,
SP_CCS_OP_Disconnect59,
SP_CCS_OP_Disconnect60,
SP_CCS_OP_Disconnect61,
SP_CCS_OP_Disconnect62,
SP_CCS_OP_Disconnect63,
SP_CCS_OP_Disconnect64,
SP_CCS_OP_Disconnect65 = 177,
SP_CCS_OP_Disconnect66,
SP_CCS_OP_Disconnect67,
SP_CCS_OP_Disconnect68,
SP_CCS_OP_Disconnect69,
SP_CCS_OP_Disconnect70,
SP_CCS_OP_Disconnect71,
SP_CCS_OP_Disconnect72,
SP_CCS_OP_Disconnect73,
SP_CCS_OP_Disconnect74,
SP_CCS_SIP_Disconnect1 = 188,
SP_CCS_SIP_Disconnect2,
SP_CCS_SIP_Disconnect3,
SP_CCS_SIP_Disconnect4,
SP_CCS_SIP_Disconnect5,
SP_CCS_SIP_Disconnect6,
SP_CCS_SIP_Disconnect7,
SP_CCS_SIP_Disconnect8,
SP_CCS_SIP_Disconnect9,
SP_CCS_SIP_Disconnect10 = 197,
SP_CCS_SIP_Disconnect11,
SP_CCS_SIP_Disconnect12,
SP_CCS_SIP_Disconnect13,
SP_CCS_SIP_Disconnect14,
SP_CCS_SIP_Disconnect15,
SP_CCS_SIP_Disconnect16,
SP_CCS_SIP_Disconnect17,
SP_CCS_SIP_Disconnect18,
SP_CCS_SIP_Disconnect19,
SP_CCS_SIP_Disconnect20 = 207,
SP_CCS_SIP_Disconnect21,
SP_CCS_SIP_Disconnect22,
SP_CCS_SIP_Disconnect23,
SP_CCS_SIP_Disconnect24,
SP_CCS_SIP_Disconnect25,
SP_CCS_SIP_Disconnect26,
SP_CCS_SIP_Disconnect27,
SP_CCS_SIP_Disconnect28,
SP_CCS_SIP_Disconnect29,
SP_CCS_Callout_Disconnect1 = 217,
SP_CCS_Callout_Disconnect2,
SP_CCS_Sipex_Disconnect1 = 219,
SP_CCS_Sipex_Disconnect2,
SP_CCS_Sipex_Disconnect3,
SP_CCS_Sipex_Disconnect4,
SP_CCS_Sipex_Disconnect5,
SP_CCS_Sipex_Disconnect6,
SP_CCS_Sipex_Disconnect7,
SP_CCS_SIP_EnterIdle1 = 227,
SP_CCS_SIP_EnterIdle2,
SP_CCS_OP_Disconnect75,
ACD_Restart_Disconnect,
ACD_HANDINHANDBREAK_Disconnect
} ;
//*************************************************************************8
//
enum ICD_CCS_ERROR_CODE
{
CCS_OK = 0, //正确返回
CCS_GENERAL_ERROR , //一般性错误
CCS_INIFILE_NOT_EXIST , //CCS.INI文件不存在
CCS_INIFILE_HAVE_PROBLEM , //加载配置文件出现错误
CCS_ADD_QUEUE_ERROR ,
CCS_CANT_FIND_QUEUE_OBJECT,
CCS_ADD_IVR_ERROR ,
CCS_CANT_FIND_IVR_OBJECT ,
CCS_ADD_AGENT_ERROR ,
CCS_CANT_FIND_AGENT_OBJECT,
CCS_DELETE_AGENT_ERROR ,
CCS_NO_THIS_DNISDN , //路由失败
CCS_CANT_FIND_QUEUE ,
CCS_CALLOUT_FAIL , //强制呼出错误
CCS_NO_THIS_ANI , //没有该主叫
CCS_CBK_ERROR ,
CCS_DEVICEID_NOT_EXIST , //DEVICE_ID不存在
CCS_CALLID_NOT_EXIST , //CALLID不存在
CCS_NO_PRECALL , //没有呼损待取
CCS_NO_THIS_NODE , //没有该技能树节点
CCS_ROUTINGTOJOIN ,
CCS_DISCONNECT , //连接以断
CCS_NOPROXY , //没有代理
CCS_CALLOUT_ROUTED ,
CCC_APCNOTINIT = 99, //APC卡没有初始化
CCC_INTERNAL_ERROR = 100, //内部错误
CCC_INVALID_PARAMETER , //参数错误
CCC_LINK_UNAVAIL , //通讯层暂时忙
CCC_RESOURCES_UNAVAIL , //相应资源不可用或故障
CCC_TIMED_OUT , //API调用超时
CCS_USERLIST_NULL , //没有预拨号呼叫
CCC_TOO_MUCH_THREAD , //太多线程(大于50)同时调用API
CCC_INSUFFICIENT_SPACE , //空间不够
CCC_FAIL , //一般性错误
CCC_LINK_DISCONNECT , //连接已断
CCC_NOT_LOGIN , //没有向CCS登录 110
CCC_AUTHORITY_FAIL , //权限错误
CCC_USERPROFILEERROR , //用户信息文件错误
CCC_USERPROFILENOTFOUND , //用户信息文件没有找到
CCC_USERNUMBERFULL , //系统用户数已满
CCC_USERALREADYEXIST , //用户已经存在
CCC_USERNOTFOUND , //用户没有找到
CCC_FILEOPENERROR , //文件打开错误
CCS_CK_STATE_FAULT , //控制块状态错误
CCS_CK_HANDLE_NOT_MATCH , //控制块HANDLE不匹配
CCS_AGENT_FAULT , //无效话务员 120
CCS_CALL_FAULT , //无效的呼叫
CCS_SKILL_FAULT , //无效的队列
CCS_AGENT_STATE_FAULT , //话务员状态错误
CCS_CONNECT_FAIL , //资源连接错误
CCS_GET_HOLD_FAIL , //取保持错误
CCS_HOLD_FAIL , //保持错误
CCS_TIMEOUT , //接续超时
CCS_OCCUPY_FAIL , //占用话务员错误
CCS_POINT_NULL , //调用空指针
CCS_SPY_WAIT_TIMEROUT , //质检等待SCP或OC超时 130
CCC_ALREADY_LOGIN , //该工号的SPY已经登录了
CCC_PASSWORD_ERROR , //用户的口令错误
CCC_RECEIVING_DATA , //CCS正在接收数据,不能发送CCS.INI文件
CCC_INI_IS_LOCKED , //初始化文件被其它的进程加锁了
CCC_PACKET_ERROR , //数据包失序
CCC_MEMORY_EXCEPTION , //操作中内存错误
CCC_AGENT_RECORD_ENDED , //座席录音终止 137
CCC_AGENT_PLAY_ENDED , //座席放音终止 138
CCC_USER_DISCONNECT , //用户挂机
CCC_NO_CONFERENCE , //没有会场
CCC_ICD_ACCESS_CODE , //呼出ICD系统接入码
CCC_PROXY_EXEC_SQL_FAIL , //执行存储过程失败
CCC_NO_SUCH_DNIS, //呼出的是空号
CCC_CALLED_BUSY, //被叫忙
MAX_ERROR_NUM //!!!!!!!! 需要增加时, 在此项目之前增加
};
//***************************************************************************************
//事件CCC_MASTER_CHANGED_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | ULONG |
// |____________________________|
//事件CCC_NOTIFY_CONFIG_CHANGED_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | USHORT |
// |____________________________|
//事件CCC_CALL_ENTER_EVENT
//事件CCC_REQUEST_ROUTE_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | E_CALL_INFO |
// |____________________________|
//事件CCC_CONNECT_EVENT
//事件CCC_ALERTING_EVENT
//事件CCC_ADD_CALL_CONFERENCE_EVENT
//事件CCC_DEL_CALL_CONFERENCE_EVENT
//事件CCC_HOLD_EVENT
//事件CCC_ROUTED_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | E_CALL_INFO |
// |----------------------------|
// | CALL_PARTY_INFO[] |
// |____________________________|
//事件CCC_ALL_BUSY_EVENT
//事件CCC_WAIT_OUTBOUND_EVENT
//事件CCC_CONFIG_RELOAD_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |____________________________|
//事件CCC_ABANDONED_EVENT
//事件CCC_RELEASE_EVENT
//事件CCC_CALLID_DISCONNECTED_EVENT
//事件CCC_DISCONNECTED_EVENT
//事件CCC_REJECTED_EVENT
//事件CCC_REQUEST_ROUTE_EVENT
//事件CCC_ROUTE_FAIL_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | E_CALL_INFO |
// |____________________________|
//事件CCC_ADD_DEVICE_CONFERENCE_EVENT
//事件CCC_DEL_DEVICE_CONFERENCE_EVENT
//事件CCC_MUTEON_EVENT
//事件CCC_MUTEOFF_EVENT
//事件CCC_BUSY_EVENT
//事件CCC_IDLE_EVENT
// ______________________________
// | MESSAGE_HEAD |
// |----------------------------|
// | DBCCC_EVENT_HEAD |
// |----------------------------|
// | E_DEVICE_INFO |
// |----------------------------|
// | CALL_PARTY_INFO[] |
// |____________________________|
//##########################################################################
//增加新的事件必须保持取值的连续性1,2,3,...,100,101,102
//##########################################################################
#define EVENT_BASE 0
enum CCC_EVENT
{
//************************************************************************
// 系统事件,系统队列的顺序不得改变
//************************************************************************
CCC_SYSTEM_EVENT = EVENT_BASE,
CCC_CONFIG_RELOAD_EVENT, //CCS系统配置重新加载事件
CCC_MASTER_CHANGED_EVENT, //主备倒换事件
CCC_NOTIFY_CONFIG_CHANGED_EVENT, //配置改变事件
CCC_ALARM_EVENT, //告警事件
//************************************************************************
// 协议事件
//************************************************************************
CCC_IVR_PROTOCOL_EVENT, //IVR协议事件( IVR->UIM )
CCC_QC_PROTOCOL_EVENT, //质检台协议事件( QC->UIM )
//*****************************
//与接续相关的事件
//*****************************
CCC_SSPBEGIN_EVENT,
CCC_STATIONLOGIN_EVENT,
CCC_STATIONLOGINACK_EVENT,
CCC_SETUP_EVENT = 10,
CCC_SETUPACK_EVENT,
CCC_ALERTING_EVENT,
CCC_SSPNOTIFY_EVENT ,
CCC_ANSWER_EVENT ,
CCC_ANSWERACK_EVENT ,
CCC_CALLEDOFFHOOK_EVENT ,
CCC_DISCONNECT_EVENT ,
CCC_DISCONNECT_ACK_EVENT,
CCC_REDIRECT_EVENT ,
CCC_COMBINE_EVENT = 20,
//*******************************
//资源控制事件消息
//******************************
CCC_RESOURCE_CONNECT_EVENT,
CCC_RESOURCE_CONNECT_RESULT_EVENT ,
CCC_RESOURCE_DISCONNECT_EVENT,
CCC_COLLECTDIGIT_EVENT ,
CCC_USERINFORMATION_EVENT,
CCC_PLAY_DRV_EVENT,
CCC_RECORD_EVENT ,
CCC_PLAY_RECORD_RESULT_EVENT ,
CCC_STOP_PLAY_RECORD_EVENT ,
CCC_STOP_PLAY_RECORD_ACK_EVENT = 30,
CCC_FIND_VOICE_FILE_EVENT ,
CCC_FIND_RESULT_EVENT ,
CCC_RENAME_VOICE_FILE_EVENT ,
CCC_RENAME_FILE_EVENT ,
CCC_DEL_VOICE_FILE_EVENT ,
CCC_DEL_RESULT_EVENT ,
CCC_GET_FILE_INFO_EVENT ,
CCC_GET_FILE_INFORMATION_RESULT_EVENT ,
CCC_FORE_FAST_PLAY_EVENT ,
CCC_BACK_FAST_PLAY_EVENT = 40,
CCC_PAUSE_EVENT,
CCC_CONTINUE_EVENT ,
CCC_RELOCATION_EVENT ,
CCC_VP_TS_REQUEST_EVENT,
CCC_VP_RELEASE_EVENT ,
CCC_VP_TS_RESULT_EVENT,
CCC_VP_PLAY_EVENT,
CCC_VP_RECORD_EVENT,
CCC_PLAY_RECORD_ACK_EVENT,
CCC_SEND_FAX_EVENT = 50,
CCC_RECEIVE_FAX_EVENT,
CCC_BEGIN_SEND_RECEIVER_FAX_ACK_EVENT,
CCC_SEND_RECEIVE_FAX_RESULT_EVENT,
CCC_STOP_SEND_RECEIVE_FAX_EVENT,
CCC_STOP_SEND_RECEIVE_FAX_ACK_EVENT,
CCC_SEND_EVENT_TO_VP_EVENT ,
CCC_VP_SEND_EVENT_TO_QC_EVENT,
//************************************************************************
//呼叫轨迹事件
//************************************************************************
CCC_IN_CALL_EVENT, //呼叫进入CCS
CCC_OUT_CALL_EVENT , //呼出
CCC_END_CALL_EVENT = 60, //呼叫终止
CCC_CONNECT_EVENT , //通话开始
CCC_ABANDONED_EVENT , //排队或给AGENT alerting时断连
CCC_TALERTING_EVENT , //呼出时被叫振铃
CCC_CALLID_DISCONNECTED_EVENT, //用户先挂机
CCC_DISCONNECTED_EVENT, //话务员先挂机
CCC_REJECTED_EVENT , //呼叫转移到某话务员上时工号非法或忙,被驳回
CCC_ROUTED_EVENT , //呼叫路由到某设备上
CCC_EXCEPTION_RELEASE_EVENT , // 意外情况拆呼叫(如超时等)
CCC_IVR_DISCONNECT_EVENT, //IVR->UIM
CCC_ROUTE_SUCCESS_EVENT = 70 , //路由成功事件
CCC_REQUEST_ROUTE_EVENT, //请求路由事件
CCC_ROUTE_FAIL_EVENT, //路由失败事件
CCC_WAIT_OUTBOUND_EVENT, //等待取呼出事件
//***********************************************
//会议电话事件
//************************************************
CCC_ADD_DEVICE_CONFERENCE_EVENT, //会场中加入一设备事件
CCC_DEL_DEVICE_CONFERENCE_EVENT, //会场中减少一设备事件
CCC_ADD_CALL_CONFERENCE_EVENT, //会场中加入一呼叫事件
CCC_DEL_CALL_CONFERENCE_EVENT, //会场中减少一呼叫事件
//********************************
//与呼叫相关的人工接续事件
//********************************
CCC_AGENT_RECORD_EVENT ,
CCC_AGENT_PLAY_EVENT,
CCC_MUTEON_EVENT = 80,
CCC_MUTEOFF_EVENT ,
CCC_OP_ANSWER_EVENT ,
CCC_RELEASE_EVENT ,
CCC_HOLD_EVENT,
CCC_REPORT_EVENT,
CCC_TRANSFER_EVENT ,
CCC_TRANSIT_OUT_EVENT ,
CCC_OP_REDIRECT_EVENT ,
//***************************
//其它事件
//***************************
CCC_ALL_BUSY_EVENT, //表示全忙
CCC_MONITOR_ALARM_EVENT = 90, //系统告警事件
CCC_MSG_SSP_SCP_RESUM_EVENT, //呼叫控制从挂起态恢复
CCC_MSG_SSP_SCP_CALLID_INFO_EVENT, //ivr->SCP
CCC_REQUEST_RESPONSE_EVENT, //保留未用
CCC_ANSWERREQUEST_EVENT, //请求应答
CCS_NULL_EVENT,
//*****************************************************************************
//CCC_REQUEST_RESPONSE_EVENT响应事件的子事件
//*****************************************************************************
CCC_DO_NOT_DISTURB_RESPONSE_EVENT, //示忙返回
CCC_IDLE_RESPONSE_EVENT , //示闲返回
CCC_MUTE_OFF_RESPONSE_EVENT, //静音返回
CCC_MUTE_ON_RESPONSE_EVENT, //关掉静音返回
CCC_ANSWER_RESPONSE_EVENT = 100, //应答返回, 成功表示开始通话,失败不返回
CCC_REDIRECT_RESPONSE_EVENT, //保留未用
CCC_CONF_JOIN_RESPONSE_EVENT, //三方电话返回事件
CCC_REPORT_RESPONSE_EVENT, //报音返回事件
CCC_INSERT_RESPONSE_EVENT, //插入返回事件
CCC_SUPERVISE_RESPONSE_EVENT, //监听返回事件
CCC_TRANSFER_OUT_RESPONSE_EVENT, //转出和内部转移都返回该事件
CCC_MAKE_CALL_RESPONSE_EVENT , //呼叫返回事件 呼出和内部呼叫返回该事件
CCC_CALL_OUT_RESPONSE_EVENT, //保留未用
CCC_RETRIEVE_RESPONSE_EVENT, //取保持返回 事件
CCC_HOLD_RESPONSE_EVENT = 110, //保持返回事件
CCC_RELEASE_RESPONSE_EVENT, //释放返回事件 对应CCC_RELEASE_REQUEST_EVENT
CCC_CONNECT_HOLD_RESPONSE_EVENT, //连接保持来话返回事件
CCC_INTERCEPT_RESPONSE_EVENT, //拦截返回事件
CCC_INTERNAL_TRANSFER_RESPONSE_EVENT,//此事件保留未用
CCC_LOGIN_RESPONSE_EVENT, //签入返回事件
CCC_LOGOUT_RESPONSE_EVENT, //签出返回事件
CCC_AGENT_FORCEOUT_EVENT, //强制签出返回事件
CCC_AGENT_FORCEIDLE_EVENT, //强制示闲返回事件
CCC_AGENT_FORCEBUSY_EVENT, //强制示忙返回事件
CCC_CCS_DISCONNECTED = 120,
CCC_NO_OUTBOUND_EVENT,
CCC_NOTIFY_BULLETIN_EVENT,
CCC_MESSAGE_EVENT,
CCC_TRANSIVR_RESPONSE_EVENT, //人工转自动返回事件
CCC_LONGNOANSWER_EVENT, //久不应答事件,当坐席分配一来话超时不应答,收
//到此事件,同时坐席被示忙。
CCC_CALLER_DISCONNECTED_EVENT, //用户挂机
CCC_RELEASE_REQUEST_EVENT, //请求释放事件
CCC_DESK_ALLBUSY_EVENT, //表示全忙,给每个话务员发 1B+1D事件
CCC_ANSWER_REQUEST_EVENT, //请求应答
CCC_OUTBOUND_RESULT_EVENT,
CCC_CALLER_TELNUM_EVENT,
CCC_CALLED_TELNUM_EVENT,
CCC_BOOK_OUTBOUND_TIMEOUT_EVENT, //呼出超时事件
CCC_INTERNAL_HELP_RESPONSE_EVENT, //内部求助返回事件
CCC_PRE_ROUTE_EVENT, //路由前事件
CCC_PRE_DISCONNECT_EVENT, //释放前事件
CCC_USER_DISCONNECT_EVENT, //呼叫释放事件
CCC_AGENT_REST_TIMEOUT_EVENT, //座席休息时间到事件
CCC_AGENT_REST_START_EVENT, //座席休息开始事件
CCC_AGENT_SET_BUSY_START_EVENT, //座席示忙开始事件
//###########################################################################
//对事件的定义都在上面
CCC_END_OF_EVENT //Just for count number of event
//对事件的定义都在上面
//###########################################################################
};
#define MAX_EVENT_NUM ( CCC_END_OF_EVENT - EVENT_BASE )
typedef struct tagCALLID
{
ULONG ulTime; // 呼叫进入时间
USHORT usDsn; // 呼叫进入的任务号
UCHAR ucHandle; // 呼叫进入一个任务的次数
UCHAR ucServer; // 唯一标识一个服务器的标识
friend int operator==( tagCALLID& id1, tagCALLID& id2 );
}CALLID, *LPCALLID; //呼叫标识
const CALLID CALLID_NO_USE = { 0xffffffff, 0xffff, 0xff, 0xff };
typedef CALLID DBCCC_CALLID;
typedef struct tagDEVICE_ID
{
UCHAR ucDeviceType; // 设备类型 enum ICD_DEVICETYPE
USHORT usDeviceNo; // 设备号码
friend int operator==( tagDEVICE_ID& Id1, tagDEVICE_ID& Id2 );
}DEVICE_ID, *LPDEVICE_ID; //设备标识
const DEVICE_ID DEVICE_ID_NO_USE = { 0xff, 0xffff };
typedef struct
{
USHORT usSend;
USHORT usReceive;
USHORT ucMsgType; // 消息类型 enum ICDCCS_MSGTYPE
UCHAR ucMid;
}MESSAGE_HEAD;
//*********************************************************
// API的事件消息结构如下:
// ______________________
// | MESSAGE_HEAD |
// |--------------------|
// | DBCCC_EVENT_HEAD |
// |--------------------|
// | (EVENT_DATA) |
// |____________________|
//**********************************************************
typedef struct tagEVENT_TIME
{
USHORT wYear;
UCHAR wMonth;
UCHAR wDayOfWeek; //Specifies the current day of the week; Sunday = 0, Monday = 1, and so on.
UCHAR wDay;
UCHAR wHour;
UCHAR wMinute;
UCHAR wSecond;
USHORT wMilliseconds; //Specifies the current millisecond
}EVENT_TIME, *LPEVENT_TIME; //事件时间结构,指示发生此事件的时间
typedef struct tagDBCCC_EVENT_HEAD
{
EVENT_TIME ulTime; //事件产生时间
USHORT usEventType; //事件类型。enum CCC_EVENT
USHORT usSize; //与事件相关的数据长度
}DBCCC_EVENT_HEAD, *LPDBCCC_EVENT_HEAD; //事件头
typedef struct tagE_CALL_INFO
{
CALLID CallID;
UCHAR ucDirect; //呼入/呼出标志, enum CallFlag
UCHAR ucModuleNo; //
USHORT usTrunkNo; //呼叫中继号
char Caller[ MAXLEN_EXTEN + 1 ]; //主叫号码
char Called[ MAXLEN_EXTEN + 1 ]; //被叫号码
DEVICE_ID DeviceID; //与呼叫相关的设备的标识
USHORT CallPartyNum; //该结构后面跟的CALL_PARTY_INFO结构个数
}E_CALL_INFO;
typedef struct tagE_DEVICE_INFO
{
DEVICE_ID SrcDeviceID; //产生事件的设备ID
DEVICE_ID DestDeviceID; //与此相关的设备ID
USHORT CallPartyNum; //该结构后面跟的CALL_PARTY_INFO结构个数。
}E_DEVICE_INFO;
typedef struct
{
MESSAGE_HEAD MsgHead;
DBCCC_EVENT_HEAD Event;
E_CALL_INFO CallInfo;
}EVENT_CALL_INFO_MSG;
typedef struct
{
MESSAGE_HEAD MsgHead;
DBCCC_EVENT_HEAD Event;
E_DEVICE_INFO DeviceInfo;
}EVENT_DEVICE_INFO_MSG;
typedef struct
{
MESSAGE_HEAD MsgHead;
DBCCC_EVENT_HEAD Event;
ULONG ulTaskID;
USHORT usResult; //结果
UCHAR ucCause; //原因
}EVENT_SPY_RESULT_MSG;
typedef struct tagSKILL_ID
{
USHORT usSkillID; //技能的ID编号
UCHAR ucSkillLevel; //对应的技能的水平需求
}SKILL_ID, *LPSKILL_ID; //技能ID
typedef struct tagSKILL_STRUCT
{
USHORT usID; //技能ID
CHAR cName[MAX_SKILL_NAME_LENGTH + 1]; //具体技能表示
}SKILL_STRUCT, *LPSKILL_STRUCT; //每一个技能的描述结构
//说明: 存放每一个技能的名称及其内部编号
typedef struct tagNODE_STRUCT
{
USHORT usParentNo; //父节点编号
USHORT usChildNo; //本节点编号
USHORT usSkillID; //技能标识
USHORT usServiceNo; //业务类型号
}NODE_STRUCT, *LPNODE_STRUCT;
//说明: 技能树结构每个节点结构, 用于存储技能树
typedef struct tagCLASS_STRUCT
{
USHORT usID; //级别标识
CHAR cName[MAX_CLASS_NAME_LENGTH + 1]; //级别名称
}CLASS_STRUCT, LPCLASS_STRUCT; //用户级别
//系统定义了的用户级别名称
typedef struct tagAGENT_STRUCT
{
USHORT usNo; //代理人工号
CHAR cName[AGENT_NAME_LENGTH + 1]; //代理人姓名
ULONG ulRights; //权限
USHORT usSkillGroupID; //技能组ID
USHORT usWorkGroupID; //所属班组号
}AGENT_STRUCT, *LPAGENT_STRUCT; //描述每一个代理人的结构
//说明:存放每个座席的基本情况的一个结构
typedef struct tagWORKGROUP_INFO
{
USHORT usID; //班组号
USHORT usMonitorNo; //班长工号
CHAR cMonitorName[AGENT_NAME_LENGTH + 1]; //班长姓名
CHAR cGroupName[MAX_WORKGROUP_NAME_LENGTH + 1]; //班组名称
}WORKGROUP_INFO, *LPWORKGROUP_INFO;
//*****************************************************************
//用户信息结构
//*****************************************************************
typedef struct tagCUSTOMER_INFO_STRUCT
{
CHAR cKeyID[MAXLEN_EXTEN + 1]; //用户唯一标识
CHAR cClass[MAX_CLASS_NAME_LENGTH + 1]; //用户级别(重要客户/...)
CHAR cName[MAX_PEOPLE_NAME_LENGTH + 1]; //用户姓名
CHAR cLanguage[MAX_LANGUAGE_LENGTH + 1]; //语言
CHAR cCompany[MAX_COMPANY_LENGTH + 1]; //公司名称
CHAR cAddress[MAX_ADDRESS_LENGTH + 1]; //地址
CHAR cArea[MAX_AREA_LENGTH + 1]; //专业
CHAR cDescription[MAX_DESCRIPTION_LENGTH + 1];//用户简要介绍
CHAR cSerialNo[MAX_SERIALNO_LENGTH + 1]; //处理流水号
CHAR cSkills[MAX_DESCRIPTION_LENGTH + 1]; //呼叫技能需求描述
USHORT usWorkNo; //处理座席工号
}CUSTOMER_INFO_STRUCT, *LPCUSTOMER_INFO_STRUCT; //一个特殊用户的信息结构
//此结构暂时不支持
typedef struct tagCUSTOMER_SKILL_STRUCT
{
CHAR cANI[MAX_ANI_LENGTH + 1]; //主叫号码
CHAR cSkillName1[MAX_SKILL_NAME_LENGTH +1]; //具体技能需求1
CHAR cSkillName2[MAX_SKILL_NAME_LENGTH +1]; //具体技能需求2
CHAR cSkillName3[MAX_SKILL_NAME_LENGTH + 1]; //具体技能需求3
CHAR cSkillName4[MAX_SKILL_NAME_LENGTH + 1]; //具体技能需求4
CHAR cSkillName5[MAX_SKILL_NAME_LENGTH + 1]; //具体技能需求5
USHORT usAgentNo1; //具体座席工号1
USHORT usAgentNo2; //具体座席工号2
USHORT usAgentNo3; //具体座席工号3
USHORT usAgentNo4; //具体座席工号4
}CUSTOMER_SKILL_STRUCT, *LPCUSTOMER_SKILL_STRUCT; //一个特殊用户的技能需求结构
typedef struct tagDBCCC_SERVICE_STRUCT
{
USHORT usNo; //业务类型号
CHAR strDescription[MAX_SERVICE_DESCRIPTION_LEN + 1];//业务描述
}DBCCC_SERVICE_STRUCT, *LPDBCCC_SERVICE_STRUCT; //业务类型结构
typedef struct tagDBCCC_HISTORY_ITEM
{
USHORT usID; //业务标识
CHAR pcData[MAX_HISTORY_LENGTH + 1]; //访问数据
}DBCCC_HISTORY_ITEM, *LPDBCCC_HISTORY_ITEM; //一项历史记录结构
typedef struct tagDBCCC_CONFERENCE_INFO
{
USHORT usConferenceNum; //会场号
UCHAR ucMaxJionNum; //允许参加会议的最大加入数目
UCHAR ucMaxAuditNum; //允许的最大旁听人数目
UCHAR ucVmsNum; //放音数目
UCHAR ucJionCallNum; //加入的呼叫数目
UCHAR ucAuditCallNum; //旁听呼叫数目
UCHAR ucJionAgentNum; //参加的代理数目
UCHAR ucAuditAgentNum; //旁听的代理数目
} DBCCC_CONFERENCE_INFO, *LPDBCCC_CONFERENCE_INFO;
/**************************************************************
此结构后依次为加入的CALLID组,旁听的CALLID组,加入的Agent设备号组,
旁听的Agent设备号组
***************************************************************/
typedef struct tagDBCCC_CALL_STATIC_INFO
{
ULONG ulCallNumsInHour[24]; //统计在每小时中的呼叫数目
ULONG ulCallAbandonNumsInHour[24]; //统计在每小时中的呼损数目
} DBCCC_CALL_STATIC_INFO, *LPDBCCC_CALL_STATIC_INFO; //呼叫在一天24小时内的话务统计数据
typedef struct tagDBCCC_BUSY_CONFERENCE_INFO
{
USHORT usConferenceNums; //占用会场数
USHORT pusConferenceNo[1]; //会场号
} DBCCC_BUSY_CONFERENCE_INFO, *LPDBCCC_BUSY_CONFERENCE_INFO;//占用会场情况
//********************************************************
typedef struct tagPRE_OUTBOUND_STRUCT
{
CHAR cANI[MAX_ANI_LENGTH + 1]; //主叫号码
ULONG ulTime; //用户访问时间
DEVICE_ID Device; //待呼出呼叫产生呼损的目的设备
CHAR cUserInfo[MAX_DESCRIPTION_LENGTH + 1];//用户简要信息
}PRE_OUTBOUND_STRUCT, *LPPRE_OUTBOUND_STRUCT; //一个待呼出呼叫的信息结构
/******************************* OUTBOUND CALL ******************************/
typedef struct
{
UCHAR ucYear; //年,Current Year minus 1900, 2155 roll over
UCHAR ucMonth; //月 1-12
UCHAR ucDay; //日 1-31
UCHAR ucHour; //时 0-23
UCHAR ucMinute; //分 0-59
UCHAR ucSecond; //秒 0-59
}CCS_TIMESTRUCT;
typedef struct tagPOWER_OUTBOUND_STRUCT
{
CHAR cCli[MAXLEN_EXTEN + 1]; //呼出主叫
CHAR cANI[MAX_ANI_LENGTH + 1]; //客户主叫号码
CHAR cCustomerName[MAX_PEOPLE_NAME_LENGTH + 1]; //用户姓名,可无
CHAR cDescription[MAX_DESCRIPTION_LENGTH + 1]; //简要描述,可无
UCHAR ucDeviceType; //待呼出呼叫的目的设备类型 enum ICD_DEVICETYPE
CHAR cSkills[MAX_SKILL_STRING_LENGTH + 1];
//如果ucDeviceType为QueueType, 则是技能组合; 技能用,隔开, 如"180,Chinese"
//如果ucDeviceType为IvrType, 则为接入码; 如"1681234"
//如果ucDeviceType为AgentType, 则为座席工号;工号用,隔开, 如"2,4:2"。其中, 前面的2,4表示预约的
// 坐席工号, :后面的2为业务类型。
//重要说明:使用AgentType类型时,呼叫被分配给座席后,如果座席是多技能的,则他不知道该呼叫
//是希望得到什么服务, 因此需要指定业务类型。
CCS_TIMESTRUCT BookTime; //预约时间
CCS_TIMESTRUCT ReCallTime; //期望回呼时间
CCS_TIMESTRUCT EndTime; //期望回呼结束时间
}POWER_OUTBOUND_STRUCT, *LPPOWER_OUTBOUND_STRUCT; //一个预约呼出呼叫的信息结构
typedef struct tagDBCCC_SYSTEM_INFO
{
CHAR VersionInfo[ MAX_VERSION_LEN + 1]; //当前CCS版本信息字符串
USHORT usCallNum; //当前系统中呼叫数目
USHORT usCallInQueueNum; //当前系统中排队呼叫数目
USHORT usTalkingNum; //当前系统中通话人数
USHORT usTotalLoginAgent; //当前系统中上班座席数目
USHORT usBusyAgent; //当前系统中示忙座席数目
USHORT usIdleAgent; //当前系统中空闲座席数目
USHORT usSkillNum; //当前系统中配置的技能数目
USHORT usConnectNum; //当前系统中连接数目
}DBCCC_SYSTEM_INFO, *LPDBCCC_SYSTEM_INFO; //CCS系统信息结构
typedef struct tagAGENTSTATUS
{
UCHAR ucStatus : 5; // enum AGENT_OP_STATUS 5 bits
UCHAR ucRecord : 1; // 1:被录音 , 0: 1 bit
UCHAR ucSuper : 1; // 1:被监听 , 0: 1 bit
UCHAR ucMonitor: 1; // 1:被监视 , 0: 1 bit
} AGENTSTATUS, *LPAGENTSTATUS;
typedef struct tagDBCCC_AGENT_ABSTRACT
{
USHORT usAgentDSN; //座席电路号
UCHAR ucAgentType; //座席类型 enum AGENT_TYPE
USHORT usAgentWorkNo; //座席工号
USHORT usWorkGroupID; //座席所在工作组标识
AGENTSTATUS ucAgentStatus; //对应AGENT_OP_STATUS结构
}DBCCC_AGENT_ABSTRACT, *LPDBCCC_AGENT_ABSTRACT; //关于AGENT的摘要信息
//****************************************************************************
//ICD网络中一个节点的信息
//****************************************************************************
typedef struct tagDBCCC_NET_INFO
{
USHORT usConnectID; //节点的网络连接号
UCHAR ucType; //节点的类型 0 为主CCS,1为副CCS,2为代理,3为IVR,4为Fep
ULONG MsgIPAddr; //该节点的接收消息的IP地址,对于CCC该值往往为代理的IP地址,其它均与ActualIPAddr相等.
ULONG MsgProcID; //该节点的接收消息的进程号,对于CCC该值往为代理的进程号,其它均与ActualProcID相等.
ULONG ActualIPAddr; //该节点真正的IP地址
ULONG ActualProcID; //该节点真正的进程ID
}DBCCC_NET_INFO, *LPDBCCC_NET_INFO;
//********************************************************************
//用于CccQuerySkillsBaseGroupID的返回消息
//********************************************************************
typedef struct tagDBCCC_SKILL_GROUP_STRUCT
{
USHORT usID; //内部标识
USHORT usSkillNum; //总的技能数目
USHORT usDescriptionSize; //随后跟的描述信息的长度
}DBCCC_SKILL_GROUP_STRUCT, *LPDBCCC_SKILL_GROUP_STRUCT;
//此结构后面跟着一系列SKILL_ID结构共usSkillNum个;随后是共usDescriptionSize字节个描述信息
// SKILL_ID Skill[]; //具体技能标识
// UCHAR Description[]; //技能描述
typedef struct tagDBCCC_ACD_INFO
{
ULONG cb; //结构长度
UCHAR szPilotNbr[MAXLEN_PILOTNBR + 1]; //ACD组的pilot number
USHORT usDeviceNo; //ACD组的设备序号
USHORT usQueueSize; //当前等待在队列中的呼叫数目
ULONG ulQueueTime; //队列中等待最久的呼叫的等待时间(秒数)
USHORT usLoadFactor; //队列的负载因子,保留未用
ULONG ulEstWaitTime; //Agent应答一个主叫之前的估计等待时间
USHORT usLoggedOnAgents; //当前注册到该ACD组的Agent数目
USHORT usAvailAgents; //该ACD组中当前可用的Agent数目
UCHAR ucTransferFlg; //转移标志 enum TIMEOUT_PROCESS_STYLE
DEVICE_ID TransferDevice; //转移设备
CHAR pSkillDescrip[ MAX_SKILL_STRING_LENGTH + 1];//技能描述, 类似“180,Chinese”
} DBCCC_ACD_INFO, *LPDBCCC_ACD_INFO;
typedef struct tagACD_SKILL_DESCRIPTION
{
USHORT usAcdID; //队列标识
CString strDescription;//技能描述, 类似“180,Chinese”
} ACD_SKILL_DESCRIPTION, *LPACD_SKILL_DESCRIPTION;
typedef struct tagDBCCC_AGENT_INFO
{
ULONG cb;
AGENT_STRUCT Agent; //座席结构
USHORT szDeviceNo; //Agent的设备号
UCHAR szPilotNbr[MAXLEN_PILOTNBR + 1];//Agent的引导号
USHORT usPrevState; //前一个状态 enum AGENT_STATE
ULONG ulPrevStateTime; //前一个状态的时间
USHORT usCurrentState; //当前状态 enum AGENT_STATE
ULONG ulCurrentStateTime; //当前状态的时间
ULONG ulLogonTime; //注册的时间
USHORT usKeepNums; //保持的次数
USHORT usAnswerNums; //应答的次数
USHORT usConferenceNums; //发起会议电话的次数,三方通话
USHORT usCallOutNums; //呼出的次数
USHORT usTransferNums; //转接的次数,内部转移
USHORT usTransferOutNums; //转出的次数
USHORT usRedirectNums; //重定向的次数
USHORT usInterCallNums; //内部呼叫
USHORT usNoAnswerNums; //久不应答次数
USHORT usBusyNums; //示忙次数
USHORT usIdleTime; //示闲次数
USHORT usRestNums; //请假次数
USHORT usRestOutNums; //超假次数
ULONG ulRestTime; //请假时长
ULONG ulRestOutTime; //超假时长
USHORT usAgentRelease; //话务员主动收线次数
ULONG ulTotalTalkIngTimes; //总的通话时长
CALLID CallID[2]; //当前处理的呼叫标识
UCHAR ucTransferFlg; //转移标志 //enum TIMEOUT_PROCESS_STYLE
DEVICE_ID TransferDevice; //转移设备
} DBCCC_AGENT_INFO, *LPDBCCC_AGENT_INFO; //座席信息
typedef struct tagDBCCC_CALL_INFO
{
ULONG cb;
CALLID CallID; //呼叫标识
CHAR cKeyID[ MAXLEN_EXTEN + 1]; //呼叫的唯一标识
CHAR cANI[ MAXLEN_EXTEN + 1]; //主叫
CHAR cDialedNumber[ MAXLEN_EXTEN + 1 ]; //被叫
CHAR ucMid; //模块号
USHORT usTrunkNo; //中继号
UCHAR ucPriority; //用户级别
DEVICE_ID CurrentDevice ; //正在处理的设备信息
UCHAR pucCallData[ MAX_CALLDATA_LEN ]; //呼叫数据
USHORT CallDataLen; //呼叫数据的有效长度
CHAR pcCallSkill[ MAX_SKILL_STRING_LENGTH ];//呼叫技能描述,类似“180,Chinese”
USHORT usPartyNum; //呼叫轨迹经过的设备数目
UCHAR ucCallFeature; //呼叫特征, enum Call_Feature_Type
CHAR cOrgCalledNo[ MAXLEN_EXTEN + 1 ]; //原始被叫
} DBCCC_CALL_INFO, *LPDBCCC_CALL_INFO; //呼叫信息
/*****************************************************
此结构后是呼叫轨迹,用多个DBCCC_DEVICE_STRUCT表示
*****************************************************/
typedef struct
{
ULONG cb; //结构字节数目
UCHAR ucDeviceType; //设备类型 enum ICD_DEVICETYPE
USHORT usDeviceNo; //设备编号
CHAR ucPilotNo[ MAXLEN_PILOTNBR + 1];//设备引导号
UCHAR ucTransferType; //转移标志 enum TIMEOUT_PROCESS_STYLE
DEVICE_ID TransferDevice; //转移设备
USHORT usCallNum; //后面跟随的CALLID的数目(该设备)
} CALL_PARTY_INFO;
//呼叫一方信息(设备)
typedef struct tagDBCCC_DEVICE_STRUCT
{
ULONG ulWaitBeginTime; //等待开始时间
ULONG ulWaitEndTime; //等待结束时间
ULONG ulAnswerBeginTime; //应答开始时间
ULONG ulAnswerEndTime; //应答结束时间
ULONG ulTalkBeginTime; //谈话开始时间
ULONG ulTalkEndTime; //谈话结束时间
USHORT usDeviceNo; //设备编号
UCHAR ucDeviceType; //设备类型 enum ICD_DEVICETYPE
UCHAR ucDoFuction; //此设备的处理方式,enum CALL_DIRECT_MODE
UCHAR ucLeaveReason; //离开此设备原因, enum CALL_DIRECT_MODE
}DBCCC_DEVICE_STRUCT, *LPDBCCC_DEVICE_STRUCT;
#define RESERVED_SIZE 9
typedef struct tagDBCCC_USER_RECORD
{
USHORT usWorkNo; //用户工号
CHAR szUserName[ DBCCC_MAXLEN_USERNAME + 1 ];//用户姓名
CHAR szPassword[ DBCCC_MAXLEN_PASSWORD + 1 ];//用户口令
ULONG ulSecurity; //用户权限
UCHAR ucReserved[RESERVED_SIZE]; //保留未用的区域
}DBCCC_USER_RECORD, *LPDBCCC_USER_RECORD; //用户描述结构
/*
typedef struct tagDBCCC_CALL_STATUS
{
DBCCC_CALLID CallID; //呼叫标识
CHAR CallerNo[ MAXLEN_EXTEN + 1 ]; //主叫号码
CHAR CalledNo[ MAXLEN_EXTEN + 1 ]; //被叫号码
UCHAR ucCallType; //呼叫类型 //enum CallFlag
USHORT usTrunkNo; //中继号码
USHORT usDid; //交换设备号
} DBCCC_CALL_STATUS, *LPDBCCC_CALL_STATUS;
*/
typedef struct tagDBCCC_AGENT_WORKGROUP_INFO
{
USHORT usAgentNo; //座席工号
USHORT usAgentDsn; //座席电路号
UCHAR ucAgentStatus; //座席状态 //struct AGENTSTATUS
}DBCCC_AGENT_WORKGROUP_INFO, *LPDBCCC_AGENT_WORKGROUP_INFO;
typedef struct tagDBCCC_INNO_STRUCT
{
USHORT usID; //接入码标识(内部编号)
USHORT usServiceNo; //业务类型
BOOL bHelpFlag; //求助标志
CHAR pcInNo[ MAX_IVR_INNO_LENGTH + 1]; //接入码
CHAR pcDescription[MAX_INNO_INFO_LEN + 1];//对此接入码的功能性描述
}DBCCC_INNO_STRUCT, *LPDBCCC_INNO_STRUCT; //说明: IVR接入码结构
typedef struct tagDBCCC_ALARM_DATA
{
CHAR pcDeviceType[10]; //设备类型名称
CHAR pcDeviceNo[10]; //设备标识号
USHORT usAlarmType; //告警类型 // enum ALARM_TYPE
USHORT usAlarmLevel; //告警级别 // enum ALARM_LEVEL
CHAR pcAlarmInfo[200]; //告警信息
UCHAR ucAlarmFlag; //告警标志 1:Alarm, 0: NoAlarm
}DBCCC_ALARM_DATA, *LPDBCCC_ALARM_DATA;
enum PACKET_STATUS
{
PACKET_DATA,
PACKET_END
};
typedef struct tagSFTP_PACKET
{
UCHAR SerialNo; //文件块包的序号
UCHAR EndFlag; //是否文件结束标志
USHORT PacketLen; //数据区数据的长度
CHAR Packet[ MAX_PACKET_LEN ]; //数据区
}SFTP_PACKET, *LPSFTP_PACKET;
typedef struct tagCONN_OBJ_INFO
{
UCHAR ConnNodeNum; //包含连接数目
UCHAR byConf; //是否通过会议电话enum CONNECT_BY_TYPE
}CONN_OBJ_INFO, *LPCONN_OBJ_INFO;
typedef struct tagCONN_NODE_INFO
{
USHORT source_dsn; //发起方
UCHAR source_type; //发起方类型
UCHAR source_mid; //发起方模块号
USHORT dest_dsn; //目标方
UCHAR dest_type; //目标方类型
UCHAR dest_mid; //目标方模块号
UCHAR mode; //
UCHAR byConf; //enum CONNECT_BY_TYPE
}CONN_NODE_INFO, *LPCONN_NODE_INFO;
typedef struct
{
USHORT usFirstAgentNo; //排名第一工号
double fFirstAgentScore; //排名第一分数
USHORT usSecondAgentNo; //排名第二工号
double fSecondAgentScore; //排名第二分数
USHORT usThirdAgentNo; //排名第三工号
double fThirdAgentScore; //排名第三分数
USHORT usSelfIndex; //自己排名
double fSelfScore; //自己分数
} AGENT_ANALY_INFO; //座席考评排行榜结构
typedef struct tagDBCCC_TRUNK_STRUCT
{
UCHAR ucModuleNo; //该中继所属模块号, 用于区分排队机模块
UCHAR ucGroupNo; //该中继所属中继群号,用于区分该模块下的中继群
UCHAR ucDirection; //该中继的群向,是入中继还是出中继,enum ACD_TRUNK_TYPE
USHORT usTrunkNo; //该中继编号,在该模块中的编号
UCHAR ucStatus; //是可用中继还是不可用中继, 1: 可用,0:不可用
}DBCCC_TRUNK_STRUCT, *LPDBCCC_TRUNK_STRUCT; //每个中继续
typedef struct tagVMS_SPT_PLAY
{
UCHAR voice_resource; // 放音资源类型 enum voice_resource
UCHAR play_type; // 放音类型, enum Play_Type
UCHAR filename[MAX_FILENAME_LEN];
}VMS_SPT_PLAY;
typedef struct tagDRV_RESULT_STRUCT
{
UCHAR user_info[DRV_MAX_GET_NUM]; //收号结果
}DRV_RESULT_STRU;
typedef union tagPLAY_DRV
{
VMS_SPT_PLAY vp_spt_play; // VP , SPT放音
DRV_RESULT_STRU drv_result; // 收号结果
}PLAY_DRV;
typedef struct tagPLAY_DRV_STRUCT
{
CHAR IvrNo[ MAXLEN_EXTEN + 1 ]; //相应的流程接入码
UCHAR flag; //放音还是收号 enum PLAY_COLLECT
PLAY_DRV play_drv;
}PLAY_DRV_STRUCT;
typedef struct
{
CALLID CallId;
ULONG Index;
} KEEPINDEX;
typedef struct tagEVENT_RESPONSE_ID
{
UCHAR ucReceiveTaskCount;
USHORT usReceiveTaskDsn;
}EVENT_RESPONSE_ID;
#define TRACE_DESCRIPTION_LEN 50
typedef struct tagFLOWTRACE_ITEM
{
CHAR cCallerNo[MAXLEN_EXTEN + 1]; //主叫号码
CALLID CallID; //呼叫标识
CHAR cTraceDes[TRACE_DESCRIPTION_LEN + 1];//轨迹分支描述
}FLOWTRACE_ITEM, *LPFLOWTRACE_ITEM;
typedef struct
{
USHORT usLoginNums; //上班次数
ULONG ulWorkTime; //工作时长
USHORT usKeepNums; //保持次数
USHORT usAnswerNums; //通话次数
USHORT usConferenceNums; //发起会议电话的次数,三方通话
USHORT usCallOutNums; //呼出的次数
USHORT usTransferNums; //转接的次数,内部转移
USHORT usTransferOutNums; //转出的次数
USHORT usRedirectNums; //重定向的次数
USHORT usInterCallNums; //内部呼叫
USHORT usNoAnswerNums; //久不应答次数
USHORT usBusyNums; //示忙次数
USHORT usIdleTime; //示闲次数
USHORT usRestNums; //请假次数
USHORT usRestOutNums; //超假次数
ULONG ulRestTime; //请假时长
USHORT usAgentRelease; //话务员主动收线次数
ULONG ulRestOutTime; //超假时长
ULONG ulTotalTalkIngTimes;//总的通话时长
ULONG ulBusyTime; //示忙时长
USHORT usSuperInsertNums; //监听次数
ULONG ulSuperInsertTime; //监听时长
USHORT usSwitchInsertNums; //
USHORT usInterceptNums; //拦截次数
USHORT usTransIVRNums; //人工转移自动次数
USHORT usSuperTrunkNums; //监听中继次数
ULONG ulSuperTrunkTime; //监听中继时长
USHORT usInterHelpNums; //内部求助次数
USHORT usForceOutNums; //强制签出别人次数
USHORT usForceIdleNums; //强制示闲别人次数
USHORT usForceBusyNums; //强制示忙别人次数
ULONG ulWorkStatusTime; //工作状态时长
}STATISTICS_INFO;
typedef struct tagAGENT_STATISTICS_INFO
{
AGENT_STRUCT Agent; //座席结构
STATISTICS_INFO StatInfo; //统计信息
}AGENT_STATISTICS_INFO, *LPAGENT_STATISTICS_INFO;
typedef struct tag_CMessageHead
{
UCHAR sender_node; //发送方节点号
UCHAR sender_port; //发送方端口号
UCHAR receiver_node; //接收方节点号
UCHAR receiver_port; //接收方端口号如IVR的PORT号为4等
UCHAR msg_type;//消息类型
//一个字节句柄以及两个字节的dsn唯一标识一个呼叫控制块
UCHAR sender_handle;// 发送方句柄
USHORT sender_dsn;// 发送方Dsn
UCHAR receiver_handle; // 接收方方句柄
USHORT receiver_dsn; // 接收方Dsn
}CMessageHead, *LPCMessageHead;
//呼入请求(排队机呼叫进入IVR的启动数据包)
typedef struct tag_SP_Setup_Msg:public CMessageHead
{
UCHAR call_feature;//呼叫特征,分为普通呼叫、特殊呼叫、
//设置摘机通知、取消摘机通知、自动寻呼机通知。枚举值分别为0,1,2,3,4
UCHAR CLI_BCD[13];//主叫的BCD码
UCHAR CLD_BCD[13];//被叫的BCD码
UCHAR DID;//
USHORT trunk_dsn;//中继号
UCHAR Ext_Data[25];//呼叫附加信息
}SP_Setup_Msg, *LPSP_Setup_Msg;
//IVR发给排队机的呼入请求应答包
typedef struct tag_SP_SetupAck_Msg:public CMessageHead
{
UC noteno;//IVR业务流程的节点号
} SP_SetupAck_Msg, *LPSP_SetupAck_Msg;
//IVR发振铃消息
typedef struct tag_SP_Alerting_Msg:public CMessageHead
{
UC audio; //一般填255
} SP_Alerting_Msg, *LPSP_Alerting_Msg;
//ivr应答
typedef struct tag_SP_Answer_Msg:public CMessageHead
{
UC audio;//一般填255
} SP_Answer_Msg , *LPSP_Answer_Msg;
//定时握手消息
typedef struct tag_SP_ResetTimer_Msg:public CMessageHead
{
UC timer_id; //一般填255
} SP_ResetTimer_Msg, *LPSP_ResetTimer_Msg;
//服务器发的CALLID
typedef struct tag_IVR_CallID_Msg:public CMessageHead
{
CALLID callID; //呼叫标识结构
} IVR_CallID_Msg, *LPIVR_CallID_Msg;
//IVR主动拆线
typedef struct tag_SP_Disconnect_Msg:public CMessageHead
{
UC discon_cause; //拆线原因,分为:正常拆线、无资源拆线、超时拆线、呼出失败、挂机、空号、邮箱已满。枚举值分别为0,1,2,3,4,5,6。
} SP_Disconnect_Msg, *LPSP_Disconnect_Msg;
//BCD码转换为字符串
void decodeBCD(const char* pSource, int len, char* str);
//INT 向BCD转换
int int2bcd(int i);
//IVR发给ACD的呼叫释放消息
typedef struct tag_SP_Release_Msg:public CMessageHead
{
UC release_cause; //拆线原因,分为:正常拆线、无资源拆线、超时拆线、呼出失败、挂机、
//空号、邮箱已满,一般为挂机。枚举值分别为0,1,2,3,4,5,6。
UC ext_data[100];//呼叫附加信息
} SP_Release_Msg, *LPSP_Release_Msg;
//IVR发给排队机的呼叫重定向消息
typedef struct tag_SP_Redirect_Msg:public CMessageHead // SSP <=== SCP,重定向
{
UC CLD[MAXLEN_EXTEN] ; //重定向的目标号码
UC ext_data[100]; //呼叫附加信息
}SP_Redirect_Msg, *LPSP_Redirect_Msg;
//二次收号结果消息
typedef struct tag_SP_DRV_RESULT_Msg:public CMessageHead
{
UCHAR user_info[24]; //收号结果
}SP_DRV_RESULT_Msg, *LPSP_DRV_RESULT_Msg;
//IVR发给排队机的资源连接消息
typedef struct tag_SP_ResourceConnect_Msg:public CMessageHead
{
UC connect_party_type; // 连接方类型,分为: 呼叫方、连net板的VP台、用户电路、会议电话、连中继的VP台、人工台。枚举值分别为0,1,2,3,4,7。
US connect_party_dsn; /* 连接方Dsn。对于连接方为:
呼叫方:Dsn填排队机的控制块的Dsn;
会议电话:Dsn填申请到的会场号;
连中继的VP台:排队机配置的中继电路号+模块号*2048。*/
UC dest_party_type; //目标方类型,分为: 呼叫方、连net板的VP台、用户电路、会议电话、连中继的VP台、人工台。
US dest_party_dsn; //目标方Dsn
UC connect_mode; //连接类型,分为:只听、只说、双向。枚举值分别为1,2,3。
} SP_ResourceConnect_Msg, *LPSP_ResourceConnect_Msg;
#pragma pack(pop)
#endif