/************************************************************************* 【文件名】 FsLinkInc.h 【功能模块和目的】 FsLink公共头文件 【开发者及日期】 郑石诺 2016/06/20 【版本】 V1.0.0 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司 【更改记录】 *************************************************************************/ #pragma once // 程序需要的其他头文件 #include "../Public/GlobalDef/CommonTypeDef.h" #include "../Public/GlobalDef/DevLinkInc.h" #include "../Public/GlobalDef/DevInfoInc.h" #include "Logger.h" #include "TtsInterface.h" #define OTL_ODBC //OTL连接方式为ODBC #define OTL_STREAM_READ_ITERATOR_ON //使用OTL迭代器 #define OTL_STL //OTL使用标准库 #include "../Public/OTL/otlv4.h" #include "../Public/OTL/OtlDB.h" #include "esl.h" #include "Config.h" #include "DevControl.h" #ifndef LOGGER #define LOGGER CDevControl::GetInstance().onEventLog #endif #define FS_LINK_DELETE(x) if(x != NULL) delete x; x = NULL #define FS_BUFFER_LEMN_MIN 32 #define FS_BUFFER_LEN_NORMAL 64 #define FS_BUFFER_LEN_MAX 128 #define FS_LINK_INSTANCE_INVALID 0 #define FS_LINK_JOBID_INVALID -1 #define FS_CONNECT_PWD_DEFAULT _T("ClueCon") #define FS_PARK_EXTEN_IN_CONTEXT _T("park") // ESL事件解析相关 #define ESL_EVT_SPLIT_FLAG _T("\n") #define ESL_EVT_NAME_BODY_HDR_AUTH_USER _T("Auth-User") #define ESL_EVT_LEN_BODY_HDR_AUTH_USER 10 #define ESL_EVT_POS_BODY_HDR_AUTH_USER 13 #define ESL_JOB_RESULT_LEN 3 #define ESL_JOB_DONE_RES_OK _T("+OK") #define ESL_JOB_DONE_RES_FAILED _T("-ERR") #define ESL_PREFIX_BACKGROUND _T("bgapi") // FS命令相关 #define ESL_CMD_HANGUPALL _T("api hupall\n\n") #define ESL_CMD_SCAN_INTERNAL _T("api sofia status profile internal reg\n\n") #define ESL_CMD_HANGUP _T("uuid_kill") #define ESL_CMD_CONSULT _T("uuid_broadcast") #define ESL_CMD_MAKE_CALL _T("originate") // FS应用相关 #define ESL_APP_BREAK _T("break") #define ESL_APP_LEAVEWORD _T("record") #define ESL_APP_PLAY_DTMF _T("play_and_get_digits") #define ESL_APP_PLAY _T("playback") #define ESL_APP_HANGUP _T("hangup") #define ESL_APP_SET _T("set") #define ESL_APP_BRIDGE _T("bridge") // FS变量相关 #define ESL_VAR_OP_INSTANCE _T("op_instance") #define ESL_VAR_DTMF_KEY _T("dtmf_key") #define ESL_VAR_OP_CALLER _T("op_caller") // ESL事件头域 #define ESL_HEADER_CHAN_UNIQUE_ID _T("Caller-Unique-ID") #define ESL_HEADER_JOB_CMD _T("Job-Command") #define ESL_HEADER_JOB_UUID _T("Job-UUID") #define ESL_HEADER_JOB_CMD _T("Job-Command") #define ESL_HEADER_HANGUP_CAUSE _T("Hangup-Cause") #define ESL_HEADER_APPLICATION _T("Application") #define ESL_HEADER_CALLID _T("Channel-Call-UUID") #define ESL_HEADER_CHANID _T("Unique-ID") #define ESL_HEADER_CALLER _T("Caller-Caller-ID-Number") #define ESL_HEADER_CALLEE _T("Caller-Callee-ID-Number") #define ESL_HEADER_DEST_NUM _T("Caller-Destination-Number") #define ESL_HEADER_DIRECTION _T("Call-Direction") #define ESL_HEADER_SUBCLASS _T("Event-Subclass") #define ESL_HEADER_EXTEN_NO _T("username") #define ESL_HEADER_CALL_FAILED_CAUSE _T("variable_originate_disposition") #define ESL_HEADER_CHAN_OP_INSTANCE _T("variable_op_instance") #define ESL_HEADER_DTMF _T("DTMF-Digit") #define ESL_HEADER_CHAN_OP_CALLER _T("variable_op_caller") // 自定义主叫 // ESL事件头域常量值 #define ESL_HDR_DIRECTION_INBOUND _T("inbound") #define ESL_HDR_DIRECTION_OUTBOUND _T("outbound") #define ESL_HDR_SUBCLASS_SIP_REG _T("sofia::register") #define ESL_HDR_SUBCLASS_SIP_UNREG _T("sofia::unregister") // 通道状态定义 typedef enum tagCHAN_LOGIC_STATE { CHAN_LOGIC_STATE_DISABLED = 0x00, // 不可用 CHAN_LOGIC_STATE_FREE = 0x01, // 空闲 CHAN_LOGIC_STATE_INIT = 0x02, // 摘机等待拨号 CHAN_LOGIC_STATE_DIALING = 0x03, // 拨号 CHAN_LOGIC_STATE_RING_BACK = 0x04, // 呼出振铃 CHAN_LOGIC_STATE_ALERTING = 0x05, // 来电振铃 CHAN_LOGIC_STATE_TALKING = 0x06, // 通话中 CHAN_LOGIC_STATE_STANDBY = 0x07, // 中继通道可响应APP(此状态仅用作DevLink侧,不可传至CTI) CHAN_LOGIC_STATE_HELD = 0x0100 // 通话保持中(保持状态的使用须与原通道状态按位或和与) } CHAN_LOGIC_STATE; // ESL通道事件定义 typedef enum tagCHAN_EVENT_ID { CHANNEL_EVENT_CREATE = ESL_EVENT_CHANNEL_CREATE, CHANNEL_EVENT_PROGRESS = ESL_EVENT_CHANNEL_PROGRESS, CHANNEL_EVENT_PROGRESS_MEDIA = ESL_EVENT_CHANNEL_PROGRESS_MEDIA, CHANNEL_EVENT_ANSWER = ESL_EVENT_CHANNEL_ANSWER, CHANNEL_EVENT_BRIDGE = ESL_EVENT_CHANNEL_BRIDGE, CHANNEL_EVENT_HANGUP_COMPLETE = ESL_EVENT_CHANNEL_HANGUP_COMPLETE, CHANNEL_EVENT_HOLD = ESL_EVENT_CHANNEL_HOLD, CHANNEL_EVENT_UNHOLD = ESL_EVENT_CHANNEL_UNHOLD } CHAN_EVENT_ID; // 呼叫方向定义 typedef enum tagCALL_DIRECTION { CALL_DIRECTION_INBOUND, CALL_DIRECTION_OUTBOUND } CALL_DIRECTION; // 保持事件定义 typedef enum tagEVENT_HOLD_TYPE { EVENT_HOLD, EVENT_UNHOLD } EVENT_HOLD_TYPE; // 后台任务执行结束事件通知结构 typedef struct tagBG_JOB_NOTIFY { LONG JobInstance; TCHAR JobCmd[FS_BUFFER_LEN_NORMAL]; TCHAR JobBody[FS_BUFFER_LEN_MAX]; } BG_JOB_NOTIFY, *PBG_JOB_NOTIFY; // APP执行结束事件通知结构 typedef struct tagAPP_EXEC_NOTIFY { TCHAR App[FS_BUFFER_LEN_NORMAL]; } APP_EXEC_NOTIFY, *PAPP_EXEC_NOTIFY; // DTMF事件通知结构 typedef struct tagDTMF_NOTIFY { TCHAR CallId[FS_BUFFER_LEN_NORMAL]; TCHAR ChanId[FS_BUFFER_LEN_NORMAL]; TCHAR DTMF[FS_BUFFER_LEMN_MIN]; } DTMF_NOTIFY, *PDTMF_NOTIFY; // 保持事件通知结构 typedef struct tagHOLD_NOTIFY { TCHAR CallId[FS_BUFFER_LEN_NORMAL]; TCHAR ChanId[FS_BUFFER_LEN_NORMAL]; EVENT_HOLD_TYPE EvtType; } HOLD_NOTIFY, *PHOLD_NOTIFY; // 通道状态事件通知结构 typedef struct tagCHAN_EVENT_NOTIFY { CHAN_EVENT_ID EventId; CALL_DIRECTION Direction; TCHAR CallId[FS_BUFFER_LEN_NORMAL]; TCHAR ChanId[FS_BUFFER_LEN_NORMAL]; TCHAR Caller[FS_BUFFER_LEN_NORMAL]; TCHAR Callee[FS_BUFFER_LEN_NORMAL]; TCHAR HangupCause[FS_BUFFER_LEN_NORMAL]; LONG ChanOpInstance; } CHAN_EVENT_NOTIFY, *PCHAN_EVENT_NOTIFY; // 放音收号内容 typedef struct tagPlayVoiceContent { PlayVoiceMode nModel; // 放音模式(1:放音收号,2:只放音,3:只收号,4:停止放音) CHAR szFileName[MAX_PATH]; // 放音文件名/信号音类型 UINT nDtmfCount; // 收号位数 UINT nDtmfPeriod; // DTMF收号间隔 CHAR cDtmfEnd; // DTMF结束按键 UINT nTts; // TTS类型 int nTtsDigitMode; // TTS数字播报模式 int nTtsSpeed; // TTS语速 int nTtsVolume; // TTS音量 } PlayVoiceContent;