| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- /*************************************************************************
- 【文件名】 TapiControl.h
- 【功能模块和目的】 TAPI控制类头文件
- 【开发者及日期】 郑石诺 2016/03/24
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- #pragma once
- #include <Tapi.h>
- class CTapiLine;
- class CTrunkBase;
- /*************************************************************************
- 【类名】 CTapiControl
- 【功能】
- 【接口说明】 TAPI控制类
- 【开发者及日期】 郑石诺 2016/03/24
- 【版本】 V1.0.0
- 【版权信息】 Copyright (C)2016 河南华谊网络科技有限公司
- 【更改记录】
- *************************************************************************/
- class CTapiControl
- {
- SINGLETON_DECLARE(CTapiControl)
- public:
- ~CTapiControl(void);
- // 设备操作
- bool init(void);
- void release(void);
- // 线路查询函数
- CTapiLine* getLine(DWORD DevID); // 根据设备编号查找线路
- CTapiLine* getLine(LPCTSTR ExtID); // 根据分机号查找线路
- CTapiLine* getLineByCallId(int DevLinkCallId); // 根据DevLink CallId 查找线路
- CTapiLine* getIvrLineByAssoTrunk(UINT TrunkId); // 根据中继ID查找其当前关联的IVR分机
- CTapiLine* getFaxLineByAssoTrunk(UINT TrunkId); // 根据中继ID查找其当前关联的传真分机
- CTapiLine* getFreeIvrLine(void); // 查找一条空闲的IVR线路
- CTapiLine* getFreeFaxLine(void); // 查找一条空闲的FAX线路
- CTapiLine* getFreeFaxLineOnly(void); // 仅查找空闲的Fax线路不包含IVR线路
- CTapiLine* getErrorIvrLine(void); // 获取正在执行任务,并且未关联外线成功的线路
- UINT getTrunkAssoIvrId(UINT TrunkId);
- UINT getTrunkAssoFaxId(UINT TrunkId);
- // DevLink设备事件响应入口
- void onDevLinkEventS(DevLinkInfoS* pInfoS); // S事件
- void onDevLinkEventA(int DevLinkCallId); // A事件
- void onDevLinkEventD(int DevLinkCallId); // D事件
- private:
- CTapiControl(void);
- // 设备控制主回调函数
- static void CALLBACK __tapiLineCallback(DWORD dwDevice,
- DWORD nMsg,
- DWORD dwInstance,
- DWORD dwParam1,
- DWORD dwParam2,
- DWORD dwParam3);
- // 设备初始化相关函数
- UINT __openValidLines(int DevCounts); // 打开所有可用线路
- HLINE __openDev(CString& ExtID, DWORD DevID, DWORD ApiVersion, DWORD ExtVersion, LINEDEVCAPS* pDevCaps); // 打开TAPI线路并返回设备句柄
- // TAPI设备操作子函数
- HRESULT __loopLineGetDevCaps(DWORD DevID, DWORD ApiVersion, DWORD ExtVersion, LINEDEVCAPS* &pDevCaps); // 得到设备功能
- HRESULT __loopLineGetAddressCaps(DWORD DevID, DWORD AddressID, DWORD ApiVersion, LINEADDRESSCAPS*& pAddressCaps); // 得到线路能力
- // TAPI通用字符解析函数(从TAPI数据结构中得到相关信息)
- CString __getTapiString(void *pInfo, DWORD Size, DWORD Offset);
- private:
- const static DWORD TAPI_LO_VERSION = 0x00020000; // TAPI v2.0
- const static DWORD TAPI_HI_VERSION = TAPI_CURRENT_VERSION; // TAPI当前最高版本号
- // 系统成员
- HLINEAPP m_hLineApp; // TAPI应用主控句柄
- CMap<DWORD, DWORD, CTapiLine*, CTapiLine*> m_MapLineByDevID; // 以DevID为索引的LineMap
- CMap<CString, LPCTSTR, CTapiLine*, CTapiLine*> m_MapLineByExtID; // 以ExtID为索引的LineMap
- };
|