DSC Tech Library
CTI Universal Softphone API Library
Routines
int RSPCreate();
void
RSPDestroy(const unsigned int context);
int RSPDecode(const char * message, void *
structure);
void
RSPSetAsyncSelect(const unsigned int context, HWND hWnd);
void
RSPSetServer(const unsigned int context,
const char *
_hostname, const char * _dialer);
void
RSPSetUser (const unsigned int context,
const char * _userName,
const char * _groupName,
int _extension);
int RSPPing(const unsigned int context);
int RSPPong(const unsigned int context);
int RSPMessage(const unsigned int context,
char * message, int timeout);
int RSPLogin (const unsigned int context,
const char * _campaign);
int RSPForceLogin (const unsigned int context,
const char *
_campaign);
int RSPLoginPredictive (const unsigned int context,
const char *
_campaign,
const char * _ACDVector);
int RSPForceLoginPredictive(const unsigned int
context,
const char *
_campaign,
const char *
_ACDVector);
void
RSPLogout(const unsigned int context);
int RSPGetForcedPreview(const unsigned int
context,
const char * machine,
const char *
campaign,
const char *
listname);
int RSPMakeAvailable(const unsigned int
context);
int RSPMakeUnavailable(const unsigned int
context);
int RSPMakeCall(const unsigned int context, char
* phonenumber);
int RSPMakeInternalCall(const unsigned int
context, char * extension);
int RSPDisconnectCall(const unsigned int
context, char * disposition);
int RSPReconnectHeldCall(const unsigned int
context);
int RSPConferenceHeldCall(const unsigned int
context);
//int RSPConference(const unsigned int context,
char * station);// not
implemented at this writing
int RSPDialDigits(const unsigned int context,
char * digits);
int RSPHoldCall(const unsigned int context);
int RSPMonitorExtension(const unsigned int
context,
char * extension,
bool coach);
int RSPMonitorUser (const unsigned int context,
char * username, bool coach);
int RSPMonitorStop (const unsigned int context);
int RSPTriggerPAMAlarm(const unsigned int
context, char * alarmID);
int RSPBeginRecording(const unsigned int
context);
int RSPEndRecording(const unsigned int context);
int RSPBlindTransfer(const unsigned int context,
char * extension, char *
campaign,
unsigned int
identifier);
int RSPAnnounceTransfer(const unsigned int
context, char * extension);
int RSPCancelTransfer(const unsigned int
context);
int RSPCompleteTransfer(const unsigned int
context,
char * campaign,
unsigned int identifier);
int RSPTransferToGroup(const unsigned int
context,
char * group, char *
campaign,
unsigned int
identifier);
int RSPTransferToVoicemail(const unsigned int
context,
char * extension);
Details
int RSPCreate();
void
RSPDestroy(const unsigned int context);
RSPCreate()
returns a context variable for usage by the other RspApi routines. This permits a user to log into the dialer
multiple times in one session. Use RSPDestroy()
to disconnect the context after logging out.
int RSPDecode(const char * message, void *
structure);
RspApi32.dll
receives text messages from the dialer.
To ease programming, this routine is provided which will convert the
message into these structures (this may expand):
struct
RspApiLoginResponse{
int incamp; // logged into campaign
int relog; // was already logged in and re-logged in
};
struct
RspApiInboundResponse{
int
transferred; // transferred
(1), or inbound (0)?
char ani[40]; // ani
char dnis[40]; // dnis
char campaign[7]; // campaign name
char identifier[12]; // unique identifier
};
struct
RspApiResponse{
int
type;
int
error;
char value[64];
};
Size your input
structure to struct RspApiResponse to ensure that the data size is
adequate.
Depending on the
value of RspApiResponse.type, the user may decide to cast a pointer to RspApiResponse.value
to a different type. RspApiLoginResponse
is an alternative, and would be used only if RspApiResponse.type is RSP_RT_LOGIN:
static
char l_Buffer[sizeof(struct RspApiResponse)];
static struct
RspApiLoginResponse * loginResponse =
(RspApiLoginResponse
*)mainResponse->value;
static
struct RspApiInboundResponse * inboundResponse =
(RspApiInboundResponse
*)inboundResponse->value;
if(mainResponse->type
== RSP_RT_LOGIN){
int m_ErrorCode = mainResponse->error;
bool m_InCampaign =
loginResponse->incamp;
bool m_ReloggedIn =
loginResponse->relog;
bool m_LoggedIn = false;
if(m_ErrorCode == RSPAPI_SUCCESS)
m_LoggedIn = RSPIsLoggedIn();
}
void
RSPSetAsyncSelect(HWND hWnd);
This associates
the application window message loop with incoming dialer messages. Required initialization routine, unless
using RSPMessage() (not recommended).
void
RSPSetServer(const unsigned int context,
const char * _hostname, const char * _dialer);
void
RSPSetUser (const unsigned int context,
const char * _userName,
const char * _groupName,
int _extension);
These two
routines must be called in order to “set up” for a login to the dialer. “_hostname” is the server machine
name, and “_dialer” is the name of the instance of the dialer
server. “_groupname” is used to
associate the user with the group logic of the dialer, while “_extension”
is the logical phone extension of the user.
Required initialization routines.
int RSPPing(const unsigned int context);
int RSPPong(const unsigned int context);
If you wish to
set up a timed periodic pulse-check on the server, use this – returns RSP_RT_PING,
or nothing at all if the dialer’s down.
If you receive a RSP_RT_PONG from the Dialer, you
must respond with RSPPong(), or risk being dropped as a
user from the Dialer.
int RSPMessage(const unsigned int context, char
* message, int timeout);
This may be used
for asynchronous communication, as an alternative, or in addition, to RSPSetAsyncSelect(). Please don’t.
int RSPLogin (const unsigned int context,
const char *
_campaign);
int RSPForceLogin (const unsigned int context,
const char *
_campaign);
int RSPLoginPredictive (const unsigned int context,
const char *
_campaign,
const char *
_ACDVector);
int RSPForceLoginPredictive(const unsigned int
context,
const char *
_campaign,
const char *
_ACDVector);
void
RSPLogout(const unsigned int context);
Use these to
login to the dialer. RSPSetServer()
& RSPSetUser () must be called prior to using these routines. “_campaign” is a user-defined
6-character identifier which is used to cluster users around different
“applications” – this coordinates it with other RspApi32 routines which use
this argument. Also, the dialer does
some reporting breakdowns based on this.
For predictive-dialing, a known (to the dialer) dialer predictive vector
must be supplied.
int RSPGetForcedPreview(const unsigned int
context,
const char * machine,
const char * campaign,
const char *
listname);
Accesses a
customer record which may be dialed from a list, prior to being “popped” by the
List Manager.
int RSPMakeAvailable(const unsigned int
context);
int RSPMakeUnavailable(const unsigned int
context);
Toggle the users
“availability” to take calls.
int RSPMakeCall(const unsigned int context, char
* phonenumber);
Call a phone
number and connect.
int RSPMakeInternalCall(const unsigned int
context, char * extension);
Call an internal
extension number (other dialer user).
int RSPDisconnectCall(const unsigned int
context, char * disposition);
End a call with
a user-defined 2-character disposition.
There are some reserved ones in the dialer, which may be used to prompt
an alarm from DscPAM (see also RSPTriggerPAMAlarm()):
#define
DSCPAM_ALRM_SALE "SA"
// "1 " will also
#define
DSCPAM_ALRM_REQMONITOR "MM"
// trigger "SA"
#define
DSCPAM_ALRM_REQVERIFIER "VF"
#define
DSCPAM_ALRM_REQGENERAL "GA"
#define
DSCPAM_ALRM_CUSTOM1 "G1"
#define
DSCPAM_ALRM_CUSTOM2 "G2"
#define
DSCPAM_ALRM_CUSTOM3 "G3"
#define
DSCPAM_ALRM_CUSTOM4 "G4"
#define
DSCPAM_ALRM_CUSTOM5 "G5"
int RSPReconnectHeldCall(const unsigned int
context);
Reconnect a held
call.
int RSPConferenceHeldCall(const unsigned int
context);
Used to
conference in a call on hold. In order
to use this, hold a call (RSPHoldCall()), connect to a new call, then
call this routine to conference in the held call.
//int RSPConference(const unsigned int context,
char * station);
Conference in an
internal extension number (other dialer user).
Not implemented at this writing.
int RSPDialDigits(const unsigned int context,
char * digits);
Send digits down
the line – must be connected already. Useful for responding to IVR menus, etc.
int RSPHoldCall(const unsigned int context);
Place call on
hold.
int RSPMonitorExtension(const unsigned int
context,
char * extension,
bool coach);
int RSPMonitorUser (const unsigned int context,
char * username, bool coach);
int RSPMonitorStop (const unsigned int context);
Monitor the
conversation, by username or by extension. If “coach” is true, then the user may
speak to the monitored parties.
int RSPTriggerPAMAlarm(const unsigned int
context, char * alarmID);
There are
currently nine alarms defined for DscPAM (Phone Activity Monitor). The five custom alarms may also be “killed”
from the dialer after being invoked.
#define
DSCPAM_ALRM_SALE "SA" // "1 " will
also
#define
DSCPAM_ALRM_REQMONITOR "MM"
// trigger "SA"
#define
DSCPAM_ALRM_REQVERIFIER "VF"
#define
DSCPAM_ALRM_REQGENERAL "GA"
#define
DSCPAM_ALRM_CUSTOM1 "G1"
#define
DSCPAM_ALRM_CUSTOM2 "G2"
#define
DSCPAM_ALRM_CUSTOM3 "G3"
#define
DSCPAM_ALRM_CUSTOM4 "G4"
#define
DSCPAM_ALRM_CUSTOM5 "G5"
#define
DSCPAM_ALRM_KILL1 "K1"
#define
DSCPAM_ALRM_KILL2 "K2"
#define
DSCPAM_ALRM_KILL3 "K3"
#define
DSCPAM_ALRM_KILL4 "K4"
#define
DSCPAM_ALRM_KILL5 "K5"
int RSPBeginRecording(const unsigned int
context);
int RSPEndRecording(const unsigned int context);
Begin and end
phone conversation recording.
int RSPBlindTransfer(const unsigned int context,
char * extension, char * campaign,
unsigned int identifier);
Attempt a
transfer and disconnect regardless of success.
“extension” is the target, and “campaign” and the
user-defined “identifier” (i.e., a record key) is passed to the target
to assist the programmer in creating a well-synchronized application.
int RSPAnnounceTransfer(const unsigned int
context,
char * extension);
int RSPCancelTransfer(const unsigned int
context);
int RSPCompleteTransfer(const unsigned int
context,
char * campaign, unsigned int identifier);
Use these
routines to create a more robust transfer mechanism. Once a response type of RSP_RT_TRANSFER with an error code
of RSPAPI_SUCCESS is received, the transfer can be completed or
cancelled.
int RSPTransferToGroup(const unsigned int
context,
char * group, char *
campaign,
unsigned int
identifier);
Transfer to a
dialer user who is logged into “group” (see RSPSetUser()).
int RSPTransferToVoicemail(const unsigned int
context,
char * extension);
Transfer to a
voicemail at extension.
|