CALLBACK proces flow                2006-01-05

***** FULL CALLBACKS FUNCTIONALITY WAS ADDED IN THE 1.1.11 RELEASE *****

This will outline the process I have thought through in my head for a call-back 
process in VICIDIAL. I have received suggestions for methodologies of how many 
people think that call-backs should work and I think I've finally come to a 
conclusion of how I may build it into VICIDIAL that incorporates most of these 
suggestions.



The Agent Side:
When an Agent dispositions a call as CALLBK, a popup frame will appear that will 
allow selecting a date from a calendar window(with option to go forward by month 
up to 1 year) and a pull-down list that will show hours(in 30 minute increments 
defaulting to current half hour). After the agent selects a day and time, they 
must check a box to denote that only they should be able to get this Callback. 
If the box is unchecked, anyone will be able to call this lead after it's 
callback_time elapses. The lead will be entered as vicidial_list.status CBHOLD 
in the system and will not be able to be dialed or selected as a dial status in 
the admin screen.

If the agent checks the box that they will be the only one that can callback the 
lead and it is time to call that lead again(vicidial.php will check at login and 
every 30 minutes to see if there are any agent-specific leads that need to be 
called back by that agent) then when the agent is paused they will be able to 
click on the "CALLBACK" button on the bottom of the screen and select which lead 
that they want to callback. The call will proceed as a normal call and will be 
dispositioned as normal. The callback button will probably be able to flash or 
gently strobe like the astguiclient.php voicemail button does when callbacks are 
available to be called for that logged-in agent.

If the agent does not check that they are the only ones to be able to call that 
specific lead back, then it will be updated by the AST_VDhopper.pl script once 
it's callback date/time has been reached the status will be changed to CALLBK 
and will be available for calling if that status is selected in the dial 
statuses for the campaign and if the list is active.

If the managr has given the agent permission to set USERONLY callbacks, then
the agent will be able to call those customers back by clicking on the CALLBACK
count link below the comments field of vicidial.php once they are logged in.
From here they can see the listing of their callbacks and their settings, and
can call the customer back by clicking on the callback record.



The Admin Side:
In the admin.php web page will be a callback viewer. Admin users will be able to 
search and sort by campaign, list, user, status and time-range to see summary 
lists of the Callbacks in the vicidial_callbacks table. Callbacks will be 
alterable through the modify lead screen.



The Server Side:
The vicidial_callbacks table will look like this:
 CREATE TABLE vicidial_callbacks (
callback_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
lead_id INT(9) UNSIGNED,
list_id INT(8) UNSIGNED,		
campaign_id VARCHAR(8),			
status VARCHAR(10),
entry_time DATETIME,
callback_time DATETIME,
modify_date TIMESTAMP,
user VARCHAR(20),
recipient ENUM('USERONLY','ANYONE'),	
comments VARCHAR(255),
index (lead_id),
index (status),
index (callback_time)
);

The status field will probably have the following possible values: ACTIVE, LIVE, 
ARCHIVE and all old callback entries will be kept for archival purposes, 
anthough not viewable by the agent.

The AST_VDhopper.pl script will do a select every minute(before it does it's 
hopper filling run) for callbacks that need to be placed back in CALLBK status. 
Something like this query:
  SELECT lead_id from vicidial_callbacks where callback_time < '2006-01-06 
10:02:03' and status='ACTIVE';

AST_VDhopper.pl will then:
- set these leads to vicidial_list.status of CALLBK
- set the called_since_last_reset to N
- insert the lead into the vicidial_hopper under the campaign it was originally
   set if it is an ANYONE callback
- change the vicidial_callbacks.status to LIVE. 

At the time of a hangup of a callback call, the vicidial.php script will set the 
vicidial_callbacks.status to ARCHIVE. The leads that designate the recipient as 
USERONLY will not be altered in any way by AST_VDhopper.pl.




