Added new campaign feature to allow agents to select a specific timezone to use when scheduling callbacks.
git-svn-id: svn://192.168.202.10@3020 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -343,6 +343,11 @@ OTHER CHANGES:
|
||||
94. Added new campaign feature to automatically reschedule ANYONE callbacks when
|
||||
they are dispositioned as a non-Human-Answered status flag status.
|
||||
|
||||
95. Added new campaign feature to allow agents to select a specific timezone to
|
||||
use when scheduling callbacks. For this to work, the Phone Codes must be
|
||||
updated on your system using the following command:
|
||||
/usr/share/astguiclient/ADMIN_area_code_populate.pl --purge-table --debug
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# ADMIN_area_code_populate.pl version 2.14
|
||||
#
|
||||
# Copyright (C) 2017 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2018 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# Description:
|
||||
# server application that allows load areacodes into to asterisk list database
|
||||
@@ -24,6 +24,7 @@
|
||||
# 151228-1043 - Added ISO-TLD table and import
|
||||
# 160611-0933 - Added more documentation
|
||||
# 170614-2146 - Added some dirty input filtering and more debug output
|
||||
# 180825-2038 - Added php_tz field to vicidial_phone_codes table
|
||||
#
|
||||
|
||||
|
||||
@@ -359,6 +360,7 @@ else
|
||||
if ($codefile[$pc] !~ /GEOGRAPHIC DESCRIPTION/)
|
||||
{
|
||||
$pc++;
|
||||
$row[9] =~ s/\r|\n|\t| $//gi;
|
||||
$row[8] =~ s/\r|\n|\t| $//gi;
|
||||
$row[7] =~ s/\r|\n|\t| $//gi;
|
||||
$row[6] =~ s/\r|\n|\t| $//gi;
|
||||
@@ -368,7 +370,7 @@ else
|
||||
$row[2] =~ s/\r|\n|\t| $//gi;
|
||||
$row[1] =~ s/\r|\n|\t| $//gi;
|
||||
$row[0] =~ s/\r|\n|\t| $//gi;
|
||||
$ins_stmt.="('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[7]', '$row[8]'), ";
|
||||
$ins_stmt.="('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[7]', '$row[8]', '$row[9]'), ";
|
||||
if ($pc =~ /00$/)
|
||||
{
|
||||
chop($ins_stmt);
|
||||
|
||||
@@ -1009,7 +1009,8 @@ dead_trigger_repeat ENUM('NO','REPEAT_ALL','REPEAT_AUDIO','REPEAT_URL') default
|
||||
dead_trigger_filename TEXT,
|
||||
dead_trigger_url TEXT,
|
||||
scheduled_callbacks_force_dial ENUM('N','Y') default 'N',
|
||||
scheduled_callbacks_auto_reschedule VARCHAR(10) default 'DISABLED'
|
||||
scheduled_callbacks_auto_reschedule VARCHAR(10) default 'DISABLED',
|
||||
scheduled_callbacks_timezones_container VARCHAR(40) default 'DISABLED'
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_lists (
|
||||
@@ -1110,7 +1111,8 @@ GMT_offset VARCHAR(6),
|
||||
DST enum('Y','N'),
|
||||
DST_range VARCHAR(8),
|
||||
geographic_description VARCHAR(100),
|
||||
tz_code VARCHAR(4) default ''
|
||||
tz_code VARCHAR(4) default '',
|
||||
php_tz VARCHAR(100) default ''
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_inbound_groups (
|
||||
@@ -1423,6 +1425,9 @@ user_group VARCHAR(20),
|
||||
lead_status VARCHAR(6) default 'CALLBK',
|
||||
email_alert datetime,
|
||||
email_result ENUM('SENT','FAILED','NOT AVAILABLE'),
|
||||
customer_timezone VARCHAR(100) default '',
|
||||
customer_timezone_diff VARCHAR(6) default '',
|
||||
customer_time DATETIME,
|
||||
index (lead_id),
|
||||
index (status),
|
||||
index (callback_time)
|
||||
@@ -4283,7 +4288,10 @@ INSERT INTO vicidial_configuration (id, name, value) VALUES (NULL, 'qc_database_
|
||||
UPDATE vicidial_configuration set value='1766' where name='qc_database_version';
|
||||
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('AGENT_CALLBACK_EMAIL ','Scheduled callback email alert settings','OTHER','---ALL---','; sending email address\r\nemail_from => vicidial@local.server\r\n\r\n; subject of the email\r\nemail_subject => Scheduled callback alert for --A--agent_name--B--\r\n\r\nemail_body_begin => \r\nThis is a reminder that you have a scheduled callback right now for the following lead:\r\n\r\nName: --A--first_name--B-- --A--last_name--B--\r\nPhone: --A--phone_number--B--\r\nAlt. phone: --A--alt_phone--B--\r\nEmail: --A--email--B--\r\nCB Comments: --A--callback_comments--B--\r\nLead Comments: --A--comments--B--\r\n\r\nPlease don\'t respond to this, fool.\r\n\r\nemail_body_end');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_USA','USA Timezone List','TIMEZONE_LIST','---ALL---','USA,AST,N,Atlantic Time Zone\nUSA,EST,Y,Eastern Time Zone\nUSA,CST,Y,Central Time Zone\nUSA,MST,Y,Mountain Time Zone\nUSA,MST,N,Arizona Time Zone\nUSA,PST,Y,Pacific Time Zone\nUSA,AKST,Y,Alaska Time Zone\nUSA,HST,N,Hawaii Time Zone\n');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_CANADA','Canadian Timezone List','TIMEZONE_LIST','---ALL---','CAN,NST,Y,Newfoundland Time Zone\nCAN,AST,Y,Atlantic Time Zone\nCAN,EST,Y,Eastern Time Zone\nCAN,CST,Y,Central Time Zone\nCAN,CST,N,Saskatchewan Time Zone\nCAN,MST,Y,Mountain Time Zone\nCAN,PST,Y,Pacific Time Zone\n');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_AUSTRALIA','Australian Timezone List','TIMEZONE_LIST','---ALL---','AUS,AEST,Y,Eastern Australia Time Zone\nAUS,AEST,N,Queensland Time Zone\nAUS,ACST,Y,Central Australia Time Zone\nAUS,ACST,N,Northern Territory Time Zone\nAUS,AWST,N,Western Australia Time Zone\n');
|
||||
|
||||
UPDATE system_settings set vdc_agent_api_active='1';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1553',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
UPDATE system_settings SET db_schema_version='1554',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
|
||||
@@ -265,7 +265,7 @@ UPDATE system_settings SET db_schema_version='1426',db_schema_update_date=NOW()
|
||||
CREATE TABLE vicidial_settings_containers (
|
||||
container_id VARCHAR(40) PRIMARY KEY NOT NULL,
|
||||
container_notes VARCHAR(255) default '',
|
||||
container_type ENUM('OTHER','PERL_CLI','EMAIL_TEMPLATE') default 'OTHER',
|
||||
container_type VARCHAR(40) default 'OTHER',
|
||||
user_group VARCHAR(20) default '---ALL---',
|
||||
container_entry MEDIUMTEXT
|
||||
) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
@@ -2,7 +2,7 @@ UPDATE system_settings SET db_schema_version='1479',version='2.13rc1tk',db_schem
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1480',version='2.14b0.5',db_schema_update_date=NOW() where db_schema_version < 1480;
|
||||
|
||||
ALTER TABLE vicidial_settings_containers MODIFY container_type ENUM('OTHER','PERL_CLI','EMAIL_TEMPLATE','AGI') default 'OTHER';
|
||||
ALTER TABLE vicidial_settings_containers MODIFY container_type VARCHAR(40) default 'OTHER';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1481',db_schema_update_date=NOW() where db_schema_version < 1481;
|
||||
|
||||
@@ -725,3 +725,21 @@ index (lead_id)
|
||||
CREATE TABLE vicidial_recent_ascb_calls_archive LIKE vicidial_recent_ascb_calls;
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1553',db_schema_update_date=NOW() where db_schema_version < 1553;
|
||||
|
||||
ALTER TABLE vicidial_phone_codes ADD php_tz VARCHAR(100) default '';
|
||||
|
||||
ALTER TABLE vicidial_campaigns ADD scheduled_callbacks_timezones_container VARCHAR(40) default 'DISABLED';
|
||||
|
||||
ALTER TABLE vicidial_callbacks ADD customer_timezone VARCHAR(100) default '';
|
||||
ALTER TABLE vicidial_callbacks ADD customer_timezone_diff VARCHAR(6) default '';
|
||||
ALTER TABLE vicidial_callbacks ADD customer_time DATETIME;
|
||||
|
||||
ALTER TABLE vicidial_callbacks_archive ADD customer_timezone VARCHAR(100) default '';
|
||||
ALTER TABLE vicidial_callbacks_archive ADD customer_timezone_diff VARCHAR(6) default '';
|
||||
ALTER TABLE vicidial_callbacks_archive ADD customer_time DATETIME;
|
||||
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_USA','USA Timezone List','TIMEZONE_LIST','---ALL---','USA,AST,N,Atlantic Time Zone\nUSA,EST,Y,Eastern Time Zone\nUSA,CST,Y,Central Time Zone\nUSA,MST,Y,Mountain Time Zone\nUSA,MST,N,Arizona Time Zone\nUSA,PST,Y,Pacific Time Zone\nUSA,AKST,Y,Alaska Time Zone\nUSA,HST,N,Hawaii Time Zone\n');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_CANADA','Canadian Timezone List','TIMEZONE_LIST','---ALL---','CAN,NST,Y,Newfoundland Time Zone\nCAN,AST,Y,Atlantic Time Zone\nCAN,EST,Y,Eastern Time Zone\nCAN,CST,Y,Central Time Zone\nCAN,CST,N,Saskatchewan Time Zone\nCAN,MST,Y,Mountain Time Zone\nCAN,PST,Y,Pacific Time Zone\n');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('TIMEZONES_AUSTRALIA','Australian Timezone List','TIMEZONE_LIST','---ALL---','AUS,AEST,Y,Eastern Australia Time Zone\nAUS,AEST,N,Queensland Time Zone\nAUS,ACST,Y,Central Australia Time Zone\nAUS,ACST,N,Northern Territory Time Zone\nAUS,AWST,N,Western Australia Time Zone\n');
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1554',db_schema_update_date=NOW() where db_schema_version < 1554;
|
||||
|
||||
@@ -459,10 +459,11 @@
|
||||
# 180522-1920 - Added Routing Initiated Recording ability for manual dial calls
|
||||
# 180610-2308 - Added code for Dead Call Trigger features
|
||||
# 180818-2147 - Added code for scheduled_callbacks_auto_reschedule
|
||||
# 180827-1225 - Added code for scheduled_callbacks_timezones_... features
|
||||
#
|
||||
|
||||
$version = '2.14-353';
|
||||
$build = '180818-2147';
|
||||
$version = '2.14-354';
|
||||
$build = '180827-1225';
|
||||
$php_script = 'vdc_db_query.php';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=762;
|
||||
@@ -755,6 +756,10 @@ if (isset($_GET["routing_initiated_recording"])) {$routing_initiated_recording
|
||||
elseif (isset($_POST["routing_initiated_recording"])) {$routing_initiated_recording=$_POST["routing_initiated_recording"];}
|
||||
if (isset($_GET["dead_time"])) {$dead_time=$_GET["dead_time"];}
|
||||
elseif (isset($_POST["dead_time"])) {$dead_time=$_POST["dead_time"];}
|
||||
if (isset($_GET["callback_gmt_offset"])) {$callback_gmt_offset=$_GET["callback_gmt_offset"];}
|
||||
elseif (isset($_POST["callback_gmt_offset"])) {$callback_gmt_offset=$_POST["callback_gmt_offset"];}
|
||||
if (isset($_GET["callback_timezone"])) {$callback_timezone=$_GET["callback_timezone"];}
|
||||
elseif (isset($_POST["callback_timezone"])) {$callback_timezone=$_POST["callback_timezone"];}
|
||||
|
||||
header ("Content-type: text/html; charset=utf-8");
|
||||
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
|
||||
@@ -1084,6 +1089,9 @@ $url_link = preg_replace("/\'|\"|\\\\|;/","",$url_link);
|
||||
$user_group = preg_replace('/[^-_0-9a-zA-Z]/','',$user_group);
|
||||
$routing_initiated_recording = preg_replace('/[^-_0-9a-zA-Z]/','',$routing_initiated_recording);
|
||||
$dead_time = preg_replace('/[^0-9]/','',$dead_time);
|
||||
$callback_gmt_offset = preg_replace('/[^- \._0-9a-zA-Z]/','',$callback_gmt_offset);
|
||||
$callback_timezone = preg_replace('/[^-, _0-9a-zA-Z]/','',$callback_timezone);
|
||||
|
||||
|
||||
# default optional vars if not set
|
||||
if (!isset($format)) {$format="text";}
|
||||
@@ -12150,11 +12158,22 @@ if ($ACTION == 'updateDISPO')
|
||||
### CALLBACK ENTRY
|
||||
if ( ($dispo_choice == 'CBHOLD') and (strlen($CallBackDatETimE)>10) )
|
||||
{
|
||||
$customer_time = $CallBackDatETimE;
|
||||
if ( ($callback_gmt_offset <> '0') and (strlen($callback_gmt_offset) > 0) and (strlen($callback_timezone) > 0) )
|
||||
{
|
||||
$CBdatetime_array = explode(" ",$CallBackDatETimE);
|
||||
$CBdate_array = explode("-",$CBdatetime_array[0]);
|
||||
$CBtime_array = explode(":",$CBdatetime_array[1]);
|
||||
|
||||
$CBserver_epoch = mktime($CBtime_array[0],$CBtime_array[1],$CBtime_array[2],$CBdate_array[1],$CBdate_array[2],$CBdate_array[0]);
|
||||
$CBserver_epoch = ($CBserver_epoch + ($callback_gmt_offset * 3600));
|
||||
$CallBackDatETimE = date("Y-m-d H:i:s", $CBserver_epoch);
|
||||
}
|
||||
$comments = preg_replace('/"/i','',$comments);
|
||||
$comments = preg_replace("/'/i",'',$comments);
|
||||
$comments = preg_replace('/;/i','',$comments);
|
||||
$comments = preg_replace("/\\\\/i",' ',$comments);
|
||||
$stmt="INSERT INTO vicidial_callbacks (lead_id,list_id,campaign_id,status,entry_time,callback_time,user,recipient,comments,user_group,lead_status) values('$lead_id','$list_id','$campaign','ACTIVE','$NOW_TIME','$CallBackDatETimE','$user','$recipient','$comments','$user_group','$CallBackLeadStatus');";
|
||||
$stmt="INSERT INTO vicidial_callbacks (lead_id,list_id,campaign_id,status,entry_time,callback_time,user,recipient,comments,user_group,lead_status,customer_timezone,customer_timezone_diff,customer_time) values('$lead_id','$list_id','$campaign','ACTIVE','$NOW_TIME','$CallBackDatETimE','$user','$recipient','$comments','$user_group','$CallBackLeadStatus','$callback_timezone','$callback_gmt_offset','$customer_time');";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00154',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
@@ -15074,6 +15093,131 @@ if ($ACTION == 'PauseCodeMgrApr')
|
||||
}
|
||||
|
||||
|
||||
################################################################################
|
||||
### SBC_timezone_build - Build scheduled callbacks timezone select content
|
||||
################################################################################
|
||||
if ($ACTION == 'SBC_timezone_build')
|
||||
{
|
||||
$orig_zone = date_default_timezone_get();
|
||||
$cust_timezones_enabled=0;
|
||||
$cust_timezones_HTML='';
|
||||
|
||||
### Grab Server GMT value from the database
|
||||
$stmt="SELECT local_gmt FROM servers where server_ip='$server_ip' limit 1;";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$gmt_recs = mysqli_num_rows($rslt);
|
||||
if ($gmt_recs > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$DBSERVER_GMT = $row[0];
|
||||
if (strlen($DBSERVER_GMT)>0) {$SERVER_GMT = $DBSERVER_GMT;}
|
||||
if ($isdst) {$SERVER_GMT++;}
|
||||
}
|
||||
|
||||
### Grab current GMT value of the lead that was called
|
||||
$stmt="SELECT gmt_offset_now from vicidial_list where lead_id='$lead_id';";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$scb_lead_recs = mysqli_num_rows($rslt);
|
||||
if ($scb_lead_recs > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$LEAD_gmt_offset_now = $row[0];
|
||||
}
|
||||
|
||||
$LEAD_gmt_diff = ($SERVER_GMT - $LEAD_gmt_offset_now);
|
||||
$SERVER_datetime = date("Y-m-d H:i:s");
|
||||
$LEAD_datetime = date("Y-m-d H:i:s", mktime(date("H")-$LEAD_gmt_diff,date("i"),date("s"),date("m"),date("d"),date("Y")));
|
||||
$cust_timezones_HTML .= "<table bgcolor='white' cellpadding=10 cellspacing=0><tr><td>\n";
|
||||
$cust_timezones_HTML .= "<table bgcolor='#CCCCCC' cellpadding=4 cellspacing=2>\n";
|
||||
$cust_timezones_HTML .= "<tr bgcolor=white><td align=\"center\" valign=\"top\" colspan=\"2\"><font color=\"#000066\"><b><font face=\"Arial, Helvetica, sans-serif\" size=\"3\">Select a Customer Timezone:</font> <font face=\"Arial, Helvetica, sans-serif\" size=\"1\"><a href=\"#\" onclick=\"hideDiv('SBC_timezone_span')\">"._QXZ("close")."</a></td></tr>\n";
|
||||
$cust_timezones_HTML .= "<tr bgcolor=white><td align=\"right\"><font color=\"#000066\"><b><font face=\"Arial, Helvetica, sans-serif\" size=\"2\"><a href=\"#\" onclick=\"SBC_timezone_choose('0','SERVER TIME','SERVER TIME')\">"._QXZ("SERVER TIME")."</a>: </font></td><td align=\"left\"><font size=2 face=\"Arial,Helvetica\"> $SERVER_datetime</font></td></tr>\n";
|
||||
$cust_timezones_HTML .= "<tr bgcolor=white><td align=\"right\"><font color=\"#000066\"><b><font face=\"Arial, Helvetica, sans-serif\" size=\"2\"><a href=\"#\" onclick=\"SBC_timezone_choose('$LEAD_gmt_diff','LEAD TIME','LEAD TIME')\">"._QXZ("LEAD TIME")."</a>: </font></td><td align=\"left\"><font size=2 face=\"Arial,Helvetica\"> $LEAD_datetime ($LEAD_gmt_diff "._QXZ("hours difference").")</font></td></tr>\n";
|
||||
|
||||
### Grab campaign setting for scheduled_callbacks_timezones_container
|
||||
$stmt="SELECT scheduled_callbacks_timezones_container from vicidial_campaigns where campaign_id='$campaign';";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$scb_lead_recs = mysqli_num_rows($rslt);
|
||||
if ($scb_lead_recs > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$scheduled_callbacks_timezones_container = $row[0];
|
||||
}
|
||||
|
||||
if ( ($scheduled_callbacks_timezones_container != 'DISABLED') and (strlen($scheduled_callbacks_timezones_container) > 0) )
|
||||
{
|
||||
### Gather container entry (example: "USA,EST,Y,Eastern Time Zone")
|
||||
$stmt = "SELECT container_entry from vicidial_settings_containers where container_id='$scheduled_callbacks_timezones_container' limit 1;";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$VSC_ct = mysqli_num_rows($rslt);
|
||||
if ($VSC_ct > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$container_entry = $row[0];
|
||||
if (strlen($container_entry) > 10)
|
||||
{
|
||||
$container_entry = preg_replace("/\r|\t|\'|\"/",'',$container_entry);
|
||||
$cust_timezones = explode("\n",$container_entry);
|
||||
$cust_timezones_ct = count($cust_timezones);
|
||||
if ($DB) {echo "DF-Debug 1: $cust_timezones_ct|$dispo_filter_enabled|$container_entry|\n";}
|
||||
$tzl=0;
|
||||
while ($cust_timezones_ct >= $tzl)
|
||||
{
|
||||
$cust_timezome_line = explode(",",$cust_timezones[$tzl]);
|
||||
$line_country = $cust_timezome_line[0];
|
||||
$line_zone = $cust_timezome_line[1];
|
||||
$line_dst = $cust_timezome_line[2];
|
||||
$line_name = preg_replace('/[^-, _0-9a-zA-Z]/','',$cust_timezome_line[3]);
|
||||
$stmt = "SELECT php_tz from vicidial_phone_codes where country='$line_country' and DST='$line_dst' and tz_code='$line_zone' limit 1;";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$VPC_ct = mysqli_num_rows($rslt);
|
||||
if ($VPC_ct > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$line_php_tz = $row[0];
|
||||
$cust_timezones_enabled++;
|
||||
|
||||
date_default_timezone_set($line_php_tz);
|
||||
$TEMP_gmt = date("Z");
|
||||
$TEMP_gmt = ($TEMP_gmt / 3600);
|
||||
$TEMP_gmt_diff = ($SERVER_GMT - $TEMP_gmt);
|
||||
$TEMP_datetime = date("Y-m-d H:i:s");
|
||||
|
||||
$cust_timezones_HTML .= "<tr bgcolor=white><td align=\"right\"><font color=\"#000066\"><b><font face=\"Arial, Helvetica, sans-serif\" size=\"2\"><a href=\"#\" onclick=\"SBC_timezone_choose('$TEMP_gmt_diff','$cust_timezones[$tzl]','$line_name')\">$line_name</a>: </font></td><td align=\"left\"><font size=2 face=\"Arial,Helvetica\"> $TEMP_datetime ($TEMP_gmt_diff "._QXZ("hours difference").")</font></td></tr>\n";
|
||||
}
|
||||
else
|
||||
{if ($DB) {echo "NO MATCH FOUND: country='$line_country', DST='$line_dst', tz_code='$line_zone'\n";}}
|
||||
|
||||
$tzl++;
|
||||
}
|
||||
date_default_timezone_set($orig_zone);
|
||||
}
|
||||
}
|
||||
$cust_timezones_HTML .= "</table></td></tr></table>";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "TIMEZONES NOT AVAILABLE\n";
|
||||
}
|
||||
|
||||
if ($cust_timezones_enabled > 0)
|
||||
{
|
||||
echo "$cust_timezones_HTML\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "TIMEZONES NOT AVAILABLE\n";
|
||||
}
|
||||
$stage .= "|cust_timezones_enabled";
|
||||
}
|
||||
|
||||
|
||||
################################################################################
|
||||
### AGENTSview - List statuses of other agents in sidebar or xfer frame
|
||||
################################################################################
|
||||
@@ -16516,7 +16660,7 @@ if ($ACTION == 'LEADINFOview')
|
||||
$callback_id = preg_replace('/\D/','',$callback_id);
|
||||
if (strlen($callback_id) > 0)
|
||||
{
|
||||
$stmt="SELECT status,entry_time,callback_time,modify_date,user,recipient,comments,lead_status from vicidial_callbacks where lead_id='$lead_id' and callback_id='$callback_id' limit 1;";
|
||||
$stmt="SELECT status,entry_time,callback_time,modify_date,user,recipient,comments,lead_status,customer_timezone,customer_timezone_diff,customer_time from vicidial_callbacks where lead_id='$lead_id' and callback_id='$callback_id' limit 1;";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00397',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$cb_to_print = mysqli_num_rows($rslt);
|
||||
@@ -16529,6 +16673,12 @@ if ($ACTION == 'LEADINFOview')
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Lead Status:")." </td><td ALIGN=left><font class='sb_text'>$row[7]</td></tr>";
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Entry Time:")." </td><td ALIGN=left><font class='sb_text'>$row[1]</td></tr>";
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Trigger Time:")." </td><td ALIGN=left><font class='sb_text'>$row[2]</td></tr>";
|
||||
if ( (strlen($row[8]) > 8) and (strlen($row[9]) > 0) )
|
||||
{
|
||||
$temp_timezone = preg_replace("/.*,/",'',$row[8]);
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Customer Timezone:")." </td><td ALIGN=left><font class='sb_text'>$temp_timezone</td></tr>";
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Customer Time:")." </td><td ALIGN=left><font class='sb_text'>$row[10]</td></tr>";
|
||||
}
|
||||
echo "<tr bgcolor=white><td ALIGN=right><font class='sb_text'>"._QXZ("Callback Comments:")." </td><td ALIGN=left><font class='sb_text'>$row[6]</td></tr>";
|
||||
echo "</TABLE>";
|
||||
echo "<BR>";
|
||||
@@ -17296,7 +17446,7 @@ if ($ACTION == 'CalLBacKLisT')
|
||||
if ($agentonly_callback_campaign_lock > 0)
|
||||
{$campaignCBsql = "and campaign_id='$campaign'";}
|
||||
|
||||
$stmt = "SELECT callback_id,lead_id,campaign_id,status,entry_time,callback_time,comments from vicidial_callbacks where recipient='USERONLY' and user='$user' $campaignCBsql $campaignCBhoursSQL $campaignCBdisplaydaysSQL and status NOT IN('INACTIVE','DEAD') order by callback_time;";
|
||||
$stmt = "SELECT callback_id,lead_id,campaign_id,status,entry_time,callback_time,comments,customer_timezone,customer_time,customer_timezone_diff from vicidial_callbacks where recipient='USERONLY' and user='$user' $campaignCBsql $campaignCBhoursSQL $campaignCBdisplaydaysSQL and status NOT IN('INACTIVE','DEAD') order by callback_time;";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00178',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
@@ -17306,13 +17456,16 @@ if ($ACTION == 'CalLBacKLisT')
|
||||
while ($callbacks_count>$loop_count)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$callback_id[$loop_count] = $row[0];
|
||||
$lead_id[$loop_count] = $row[1];
|
||||
$campaign_id[$loop_count] = $row[2];
|
||||
$status[$loop_count] = $row[3];
|
||||
$entry_time[$loop_count] = $row[4];
|
||||
$callback_time[$loop_count] = $row[5];
|
||||
$comments[$loop_count] = $row[6];
|
||||
$callback_id[$loop_count] = $row[0];
|
||||
$lead_id[$loop_count] = $row[1];
|
||||
$campaign_id[$loop_count] = $row[2];
|
||||
$status[$loop_count] = $row[3];
|
||||
$entry_time[$loop_count] = $row[4];
|
||||
$callback_time[$loop_count] = $row[5];
|
||||
$comments[$loop_count] = $row[6];
|
||||
$customer_timezone[$loop_count] = preg_replace("/.*,/",'',$row[7]);
|
||||
$customer_time[$loop_count] = $row[8];
|
||||
$customer_timezone_diff[$loop_count] = $row[9];
|
||||
$loop_count++;
|
||||
}
|
||||
$loop_count=0;
|
||||
@@ -17368,7 +17521,12 @@ if ($ACTION == 'CalLBacKLisT')
|
||||
$PHONEdialable = dialable_gmt($DB,$link,$local_call_time,$row[3],$row[4]);
|
||||
}
|
||||
}
|
||||
$CBoutput = "$row[0]-!T-$row[1]-!T-$row[2]-!T-$callback_id[$loop_count]-!T-$lead_id[$loop_count]-!T-$campaign_id[$loop_count]-!T-"._QXZ("$status[$loop_count]")."-!T-$entry_time[$loop_count]-!T-$callback_time[$loop_count]-!T-$comments[$loop_count]-!T-$PHONEdialable-!T-$alt_phone";
|
||||
$customer_time_CB_output = '-!T--!T-';
|
||||
if ( (strlen($customer_timezone[$loop_count]) > 0) and (strlen($customer_timezone_diff[$loop_count]) > 0) and ($customer_timezone_diff[$loop_count] <> 0) )
|
||||
{
|
||||
$customer_time_CB_output = "-!T-$customer_timezone[$loop_count]-!T-$customer_time[$loop_count]";
|
||||
}
|
||||
$CBoutput = "$row[0]-!T-$row[1]-!T-$row[2]-!T-$callback_id[$loop_count]-!T-$lead_id[$loop_count]-!T-$campaign_id[$loop_count]-!T-"._QXZ("$status[$loop_count]")."-!T-$entry_time[$loop_count]-!T-$callback_time[$loop_count]-!T-$comments[$loop_count]-!T-$PHONEdialable-!T-$alt_phone$customer_time_CB_output";
|
||||
echo "$CBoutput\n";
|
||||
$loop_count++;
|
||||
}
|
||||
|
||||
@@ -601,10 +601,11 @@
|
||||
# 180727-2044 - Small fix for pause code issue
|
||||
# 180807-1703 - Added agent_logout_link credentials system setting
|
||||
# 180809-1649 - Added scheduled_callbacks_force_dial campaign feature
|
||||
# 180827-1224 - Added scheduled_callbacks_timezones_... features
|
||||
#
|
||||
|
||||
$version = '2.14-570c';
|
||||
$build = '180809-1649';
|
||||
$version = '2.14-571c';
|
||||
$build = '180827-1224';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=87;
|
||||
$one_mysql_log=0;
|
||||
@@ -1882,7 +1883,7 @@ else
|
||||
$HKstatusnames = substr("$HKstatusnames", 0, -1);
|
||||
|
||||
##### grab the campaign settings
|
||||
$stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method,three_way_dial_prefix,web_form_target,vtiger_screen_login,agent_allow_group_alias,default_group_alias,quick_transfer_button,prepopulate_transfer_preset,view_calls_in_queue,view_calls_in_queue_launch,call_requeue_button,pause_after_each_call,no_hopper_dialing,agent_dial_owner_only,agent_display_dialable_leads,web_form_address_two,agent_select_territories,crm_popup_login,crm_login_address,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,use_custom_cid,scheduled_callbacks_alert,scheduled_callbacks_count,manual_dial_override,blind_monitor_warning,blind_monitor_message,blind_monitor_filename,timer_action_destination,enable_xfer_presets,hide_xfer_number_to_dial,manual_dial_prefix,customer_3way_hangup_logging,customer_3way_hangup_seconds,customer_3way_hangup_action,ivr_park_call,manual_preview_dial,api_manual_dial,manual_dial_call_time_check,my_callback_option,per_call_notes,agent_lead_search,agent_lead_search_method,queuemetrics_phone_environment,auto_pause_precall,auto_pause_precall_code,auto_resume_precall,manual_dial_cid,custom_3way_button_transfer,callback_days_limit,disable_dispo_screen,disable_dispo_status,screen_labels,status_display_fields,pllb_grouping,pllb_grouping_limit,in_group_dial,in_group_dial_select,pause_after_next_call,owner_populate,manual_dial_lead_id,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,max_inbound_calls,manual_dial_search_checkbox,hide_call_log_info,timer_alt_seconds,wrapup_bypass,wrapup_after_hotkey,callback_active_limit,callback_active_limit_override,comments_all_tabs,comments_dispo_screen,comments_callback_screen,qc_comment_history,show_previous_callback,clear_script,manual_dial_search_filter,web_form_address_three,manual_dial_override_field,status_display_ingroup,customer_gone_seconds,agent_display_fields,manual_dial_timeout,manual_auto_next,manual_auto_show,allow_required_fields,dead_to_dispo,agent_xfer_validation,ready_max_logout,callback_display_days,three_way_record_stop,hangup_xfer_record_start,max_inbound_calls_outcome,manual_auto_next_options,agent_screen_time_display,pause_max_dispo,script_top_dispo,routing_initiated_recordings,dead_trigger_seconds,dead_trigger_action,dead_trigger_repeat,dead_trigger_filename,scheduled_callbacks_force_dial,callback_hours_block,callback_display_days FROM vicidial_campaigns where campaign_id = '$VD_campaign';";
|
||||
$stmt="SELECT park_ext,park_file_name,web_form_address,allow_closers,auto_dial_level,dial_timeout,dial_prefix,campaign_cid,campaign_vdad_exten,campaign_rec_exten,campaign_recording,campaign_rec_filename,campaign_script,get_call_launch,am_message_exten,xferconf_a_dtmf,xferconf_a_number,xferconf_b_dtmf,xferconf_b_number,alt_number_dialing,scheduled_callbacks,wrapup_seconds,wrapup_message,closer_campaigns,use_internal_dnc,allcalls_delay,omit_phone_code,agent_pause_codes_active,no_hopper_leads_logins,campaign_allow_inbound,manual_dial_list_id,default_xfer_group,xfer_groups,disable_alter_custphone,display_queue_count,manual_dial_filter,agent_clipboard_copy,use_campaign_dnc,three_way_call_cid,dial_method,three_way_dial_prefix,web_form_target,vtiger_screen_login,agent_allow_group_alias,default_group_alias,quick_transfer_button,prepopulate_transfer_preset,view_calls_in_queue,view_calls_in_queue_launch,call_requeue_button,pause_after_each_call,no_hopper_dialing,agent_dial_owner_only,agent_display_dialable_leads,web_form_address_two,agent_select_territories,crm_popup_login,crm_login_address,timer_action,timer_action_message,timer_action_seconds,start_call_url,dispo_call_url,xferconf_c_number,xferconf_d_number,xferconf_e_number,use_custom_cid,scheduled_callbacks_alert,scheduled_callbacks_count,manual_dial_override,blind_monitor_warning,blind_monitor_message,blind_monitor_filename,timer_action_destination,enable_xfer_presets,hide_xfer_number_to_dial,manual_dial_prefix,customer_3way_hangup_logging,customer_3way_hangup_seconds,customer_3way_hangup_action,ivr_park_call,manual_preview_dial,api_manual_dial,manual_dial_call_time_check,my_callback_option,per_call_notes,agent_lead_search,agent_lead_search_method,queuemetrics_phone_environment,auto_pause_precall,auto_pause_precall_code,auto_resume_precall,manual_dial_cid,custom_3way_button_transfer,callback_days_limit,disable_dispo_screen,disable_dispo_status,screen_labels,status_display_fields,pllb_grouping,pllb_grouping_limit,in_group_dial,in_group_dial_select,pause_after_next_call,owner_populate,manual_dial_lead_id,dead_max,dispo_max,pause_max,dead_max_dispo,dispo_max_dispo,max_inbound_calls,manual_dial_search_checkbox,hide_call_log_info,timer_alt_seconds,wrapup_bypass,wrapup_after_hotkey,callback_active_limit,callback_active_limit_override,comments_all_tabs,comments_dispo_screen,comments_callback_screen,qc_comment_history,show_previous_callback,clear_script,manual_dial_search_filter,web_form_address_three,manual_dial_override_field,status_display_ingroup,customer_gone_seconds,agent_display_fields,manual_dial_timeout,manual_auto_next,manual_auto_show,allow_required_fields,dead_to_dispo,agent_xfer_validation,ready_max_logout,callback_display_days,three_way_record_stop,hangup_xfer_record_start,max_inbound_calls_outcome,manual_auto_next_options,agent_screen_time_display,pause_max_dispo,script_top_dispo,routing_initiated_recordings,dead_trigger_seconds,dead_trigger_action,dead_trigger_repeat,dead_trigger_filename,scheduled_callbacks_force_dial,callback_hours_block,callback_display_days,scheduled_callbacks_timezones_container FROM vicidial_campaigns where campaign_id = '$VD_campaign';";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01013',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
@@ -2041,6 +2042,11 @@ else
|
||||
$scheduled_callbacks_force_dial = $row[151];
|
||||
$callback_hours_block = $row[152];
|
||||
$callback_display_days = $row[153];
|
||||
$scheduled_callbacks_timezones_container = $row[154];
|
||||
|
||||
$scheduled_callbacks_timezones_enabled=0;
|
||||
if ( ($scheduled_callbacks_timezones_container != 'DISABLED') and (strlen($scheduled_callbacks_timezones_container) > 0) )
|
||||
{$scheduled_callbacks_timezones_enabled++;}
|
||||
|
||||
$MI_PAUSE = 0;
|
||||
if (preg_match("/MI_PAUSE/",$max_inbound_calls_outcome))
|
||||
@@ -4773,6 +4779,10 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
||||
var scheduled_callbacks_force_dial='<?php echo $scheduled_callbacks_force_dial ?>';
|
||||
var launch_scb_force_dial='<?php echo $launch_scb_force_dial ?>';
|
||||
var liveCBcounT=0;
|
||||
var scheduled_callbacks_timezones_container='<?php echo $scheduled_callbacks_timezones_container ?>';
|
||||
var scheduled_callbacks_timezones_enabled='<?php echo $scheduled_callbacks_timezones_enabled ?>';
|
||||
var callback_timezone='';
|
||||
var callback_gmt_offset='';
|
||||
var DiaLControl_auto_HTML = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADready','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_paused.gif") ?>\" border=\"0\" alt=\"You are paused\" /></a>";
|
||||
var DiaLControl_auto_HTML_ready = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADpause','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_active.gif") ?>\" border=\"0\" alt=\"You are active\" /></a>";
|
||||
var DiaLControl_auto_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif") ?>\" border=\"0\" alt=\"pause button disabled\" />";
|
||||
@@ -5941,6 +5951,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
CallBackLeadStatus = APIcbSTATUS;
|
||||
CallBackCommenTs = APIcbCOMMENTS;
|
||||
hideDiv('CallBackSelectBox');
|
||||
hideDiv('SBC_timezone_span');
|
||||
document.vicidial_form.DispoSelection.value = 'CBHOLD';
|
||||
}
|
||||
else
|
||||
@@ -7402,7 +7413,14 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
var CB_comments = call_array[9];
|
||||
var CB_dialable = call_array[10];
|
||||
var CB_alt_phone = call_array[11];
|
||||
var CB_cust_timezone = call_array[12];
|
||||
var CB_cust_time = call_array[13];
|
||||
var CB_comments_ten = CB_comments;
|
||||
var CB_cust_content='';
|
||||
if (CB_cust_timezone.length > 0)
|
||||
{
|
||||
CB_cust_content = "<tr><td></td><td align=\"left\" colspan=\"9\" bgcolor=\"" + row_color + "\"><font class=\"log_text\"> <?php echo _QXZ("Customer Time"); ?>: " + CB_cust_time + " <?php echo _QXZ("Customer Timezone"); ?>: " + CB_cust_timezone + "</td></tr>";
|
||||
}
|
||||
if (CB_comments_ten.length > 10)
|
||||
{
|
||||
CB_comments_ten = CB_comments_ten.substr(0,10);
|
||||
@@ -7413,11 +7431,11 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
var alt_link = "<a href=\"#\" onclick=\"new_callback_call('" + CB_id + "','" + CB_lead_id + "','ALT');return false;\"><?php echo _QXZ("ALT"); ?></a> ";
|
||||
if (CB_alt_phone.length < 3)
|
||||
{alt_link = "<?php echo _QXZ("ALT"); ?> ";}
|
||||
CB_HTML = CB_HTML + "<tr bgcolor=\"" + row_color + "\"><td><font class=\"log_text\">" + loop_ct + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_callback_time + "</td><td align=\"right\"><font class=\"log_text\">" + CB_phone + "</td><td align=\"right\"><font class=\"log_text\">" + CB_comments_ten + " - <a href=\"#\" onclick=\"VieWLeaDInfO('" + CB_lead_id + "','" + CB_id + "');return false;\"><?php echo _QXZ("INFO"); ?></a></font></td><td align=\"right\"><font class=\"log_text\">" + CB_name + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_status + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_campaign + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_lastcall_time + " </font></td><td align=\"right\"><font class=\"log_text\"><a href=\"#\" onclick=\"new_callback_call('" + CB_id + "','" + CB_lead_id + "','MAIN');return false;\"><?php echo _QXZ("DIAL"); ?></a> </font></td><td align=\"right\"><font class=\"log_text\">" + alt_link + "</font></td></tr>";
|
||||
CB_HTML = CB_HTML + "<tr bgcolor=\"" + row_color + "\"><td><font class=\"log_text\">" + loop_ct + "</font></td><td align=\"left\"><font class=\"log_text\">" + CB_callback_time + "</td><td align=\"right\"><font class=\"log_text\">" + CB_phone + "</td><td align=\"right\"><font class=\"log_text\">" + CB_comments_ten + " - <a href=\"#\" onclick=\"VieWLeaDInfO('" + CB_lead_id + "','" + CB_id + "');return false;\"><?php echo _QXZ("INFO"); ?></a></font></td><td align=\"right\"><font class=\"log_text\">" + CB_name + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_status + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_campaign + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_lastcall_time + " </font></td><td align=\"right\"><font class=\"log_text\"><a href=\"#\" onclick=\"new_callback_call('" + CB_id + "','" + CB_lead_id + "','MAIN');return false;\"><?php echo _QXZ("DIAL"); ?></a> </font></td><td align=\"right\"><font class=\"log_text\">" + alt_link + "</font></td></tr>" + CB_cust_content;
|
||||
}
|
||||
else
|
||||
{
|
||||
CB_HTML = CB_HTML + "<tr bgcolor=\"" + row_color + "\"><td><font class=\"log_text\">" + loop_ct + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_callback_time + "</td><td align=\"right\"><font class=\"log_text\">" + CB_phone + "</td><td align=\"right\"><font class=\"log_text\">" + CB_comments_ten + " - INFO</font></td><td align=\"right\"><font class=\"log_text\">" + CB_name + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_status + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_campaign + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_lastcall_time + " </font></td><td align=\"right\" colspan=2><font class=\"log_text\"><?php echo _QXZ("NON-DIALABLE"); ?> </font></td></tr>";
|
||||
CB_HTML = CB_HTML + "<tr bgcolor=\"" + row_color + "\"><td><font class=\"log_text\">" + loop_ct + "</font></td><td align=\"left\"><font class=\"log_text\">" + CB_callback_time + "</td><td align=\"right\"><font class=\"log_text\">" + CB_phone + "</td><td align=\"right\"><font class=\"log_text\">" + CB_comments_ten + " - INFO</font></td><td align=\"right\"><font class=\"log_text\">" + CB_name + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_status + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_campaign + "</font></td><td align=\"right\"><font class=\"log_text\">" + CB_lastcall_time + " </font></td><td align=\"right\" colspan=2><font class=\"log_text\"><?php echo _QXZ("NON-DIALABLE"); ?> </font></td></tr> + CB_cust_content";
|
||||
}
|
||||
}
|
||||
CB_HTML = CB_HTML + "</table>";
|
||||
@@ -13520,6 +13538,50 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
document.getElementById("CBCommentsContent").innerHTML = "<input type=\"hidden\" name=\"cbcomment_comments\" id=\"cbcomment_comments\" value=\"" + document.vicidial_form.dispo_comments.value + "\" />";
|
||||
}
|
||||
|
||||
// BEGIN customer timezones code
|
||||
if (scheduled_callbacks_timezones_enabled > 0)
|
||||
{
|
||||
var xmlhttp=false;
|
||||
/*@cc_on @*/
|
||||
/*@if (@_jscript_version >= 5)
|
||||
// JScript gives us Conditional compilation, we can cope with old IE versions.
|
||||
// and security blocked creation of the objects.
|
||||
try {
|
||||
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
|
||||
} catch (e) {
|
||||
try {
|
||||
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
|
||||
} catch (E) {
|
||||
xmlhttp = false;
|
||||
}
|
||||
}
|
||||
@end @*/
|
||||
if (!xmlhttp && typeof XMLHttpRequest!='undefined')
|
||||
{
|
||||
xmlhttp = new XMLHttpRequest();
|
||||
}
|
||||
if (xmlhttp)
|
||||
{
|
||||
SCB_timezone_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&user=" + user + "&pass=" + pass + "&ACTION=SBC_timezone_build&format=text&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&stage=" + scheduled_callbacks_timezones_container;
|
||||
xmlhttp.open('POST', 'vdc_db_query.php');
|
||||
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
||||
xmlhttp.send(SCB_timezone_query);
|
||||
xmlhttp.onreadystatechange = function()
|
||||
{
|
||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
||||
{
|
||||
document.getElementById("SBC_timezone_span").innerHTML = xmlhttp.responseText;
|
||||
// showDiv('SBC_timezone_span');
|
||||
|
||||
// alert(SCB_timezone_query);
|
||||
// alert(xmlhttp.responseText + "\n|" + check_PC_array[1] + "\n|" + check_PC_array[2] + "|" + agent_log_id + "|" + pause_code_counter);
|
||||
}
|
||||
}
|
||||
delete xmlhttp;
|
||||
}
|
||||
}
|
||||
// END customer timezones code
|
||||
|
||||
showDiv('CallBackSelectBox');
|
||||
|
||||
agent_events('callback_select_open', '', aec); aec++;
|
||||
@@ -13547,7 +13609,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
}
|
||||
if (xmlhttp)
|
||||
{
|
||||
DSupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=updateDISPO&format=text&user=" + user + "&pass=" + pass + "&orig_pass=" + orig_pass + "&dispo_choice=" + DispoChoice + "&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&auto_dial_level=" + auto_dial_level + "&agent_log_id=" + agent_log_id + "&CallBackDatETimE=" + CallBackDatETimE + "&list_id=" + document.vicidial_form.list_id.value + "&recipient=" + CallBackrecipient + "&use_internal_dnc=" + use_internal_dnc + "&use_campaign_dnc=" + use_campaign_dnc + "&MDnextCID=" + LasTCID + "&stage=" + group + "&vtiger_callback_id=" + vtiger_callback_id + "&phone_number=" + document.vicidial_form.phone_number.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&dial_method=" + dial_method + "&uniqueid=" + document.vicidial_form.uniqueid.value + "&CallBackLeadStatus=" + CallBackLeadStatus + "&comments=" + encodeURIComponent(CallBackCommenTs) + "&custom_field_names=" + custom_field_names + "&call_notes=" + encodeURIComponent(document.vicidial_form.call_notes_dispo.value) + "&dispo_comments=" + encodeURIComponent(document.vicidial_form.dispo_comments.value) + "&cbcomment_comments=" + encodeURIComponent(document.vicidial_form.cbcomment_comments.value) + "&qm_dispo_code=" + DispoQMcsCODE + "&email_enabled=" + email_enabled + "&recording_id=" + VDDCU_recording_id + "&recording_filename=" + VDDCU_recording_filename + "&called_count=" + document.vicidial_form.called_count.value + "&parked_hangup=" + parked_hangup + "&phone_login=" + phone_login + "&agent_email=" + LOGemail + "&conf_exten=" + session_id + "&camp_script=" + campaign_script + '' + "&in_script=" + CalL_ScripT_id + "&customer_server_ip=" + lastcustserverip + "&exten=" + extension + "&original_phone_login=" + original_phone_login + "&phone_pass=" + phone_pass;
|
||||
DSupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=updateDISPO&format=text&user=" + user + "&pass=" + pass + "&orig_pass=" + orig_pass + "&dispo_choice=" + DispoChoice + "&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&auto_dial_level=" + auto_dial_level + "&agent_log_id=" + agent_log_id + "&CallBackDatETimE=" + CallBackDatETimE + "&list_id=" + document.vicidial_form.list_id.value + "&recipient=" + CallBackrecipient + "&use_internal_dnc=" + use_internal_dnc + "&use_campaign_dnc=" + use_campaign_dnc + "&MDnextCID=" + LasTCID + "&stage=" + group + "&vtiger_callback_id=" + vtiger_callback_id + "&phone_number=" + document.vicidial_form.phone_number.value + "&phone_code=" + document.vicidial_form.phone_code.value + "&dial_method=" + dial_method + "&uniqueid=" + document.vicidial_form.uniqueid.value + "&CallBackLeadStatus=" + CallBackLeadStatus + "&comments=" + encodeURIComponent(CallBackCommenTs) + "&custom_field_names=" + custom_field_names + "&call_notes=" + encodeURIComponent(document.vicidial_form.call_notes_dispo.value) + "&dispo_comments=" + encodeURIComponent(document.vicidial_form.dispo_comments.value) + "&cbcomment_comments=" + encodeURIComponent(document.vicidial_form.cbcomment_comments.value) + "&qm_dispo_code=" + DispoQMcsCODE + "&email_enabled=" + email_enabled + "&recording_id=" + VDDCU_recording_id + "&recording_filename=" + VDDCU_recording_filename + "&called_count=" + document.vicidial_form.called_count.value + "&parked_hangup=" + parked_hangup + "&phone_login=" + phone_login + "&agent_email=" + LOGemail + "&conf_exten=" + session_id + "&camp_script=" + campaign_script + '' + "&in_script=" + CalL_ScripT_id + "&customer_server_ip=" + lastcustserverip + "&exten=" + extension + "&original_phone_login=" + original_phone_login + "&phone_pass=" + phone_pass + "&callback_gmt_offset=" + callback_gmt_offset + "&callback_timezone=" + callback_timezone;
|
||||
xmlhttp.open('POST', 'vdc_db_query.php');
|
||||
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
||||
xmlhttp.send(DSupdate_query);
|
||||
@@ -13702,10 +13764,13 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
active_ingroup_dial='';
|
||||
CalL_ScripT_id='';
|
||||
CalL_ScripT_color='';
|
||||
callback_gmt_offset='';
|
||||
callback_timezone='';
|
||||
document.getElementById("SBC_timezone_span").innerHTML = '<?php echo _QXZ("Loading"); ?>...';
|
||||
document.getElementById("CallBackTimezone").innerHTML = '<?php echo _QXZ("server time") ?>';
|
||||
nocall_dial_flag='DISABLED';
|
||||
document.vicidial_form.CallBackDatESelectioN.value = '';
|
||||
document.vicidial_form.CallBackCommenTsField.value = '';
|
||||
|
||||
document.vicidial_form.search_phone_number.value='';
|
||||
document.vicidial_form.search_lead_id.value='';
|
||||
document.vicidial_form.search_vendor_lead_code.value='';
|
||||
@@ -13893,6 +13958,19 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
}
|
||||
|
||||
|
||||
// ################################################################################
|
||||
// Agent has selected a timezone
|
||||
function SBC_timezone_choose(temp_offset,temp_timezone,temp_timezone_name)
|
||||
{
|
||||
callback_gmt_offset = temp_offset;
|
||||
callback_timezone = temp_timezone;
|
||||
|
||||
document.getElementById("CallBackTimezone").innerHTML = temp_timezone_name;
|
||||
|
||||
hideDiv('SBC_timezone_span');
|
||||
}
|
||||
|
||||
|
||||
// ################################################################################
|
||||
// Send AJAX request to trigger the Dead Trigger URL
|
||||
function dead_trigger_url_send()
|
||||
@@ -17356,6 +17434,7 @@ function phone_number_format(formatphone) {
|
||||
|
||||
document.vicidial_form.DispoSelection.value = 'CBHOLD';
|
||||
hideDiv('CallBackSelectBox');
|
||||
hideDiv('SBC_timezone_span');
|
||||
DispoSelect_submit();
|
||||
}
|
||||
}
|
||||
@@ -17541,6 +17620,7 @@ function phone_number_format(formatphone) {
|
||||
hideDiv('TransferMain');
|
||||
hideDiv('WelcomeBoxA');
|
||||
hideDiv('CallBackSelectBox');
|
||||
hideDiv('SBC_timezone_span');
|
||||
hideDiv('DispoButtonHideA');
|
||||
hideDiv('DispoButtonHideB');
|
||||
hideDiv('DispoButtonHideC');
|
||||
@@ -18979,8 +19059,8 @@ function phone_number_format(formatphone) {
|
||||
<style type="text/css">
|
||||
<!--
|
||||
div.scroll_calllog {height: <?php echo $CQheight ?>px; width: <?php echo $MNwidth ?>px; overflow: scroll;}
|
||||
div.scroll_callback {height: 300px; width: <?php echo $MNwidth ?>px; overflow: scroll;}
|
||||
div.scroll_callback_auto {height: 300px; width: <?php echo $MNwidth ?>px; overflow: auto;}
|
||||
div.scroll_callback {height: 400px; width: <?php echo $MNwidth ?>px; overflow: scroll;}
|
||||
div.scroll_callback_auto {height: 400px; width: <?php echo $MNwidth ?>px; overflow: auto;}
|
||||
div.scroll_script {height: <?php echo $SSheight ?>px; width: <?php echo $SDwidth ?>px; background: transparent; overflow: auto; font-size: 12px; font-family: sans-serif;}
|
||||
div.noscroll_script {height: <?php echo $SSheight ?>px; width: <?php echo $SDwidth ?>px; background: #FFF5EC; overflow: hidden; font-size: 12px; font-family: sans-serif;}
|
||||
-->
|
||||
@@ -20109,8 +20189,19 @@ if ($agent_display_dialable_leads > 0)
|
||||
<?php
|
||||
}
|
||||
?>
|
||||
<br />
|
||||
|
||||
<?php
|
||||
if ($scheduled_callbacks_timezones_enabled > 0)
|
||||
{
|
||||
echo "<a href=\"#\" onclick=\"showDiv('SBC_timezone_span');return false;\">"._QXZ("Customer Timezone")."</a>: ";
|
||||
echo "<font class=\"sh_text\"><span id=\"CallBackTimezone\">"._QXZ("server time")."</span> </font>\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
echo "<span id=\"CallBackTimezone\"><font class=\"sh_text\"></span> \n";
|
||||
}
|
||||
echo "<br />";
|
||||
|
||||
if ($agentonly_callbacks)
|
||||
{echo "<input type=\"checkbox\" name=\"CallBackOnlyMe\" id=\"CallBackOnlyMe\" size=\"1\" value=\"0\" /> "._QXZ("MY CALLBACK ONLY")." <br />";}
|
||||
|
||||
@@ -20128,6 +20219,8 @@ if ($agent_display_dialable_leads > 0)
|
||||
</td></tr></table>
|
||||
</span>
|
||||
|
||||
<span style="position:absolute;left:560px;top:20px;z-index:<?php $zi++; echo $zi ?>;" id="SBC_timezone_span"><?php echo _QXZ("Loading"); ?>...</span>
|
||||
|
||||
<?php //AUDIT COMMENTS ADDED BY POUNDTEAM // ?>
|
||||
<span style="position:absolute;left:5px;top:350px;z-index:<?php $zi++; echo $zi ?>;" id="ViewCommentsBox">
|
||||
<TABLE border=0 bgcolor="#FFDD99" width=<?php echo $HCwidth; ?>px height='<?php echo $BROWSER_HEIGHT-380; ?>px' cellpadding=3 cellspacing=4>
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
# version: 201808190012
|
||||
# version: 201808252106
|
||||
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 8 digits in length, Must be at least 2 characters in length.</QXZ>
|
||||
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters.</QXZ>
|
||||
users-force_change_password Force Change Password <QXZ>If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage. Default is N.</QXZ>
|
||||
@@ -260,6 +260,7 @@ campaigns-show_previous_callback Show Previous Callback <QXZ>This option if enab
|
||||
campaigns-callback_useronly_move_minutes Scheduled Callbacks Useronly Move Minutes <QXZ>This option if set to a number greater than 0, will change all USERONLY Scheduled Callbacks that are X minutes after their callback time to ANYONE callbacks. This process runs every minute. Default is 0 for disabled.</QXZ>
|
||||
campaigns-next_dial_my_callbacks Next-Dial My Callbacks <QXZ>This option only works for MANUAL and INBOUND_MAN dial methods, and also only if No Hopper Dialing is enabled. This feature will look for Scheduled Callbacks that have triggered for the agent and dial them next when the agent clicks on the Dial Next Number button on their agent screen. Default is DISABLED.</QXZ>
|
||||
campaigns-scheduled_callbacks_force_dial Scheduled Callbacks Force Dial <QXZ>This feature will force an agent to a paused state and block out their screen with the next triggered USERONLY scheduled callback to be called. The agent's only option will be to dial this callback, although they are able to look at lead info before they do that. If there are multiple triggered scheduled callbacks for the agent, they all must be called before the agent can move on to handling other items. This feature will not pay attention to the Call Time that is set for the campaign, so these calls may be dialed outside of the set call time. The agent must be able to place manual dial calls for this feature to work. Default is N for disabled.</QXZ>
|
||||
campaigns-scheduled_callbacks_timezones_container Scheduled Callbacks Local Timezones <QXZ>This feature allows agents to set scheduled callbacks with a customer local time and timezone. If set to something other than ---DISABLED---, the selected TIMEZONE_LIST type of Settings Container will be used to display a list of time zones in the Scheduled Callback panel of the agent screen that would be used to set the scheduled callback by one of those local times. A TIMEZONE_LIST type of Settings Container would need to be created that will contain one timezone per line with each line containing the 3-letter Country Code, the TimeZone Code, a Y or N for whether Daylight Saving Time is observed in that zone, and a short description of the time zone as you want it to appear to the agents. For example, for the Eastern United States time zone, you could put -USA,EST,Y,Eastern Time Zone-, without the dashes. To see a list of the available time zone combinations on your system, go to the Admin, System Settings page and click on the -Phone Codes- link on that page. Default is DISABLED, and the scheduled callbacks screen will use the agent server time to set callbacks.</QXZ>
|
||||
campaigns-scheduled_callbacks_auto_reschedule Scheduled Callbacks Auto Reschedule <QXZ>This feature only affects ANYONE scheduled callbacks. If DAY_1 is used, it will automatically reschedule lead lead to be called back on the next calling day at the same time they were called if the resulting disposition of the call was not a Human Answer -Y- status. The next calling day is determined by the Call Time that is set for the campaign. In the case of DAY_1, if tomorrow is not an allowed calling day, the system will look at the next day and then the next day until it finds the next allowable calling day to set the ANYONE scheduled callback for. There are up to 6 DAY options, then there are up to 3 WEEK options, then there are up to 6 MONTH options. Default is DISABLED.</QXZ>
|
||||
campaigns-wrapup_seconds Wrap Up Seconds <QXZ>The number of seconds to force an agent to wait before allowing them to receive or dial another call. The timer begins as soon as an agent hangs up on their customer - or in the case of alternate number dialing when the agent finishes the lead - Default is 0 seconds. If the timer runs out before the agent has dispositioned the call, the agent still will NOT move on to the next call until they select a disposition.</QXZ>
|
||||
campaigns-wrapup_message Wrap Up Message <QXZ>This is a campaign-specific message to be displayed on the wrap up screen if wrap up seconds is set. You can use a Script in the system if you use the script id with WUSCRIPT in front of it, so if you wanted to use a script called agent_script, then you would put WUSCRIPTagent_script in this field.</QXZ>
|
||||
|
||||
Reference in New Issue
Block a user