Database Systems Corp.
Home  |   Contact Us  |   About Us  |   Sign Up  |   FAQ

predictive dialers and crm software
computer telephony software predictive dialer

ACD Automatic Call Distribution
Predictive Dialer
Contact Center
VOIP Service
Internet Phone Service
IP Phone Service
Phone Software
Softphone IVR System
Computer Phone Software
Web Phone Software
Softphone Phone System
Computer Telephony Solution

predictive dialers and crm software
Information

Computer Telephony Integration
CTI Software
ACD and CTI
Linux CTI Solutions
CRM and CTI
Linux IVR Software
Linux Computer Telephony
CTI IVR Solutions
CTI and DNIS Applications
ANI and CTI development
CTI Telephony Products
Phone Software
CTI Telephony Vendors
Computer Telephony Software
CTI Programming
Softphone Systems
Telephony Software
Computer Phone System
CTI Applications
Softphone Software
Telephone Software
CTI Middleware

predictive dialers and crm software


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.