www.pudn.com > lucent_softphone.rar > DirectoryNumber.h
// DirectoryNumber.h : Declaration of the CDirectoryNumber #ifndef __DIRECTORYNUMBER_H_ #define __DIRECTORYNUMBER_H_ #include "resource.h" // main symbols #include "lucentCtiCP.h" #include "dnevent.h" #includeusing namespace std; #define ERR_INI -100 ///////////////////////////////////////////////////////////////////////////// // CDirectoryNumber class ATL_NO_VTABLE CDirectoryNumber : public CComObjectRootEx , public CComCoClass , public IConnectionPointContainerImpl , public IDirectoryNumber, public CProxy_IDirectoryNumberEvents< CDirectoryNumber >, public IGenesysOB { public: CDirectoryNumber() { m_pUnkMarshaler = NULL; } DECLARE_REGISTRY_RESOURCEID(IDR_DIRECTORYNUMBER) DECLARE_NOT_AGGREGATABLE(CDirectoryNumber) DECLARE_GET_CONTROLLING_UNKNOWN() DECLARE_PROTECT_FINAL_CONSTRUCT() BEGIN_COM_MAP(CDirectoryNumber) COM_INTERFACE_ENTRY(IDirectoryNumber) COM_INTERFACE_ENTRY(IConnectionPointContainer) COM_INTERFACE_ENTRY_AGGREGATE(IID_IMarshal, m_pUnkMarshaler.p) COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer) COM_INTERFACE_ENTRY(IGenesysOB) END_COM_MAP() BEGIN_CONNECTION_POINT_MAP(CDirectoryNumber) CONNECTION_POINT_ENTRY(DIID__IDirectoryNumberEvents) END_CONNECTION_POINT_MAP() HRESULT FinalConstruct() { m_invokeId=0; m_serverHandle=0; m_monitorId=0; m_lErrCode=ERR_INI; m_ErrMsg=""; m_bConnect=FALSE; m_splitMonitorId=0; m_bIsCmdMsg=FALSE; memset(&m_ani,0,sizeof(DeviceID_t)); memset(&m_dnis,0,sizeof(DeviceID_t)); memset(&m_activeConnId,0,sizeof(ConnectionID_t)); memset(&m_holdConnId,0,sizeof(ConnectionID_t)); memset(&m_deviceId,0,sizeof(DeviceID_t)); memset(&m_agentId,0,sizeof(AgentID_t)); memset(&m_agentPwd,0,sizeof(AgentPassword_t)); memset(&m_agentGroup,0,sizeof(AgentGroup_t) ); memset(&m_thisDevice,0,sizeof (ExtendedDeviceID_t)); memset(&m_otherDevice,0,sizeof (ExtendedDeviceID_t)); m_agentStat=AS_NotReady; m_bLogged=FALSE; m_callType=CT_Unknown; return CoCreateFreeThreadedMarshaler( GetControllingUnknown(), &m_pUnkMarshaler.p); } void FinalRelease() { m_pUnkMarshaler.Release(); } CComPtr m_pUnkMarshaler; public: BOOL DefaultHandler(dnevent* event); BOOL Initialize(BSTR deviceId,ACSHandle_t serverHandle,InvokeID_t invokeId); void Uninitialize(); BOOL KVListToAppString(IKVList* pkvlist, char* pAppString,UINT bufLen); BOOL GetAnsiFromBSTR(char** dest, BSTR source); BOOL GetAnsiFromInt(char** dest,int source); BOOL ValidateString(char* pStr,UINT bufLen); InvokeID_t m_invokeId; ACSHandle_t m_serverHandle; CSTAMonitorCrossRefID_t m_monitorId; CSTAMonitorCrossRefID_t m_splitMonitorId; BOOL m_bIsCmdMsg; private: DeviceID_t m_deviceId; //the monitered device ConnectionID_t m_activeConnId; // the active connecton id ConnectionID_t m_holdConnId; // the hold connection id ExtendedDeviceID_t m_otherDevice; // other dn in this evnet ExtendedDeviceID_t m_thisDevice; //this dn in this event DeviceID_t m_dnis;//the dnis (the called device NO) DeviceID_t m_ani;//the ani (the calling device NO) AgentID_t m_agentId;//agent id AgentPassword_t m_agentPwd;// agent password AgentGroup_t m_agentGroup; //agent group AGENTSTATES m_agentStat;//agent state BOOL m_bLogged; CALLTYPES m_callType; // the call type long m_lErrCode; string m_ErrMsg; BOOL m_bConnect; // the connect state flag BOOL OnCallDial(); BOOL OnConsultDial(); void DNPostMessage(UINT msg, WPARAM wParam ,LPARAM lParam); BOOL FillEvent(dnevent* pEvent);// Before this event is fired out, fill some info into it BOOL GetCallInfo(CSTADeliveredEvent_t* pDeliverEvent); BOOL GetCallInfo(CSTAEstablishedEvent_t* pDeliverEvent); BOOL GetCallInfo(CSTAHeldEvent_t* pHeldEvent); BOOL GetCallInfo(CSTARetrievedEvent_t* pRetrieveEvent); BOOL GetCallInfo(CSTAConnectionClearedEvent_t* pConnclearEvnet); BOOL GetCallInfo(CSTAConferencedEvent_t* pConfer); BOOL GetCallInfo(CSTATransferredEvent_t* pTransfer); BOOL GetCallInfo(CSTAFailedEvent_t* pFailed); // BOOL GetCallInfo(CSTAFailedEvent_t* pFailed); BOOL GetCallInfo(CSTAOriginatedEvent_t* pOriginated); BOOL GetCallInfo(CSTALoggedOnEvent_t* pLogon); BOOL GetCallInfo(CSTALoggedOffEvent_t* pLogoff); BOOL MonitorSplit(AgentGroup_t* agentSplit);// monitor a acd group for agent login and logout void StopMonitor(CSTAMonitorCrossRefID_t monitorId); //stop a monitor // IDirectoryNumber public: STDMETHOD_(BOOL, SendDTMF)(/*[in]*/ BSTR tone); STDMETHOD(get_HoldConnID)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_ActiveConnID)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(ID2ConnID)(/*[in]*/ long id, /*[out, retval]*/ BSTR *connid); STDMETHOD(get_HoldID)(/*[out, retval]*/ long *pVal); STDMETHOD(get_ActiveID)(/*[out, retval]*/ long *pVal); STDMETHOD_(BOOL, UpdateData)(/*[in, optional]*/ BSTR connid, /*[in]*/ LPKVLIST data); STDMETHOD_(BOOL, DeleteData)(/*[in, optional]*/ BSTR connid, /*[in]*/ BSTR key); STDMETHOD_(BOOL, DeleteAllData)(/*[in, optional]*/ BSTR connid); STDMETHOD_(BOOL, AttachData)(/*[in, optional]*/ BSTR connid, /*[in]*/ LPKVLIST data); STDMETHOD_(BOOL, CancelForward)(/*[in, optional]*/ FORWARDMODES mode); STDMETHOD_(BOOL, Forward)(/*[in]*/ BSTR dn, /*[in, optional]*/ FORWARDMODES mode); STDMETHOD_(BOOL, AlternateCall)(); STDMETHOD_(BOOL, SingleStepTransfer)(/*[in]*/ BSTR dn, /*[in, optional]*/ LPKVLIST data); STDMETHOD_(BOOL, MuteTransfer)(/*[in]*/ BSTR dn, /*[in, optional]*/ LPKVLIST data); STDMETHOD_(BOOL, RedirectCall)(/*[in]*/ BSTR dn, /*[in, optional]*/ BSTR connid); STDMETHOD_(BOOL, MergeCalls)(/*[in, optional]*/ MERGETYPES type); STDMETHOD_(BOOL, ReconnectCall)(); STDMETHOD_(BOOL, DeleteFromConference)(/*[in]*/ BSTR dn); STDMETHOD_(BOOL, CompleteConference)(); STDMETHOD_(BOOL, InitConferenceCall)(/*[in]*/ BSTR dn, /*[in, optional]*/ LPKVLIST data); STDMETHOD_(BOOL, CompleteTransfer)(); STDMETHOD_(BOOL, InitTransferCall)(/*[in]*/ BSTR dn, /*[in, optional]*/ LPKVLIST data); STDMETHOD_(BOOL, RetrieveCall)(/*[in, optional]*/ BSTR connid); STDMETHOD_(BOOL, HoldCall)(/*[in, optional]*/ BSTR connid); STDMETHOD_(BOOL, ReleaseCall)(/*[in, optional]*/ BSTR connid, /*[in, optional]*/ BOOL hangup = FALSE); STDMETHOD_(BOOL, AnswerCall)(/*[in, optional]*/ BSTR connid); STDMETHOD_(BOOL, MakeCall)(/*[in]*/ BSTR dn, /*[in, optional]*/ LPKVLIST data); STDMETHOD_(BOOL, AgentSetNotReady)(/*[in, optional]*/ AGENTMODES mode); STDMETHOD_(BOOL, AgentSetReady)(/*[in, optional]*/ AGENTMODES mode); STDMETHOD_(BOOL, AgentLogout)(); STDMETHOD_(BOOL, AgentLogin)(/*[in]*/ BSTR AgentID, /*[in, optional]*/ BSTR AgentPassword, /*[in, optional]*/ BSTR ACDQ, /*[in, optional]*/ AGENTMODES mode); STDMETHOD(get_ErrReport)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_DND)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_OnHook)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_AgentState)(/*[out, retval]*/ AGENTSTATES *pVal); STDMETHOD(get_ACDQ)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_AgentID)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_Logged)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_Type)(/*[out, retval]*/ ADDRTYPES *pVal); STDMETHOD(get_Number)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_Registered)(/*[out, retval]*/ BOOL *pVal); STDMETHOD(get_ErrMsg)(/*[out, retval]*/ BSTR *pVal); STDMETHOD(get_ErrCode)(/*[out, retval]*/ long *pVal); // IGenesysOB STDMETHOD(get_RescheduleFlag)(int * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_CampaignBatchID)(int * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_CampaignID)(int * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_Campaign)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_ProjectName)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_CustomerID)(int * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_CustomerName)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_CustomerTitle)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(get_EventID)(int * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(put_EventID)(int pVal) { return E_NOTIMPL; } STDMETHOD(get_PhoneNumber)(BSTR * pVal) { if (pVal == NULL) return E_POINTER; return E_NOTIMPL; } STDMETHOD(put_PhoneNumber)(BSTR pVal) { return E_NOTIMPL; } STDMETHOD(put_NeverCall)(BOOL) { return E_NOTIMPL; } STDMETHOD(put_ExpectedStartDate)(BSTR ) { return E_NOTIMPL; } STDMETHOD_(BOOL, Init)(LPKVLIST data) { return 0; } STDMETHOD_(VOID, Uninit)() { return; } STDMETHOD(get_AgentMode)(/*[out, retval]*/ AGENTMODES *pVal) { *pVal=AM_Unknown; return S_OK; } STDMETHOD(put_DND)(/*[in]*/ BOOL newVal) { return S_OK; } STDMETHOD(put_ErrReport)(/*[in]*/ BOOL newVal) { return S_OK; } }; #endif //__DIRECTORYNUMBER_H_