added ability for agents to change in-groups in CLOSER-type campaigns without logging out

updated docs
started work on adding a QC feature to the admin.php script

git-svn-id: svn://192.168.202.10@770 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2008-01-17 09:38:18 +00:00
parent 17470a4f89
commit 0e7eb94a6f
17 changed files with 686 additions and 42 deletions
+3 -4
View File
@@ -1,6 +1,6 @@
#!/usr/bin/perl
#
# agi-VDAD_ALL_inbound.agi version 2.0.4 *DBI-version*
# agi-VDAD_ALL_inbound.agi version 2.0.5 *DBI-version*
#
# runs when a call comes in from an inbound call. This script will
# send the calls out to the closers that are logged in.
@@ -40,7 +40,7 @@
#exten => 1234,2,AGI(agi-VDAD_ALL_inbound.agi,CID-----LB-----INB-----7274515134-----Closer-----park----------999-----1-----OUTB)
#exten => 1234,3,Hangup
#
# Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
# Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
# changes:
# 70828-0924 - First Build
@@ -1408,7 +1408,7 @@ sub trigger_transfer_process
# $BEGIN='BEGIN';
#
# $CLI = "/usr/bin/date >> $PRSTESTfile &";
# $CLI = "/root/phone.pl $insert_lead_id$DS$insert_close_id$DS$CLInow_date$DS$VDADextension$DS$phone_number$DS$DS$BEGIN$DS >> $PRSTESTfile &";
# $CLI = "/root/phone.pl $insert_lead_id$DS$insert_close_id$DS$CLInow_date$DS$VDADuser$DS$phone_number$DS$DS$BEGIN$DS >> $PRSTESTfile &";
#
# `$CLI`;
#
@@ -1420,5 +1420,4 @@ sub trigger_transfer_process
# print Pout "$now_date|$VDADconf_exten|$VDADuser|$VDADextension|$insert_lead_id|$phone_number|$insert_close_id|$channel_group|$drop_timer|$CLI|\n";
# close(Pout);
# }
#
}
@@ -0,0 +1,111 @@
#!/usr/bin/perl
#
# AST_DB_lead_status_change.pl version 2.0.5 *DBI-version*
#
# DESCRIPTION:
# OPTIONAL!!! CUSTOMIZE THIS SCRIPT FIRST!!!
# - changes status of leads as crontab script
#
# Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
# CHANGES
# 80114-1150 - first build
#
### begin parsing run-time options ###
if (length($ARGV[0])>1)
{
$i=0;
while ($#ARGV >= $i)
{
$args = "$args $ARGV[$i]";
$i++;
}
if ($args =~ /--help/i)
{
print "allowed run time options:\n [-t] = test\n [-debug] = verbose debug messages\n\n";
}
else
{
if ($args =~ /-debug/i)
{
$DB=1; # Debug flag, set to 0 for no debug messages, On an active system this will generate hundreds of lines of output per minute
}
if ($args =~ /-t/i)
{
$TEST=1;
$T=1;
}
}
}
else
{
print "no command line options set\n";
$loop_delay = '2500';
$DB=1;
}
### end parsing run-time options ###
# default path to astguiclient configuration file:
$PATHconf = '/etc/astguiclient.conf';
open(conf, "$PATHconf") || die "can't open $PATHconf: $!\n";
@conf = <conf>;
close(conf);
$i=0;
foreach(@conf)
{
$line = $conf[$i];
$line =~ s/ |>|\n|\r|\t|\#.*|;.*//gi;
if ( ($line =~ /^PATHhome/) && ($CLIhome < 1) )
{$PATHhome = $line; $PATHhome =~ s/.*=//gi;}
if ( ($line =~ /^PATHlogs/) && ($CLIlogs < 1) )
{$PATHlogs = $line; $PATHlogs =~ s/.*=//gi;}
if ( ($line =~ /^PATHagi/) && ($CLIagi < 1) )
{$PATHagi = $line; $PATHagi =~ s/.*=//gi;}
if ( ($line =~ /^PATHweb/) && ($CLIweb < 1) )
{$PATHweb = $line; $PATHweb =~ s/.*=//gi;}
if ( ($line =~ /^PATHsounds/) && ($CLIsounds < 1) )
{$PATHsounds = $line; $PATHsounds =~ s/.*=//gi;}
if ( ($line =~ /^PATHmonitor/) && ($CLImonitor < 1) )
{$PATHmonitor = $line; $PATHmonitor =~ s/.*=//gi;}
if ( ($line =~ /^VARserver_ip/) && ($CLIserver_ip < 1) )
{$VARserver_ip = $line; $VARserver_ip =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_server/) && ($CLIDB_server < 1) )
{$VARDB_server = $line; $VARDB_server =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_database/) && ($CLIDB_database < 1) )
{$VARDB_database = $line; $VARDB_database =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_user/) && ($CLIDB_user < 1) )
{$VARDB_user = $line; $VARDB_user =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_pass/) && ($CLIDB_pass < 1) )
{$VARDB_pass = $line; $VARDB_pass =~ s/.*=//gi;}
if ( ($line =~ /^VARDB_port/) && ($CLIDB_port < 1) )
{$VARDB_port = $line; $VARDB_port =~ s/.*=//gi;}
$i++;
}
# Customized Variables
$server_ip = $VARserver_ip; # Asterisk server IP
if (!$VARDB_port) {$VARDB_port='3306';}
use DBI;
$dbhA = DBI->connect("DBI:mysql:$VARDB_database:$VARDB_server:$VARDB_port", "$VARDB_user", "$VARDB_pass")
or die "Couldn't connect to database: " . DBI->errstr;
##### change Pacific Mountain
$stmtA = "UPDATE vicidial_list set status='NEW' where status='NA' and called_count IN('1','2');";
if($DB){print STDERR "\n|$stmtA|\n";}
if (!$T) {
$affected_rows = $dbhA->do($stmtA);
if($DB){print STDERR "\n|$affected_rows records changed|\n";}
}
$dbhA->disconnect();
exit;
+8 -3
View File
@@ -91,7 +91,7 @@ cd ../asterisk-1.2.24
*OPTIONAL*(1.2.14 thru 1.2.24) rewrite of waitforsilence
wget http://www.eflo.net/files/app_waitforsilence.c
mv app_waitforsilence.c apps/app_waitforsilence.c
mv -f app_waitforsilence.c apps/app_waitforsilence.c
*OPTIONAL* shorter enter and leave sounds for meetme
wget http://www.eflo.net/files/enter.h
@@ -550,8 +550,13 @@ PHASE 5: ADDING STARTUP ENTRIES FOR ASTGUICLIENT/VICIDIAL SCRIPTS
- vi /etc/rc.d/rc.local
- add the following entries(here's what we used):
### Path to local asterisk-perl_0.08 module if needed
PERL5LIB="/usr/share/astguiclient/libs"; export PERL5LIB
# OPTIONAL enable ip_relay(for same-machine trunking and blind monitoring)
# /usr/share/astguiclient/ip_relay/relay_control start 2>/dev/null 1>&2
# Disable console blanking and powersaving
/usr/bin/setterm -blank
/usr/bin/setterm -powersave off
/usr/bin/setterm -powerdown
### start time server
/usr/local/bin/ntpdate -u 18.145.0.30
@@ -1,4 +1,4 @@
INOUND/CLOSER proces flow 2007-05-02
INBOUND/CLOSER process flow 2007-05-02
** THIS FULLY REDONE INBOUND-CLOSER PROSESS IS PLANNED FOR THE 2.0.4 RELEASE **
+1
View File
@@ -38,6 +38,7 @@ NOTE: at the bottom of this document are conf examples for a 3 server load balan
# 6 - FastAGI_log
# 7 - AST_VDauto_dial_FILL (only for multi-server, this must only be on one server)
(NOTE: the install.pl script now has an option to generate the following settings and print them out to the screen so that you do not have to manually build them. ./install.pl --build_multiserver_conf)
3. The two servers need to be registered to each other as IAX2 friends:
SERVER ONE(ASTtest1-10.10.10.15)
iax.conf:
+178
View File
@@ -0,0 +1,178 @@
QC(Quality Control) process flow 2008-01-03
** THIS QC FUNCTIONALITY PROSESS IS PLANNED FOR THE 2.0.5 RELEASE **
This will outline the process I have thought through for adding a Quality Assurance(QA) or Quality Control(QC) process to the VICIDIAL system. The objective is to add the following features to make VICIDIAL a more well-rounded product:
- ability to define which statuses/lists are to be able to be QCd per campaign
- ability to give agents permission to QC records for their allowable campaigns
- ability to log all access and changes to QCd records
- creation of some basic reports on QC activity
The QC agent will login to a new qc.php screen within the agc web directory. They will then have a screen very similar to the vicidial.php login screen(but in a different color) that will have a user/pass to fill in. Then when they login they will see a green screen similar to the vicidial.php inbound(CLOSER-type) screen that will show them their allowable qc in-groups and campaigns. The agent will then choose which in-groups and campaigns that they want to QC the records for and then they will submit and they will be logged-in to the QC system.
Upon login, they will be able to see the count of QC-able records and they can click on a link to bring up the next record to be QCd.
Each qc_user_level will have different permissions for the qc system:
1- modify nothing
2- modify nothing but status
3- modify everything
4- can check records of other QC agents
5- can view stats on qc system
6- can view finished and non-committed records and alter them
7- Manager level
The qc_stage is a status within QC that tells what is going on with the record:
NONE - record has never been QCd
LOCK_1 - a QC agent is reviewing the record
PASS - QC agent has passed the record
LOCK_2 - a QC agent is reviewing the record for possible finishing
FINISH - record is ready to be processed
COMMIT - QC record is committed to the system and cannot be modified by anyone
The Database Changes:
# This table contains the updated QC record
CREATE TABLE qc_vicidial_list (
qc_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
lead_id INT(9) UNSIGNED NOT NULL,
vicidial_log_id INT(9) UNSIGNED NOT NULL,
closecallid INT(9) UNSIGNED NOT NULL,
modify_date TIMESTAMP,
status VARCHAR(6),
qc_status VARCHAR(6),
qc_date DATETIME,
qc_length_in_sec SMALLINT(5) UNSIGNED default '0',
qc_verify_date DATETIME,
qc_verify_length_in_sec SMALLINT(5) UNSIGNED default '0',
qc_comments TEXT,
qc_stage VARCHAR(6),
qc_user VARCHAR(20),
qc_verify_user VARCHAR(20),
qc_code VARCHAR(8),
qc_changed ENUM('0','1') default '0',
user VARCHAR(20),
closer VARCHAR(20),
vendor_lead_code VARCHAR(20),
source_id VARCHAR(6),
list_id BIGINT(14) UNSIGNED,
phone_code VARCHAR(10),
phone_number VARCHAR(12),
title VARCHAR(4),
first_name VARCHAR(30),
middle_initial VARCHAR(1),
last_name VARCHAR(30),
address1 VARCHAR(100),
address2 VARCHAR(100),
address3 VARCHAR(100),
city VARCHAR(50),
state VARCHAR(2),
province VARCHAR(50),
postal_code VARCHAR(10),
country_code VARCHAR(3),
gender ENUM('M','F'),
date_of_birth DATE,
alt_phone VARCHAR(12),
email VARCHAR(70),
security_phrase VARCHAR(100),
comments VARCHAR(255),
index (phone_number),
index (lead_id),
index (status),
index (qc_stage)
);
# This table contains the original lead information before changes
CREATE TABLE qc_vicidial_list_original (
qc_id INT(9) UNSIGNED PRIMARY KEY NOT NULL,
modify_date TIMESTAMP,
status VARCHAR(6),
qc_date DATETIME,
qc_user VARCHAR(20),
qc_stage VARCHAR(6),
user VARCHAR(20),
closer VARCHAR(20),
vendor_lead_code VARCHAR(20),
source_id VARCHAR(6),
list_id BIGINT(14) UNSIGNED,
phone_code VARCHAR(10),
phone_number VARCHAR(12),
title VARCHAR(4),
first_name VARCHAR(30),
middle_initial VARCHAR(1),
last_name VARCHAR(30),
address1 VARCHAR(100),
address2 VARCHAR(100),
address3 VARCHAR(100),
city VARCHAR(50),
state VARCHAR(2),
province VARCHAR(50),
postal_code VARCHAR(10),
country_code VARCHAR(3),
gender ENUM('M','F'),
date_of_birth DATE,
alt_phone VARCHAR(12),
email VARCHAR(70),
security_phrase VARCHAR(100),
comments VARCHAR(255),
);
# This table contains the session information for qc_agents
CREATE TABLE qc_agent_sessions (
qc_session_id INT(9) UNSIGNED PRIMARY KEY NOT NULL,
user VARCHAR(20),
qc_user_level INT(2) default '0',
status ENUM('READY','QUEUE','INCALL','PAUSED','CLOSER') default 'PAUSED',
qc_id INT(9) UNSIGNED NOT NULL,
lead_id INT(9) UNSIGNED NOT NULL,
selected_inbound_groups TEXT,
selected_campaigns TEXT,
qc_records_today SMALLINT(5) UNSIGNED default '0',
login_time DATETIME,
last_action_time DATETIME,
index(user),
index (last_action_time)
);
# For ability to restrict statuses by user_level per campaign
CREATE TABLE qc_allowed_statuses (
status VARCHAR(6) PRIMARY KEY NOT NULL,
qc_user_level INT(2) default '0',
campaign_group_id VARCHAR(20)
);
# qc codes to be used for statistics
CREATE TABLE qc_codes (
code VARCHAR(8) PRIMARY KEY NOT NULL,
code_name VARCHAR(30)
);
# For the log table, some fields will need to be added to the vicidial_log table:
ALTER TABLE vicidial_log ADD qc_stage ENUM('NONE','LOCK_1','PASS','LOCK_2','FINISH',COMMIT') default 'NONE';
# For the closer log table, some fields will need to be added to the vicidial_closer_log table:
ALTER TABLE vicidial_closer_log ADD qc_stage ENUM('NONE','LOCK_1','PASS','LOCK_2','FINISH',COMMIT') default 'NONE';
# For the campaigns log table, some fields will need to be added to the vicidial_campaigns table:
ALTER TABLE vicidial_campaigns ADD qc_statuses TEXT;
ALTER TABLE vicidial_campaigns ADD qc_lists TEXT;
ALTER TABLE vicidial_campaigns ADD campaign_shift_start_time VARCHAR(4) default '0900';
ALTER TABLE vicidial_campaigns ADD campaign_shift_length VARCHAR(5) default '16:00';
ALTER TABLE vicidial_campaigns ADD campaign_day_start_time VARCHAR(4) default '0100';
# For the in-groups/campaigns QC permissions, some fields will need to be added to the vicidial_user_groups table:
ALTER TABLE vicidial_user_groups ADD qc_allowed_campaigns TEXT;
ALTER TABLE vicidial_user_groups ADD qc_allowed_inbound_groups TEXT;
# For the user QC permissions, some fields will need to be added to the vicidial_users table:
ALTER TABLE vicidial_users ADD qc_enabled ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_user_level INT(2) default '1';
ALTER TABLE vicidial_users ADD qc_pass ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_finish ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_commit ENUM('1','0') default '0';
+2 -2
View File
@@ -27,7 +27,7 @@ chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql
cp support-files/my-medium.cnf /etc/my.cnf
/usr/local/mysql/bin/mysqld_safe --user=mysql &
/usr/local/mysql/bin/mysqld_safe --user=mysql --skip-name-resolve --skip-host-cache &
ln -s /tmp/mysql.sock /var/run/mysql/mysql.sock
@@ -354,7 +354,7 @@ patch -p1 < ./cli_chan_concise_delimiter.patch
wget http://www.eflo.net/files/app_waitforsilence.c
mv app_waitforsilence.c apps/app_waitforsilence.c
mv -f app_waitforsilence.c apps/app_waitforsilence.c
wget http://www.eflo.net/files/enter.h
wget http://www.eflo.net/files/leave.h
mv -f enter.h apps/enter.h
+9 -4
View File
@@ -381,7 +381,7 @@ NOTE: a minimum of MySQL server 4.0.X is required
- chown -R mysql /usr/local/mysql/var
- chgrp -R mysql /usr/local/mysql
- cp support-files/my-medium.cnf /etc/my.cnf
- /usr/local/mysql/bin/mysqld_safe --user=mysql &
- /usr/local/mysql/bin/mysqld_safe --user=mysql --skip-name-resolve --skip-host-cache &
- ln -s /tmp/mysql.sock /var/run/mysql/mysql.sock
**** For some systems you may need to add the mysql/bin directory to your PATH:
- PATH=$PATH:$HOME/bin:/usr/local/mysql/bin/
@@ -925,7 +925,7 @@ with the following patch:
*OPTIONAL*(1.2.14 thru 1.2.24) rewrite of waitforsilence
- wget http://www.eflo.net/files/app_waitforsilence.c
- mv app_waitforsilence.c apps/app_waitforsilence.c
- mv -f app_waitforsilence.c apps/app_waitforsilence.c
*OPTIONAL* shorter enter and leave sounds for meetme
- wget http://www.eflo.net/files/enter.h
@@ -2796,8 +2796,13 @@ SUBPHASE 6.4: setting up asterisk and helper applications for startup
# mke2fs -m 0 /dev/ram0
# mount /dev/ram0 /var/spool/asterisk/monitor
### Path to local asterisk-perl_0.08 module if needed
PERL5LIB="/usr/share/astguiclient/libs"; export PERL5LIB
# OPTIONAL enable ip_relay(for same-machine trunking and blind monitoring)
# /usr/share/astguiclient/ip_relay/relay_control start 2>/dev/null 1>&2
# Disable console blanking and powersaving
/usr/bin/setterm -blank
/usr/bin/setterm -powersave off
/usr/bin/setterm -powerdown
### start time server
/usr/local/bin/ntpdate -u 18.145.0.30
@@ -8,6 +8,32 @@ jitterbuffer=no
tos=lowdelay
;register => 1112223333:PASSWORD@iax.binfone.com
register => ASTloop:test@1270.0.1:40569
register => ASTblind:test@1270.0.1:41569
[ASTloop]
type=friend
accountcode=ASTloop
context=default
auth=plaintext
host=dynamic
permit=0.0.0.0/0.0.0.0
secret=test
disallow=all
allow=ulaw
qualify=yes
[ASTblind]
type=friend
accountcode=ASTblind
context=default
auth=plaintext
host=dynamic
permit=0.0.0.0/0.0.0.0
secret=test
disallow=all
allow=ulaw
qualify=yes
[1112223333]
auth=md5
@@ -399,10 +399,10 @@ index (call_date)
CREATE TABLE vicidial_users (
user_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
user VARCHAR(20),
pass VARCHAR(20),
user VARCHAR(20) NOT NULL,
pass VARCHAR(20) NOT NULL,
full_name VARCHAR(50),
user_level INT(2),
user_level TINYINT(2) default '1',
user_group VARCHAR(20),
phone_login VARCHAR(20),
phone_pass VARCHAR(20),
@@ -444,9 +444,15 @@ modify_servers ENUM('0','1') default '0',
view_reports ENUM('0','1') default '0',
vicidial_recording_override ENUM('DISABLED','NEVER','ONDEMAND','ALLCALLS','ALLFORCE') default 'DISABLED',
alter_custdata_override ENUM('NOT_ACTIVE','ALLOW_ALTER') default 'NOT_ACTIVE',
index (user)
qc_enabled ENUM('1','0') default '0',
qc_user_level INT(2) default '1',
qc_pass ENUM('1','0') default '0',
qc_finish ENUM('1','0') default '0',
qc_commit ENUM('1','0') default '0'
);
CREATE UNIQUE INDEX user ON vicidial_users (user);
CREATE TABLE vicidial_user_log (
user_log_id INT(9) UNSIGNED AUTO_INCREMENT PRIMARY KEY NOT NULL,
user VARCHAR(20),
@@ -461,7 +467,9 @@ index (user)
CREATE TABLE vicidial_user_groups (
user_group VARCHAR(20) NOT NULL,
group_name VARCHAR(40) NOT NULL,
allowed_campaigns TEXT
allowed_campaigns TEXT,
qc_allowed_campaigns TEXT,
qc_allowed_inbound_groups TEXT
);
CREATE TABLE vicidial_campaigns (
@@ -473,7 +481,7 @@ dial_status_b VARCHAR(6),
dial_status_c VARCHAR(6),
dial_status_d VARCHAR(6),
dial_status_e VARCHAR(6),
lead_order VARCHAR(20),
lead_order VARCHAR(30),
park_ext VARCHAR(10),
park_file_name VARCHAR(10),
web_form_address VARCHAR(255),
@@ -1006,6 +1014,29 @@ index (campaign_id),
index (user)
);
CREATE TABLE vicidial_user_closer_log (
user VARCHAR(20),
campaign_id VARCHAR(20),
event_date DATETIME,
blended ENUM('1','0') default '0',
closer_campaigns TEXT,
index (user),
index (event_date)
);
ALTER TABLE vicidial_campaign_server_stats ENGINE=HEAP;
ALTER TABLE live_channels ENGINE=HEAP;
ALTER TABLE live_sip_channels ENGINE=HEAP;
ALTER TABLE parked_channels ENGINE=HEAP;
ALTER TABLE server_updater ENGINE=HEAP;
ALTER TABLE web_client_sessions ENGINE=HEAP;
INSERT INTO vicidial_lists SET list_id='999',list_name='Default inbound list',campaign_id='TESTCAMP',active='N';
+43
View File
@@ -1 +1,44 @@
ALTER TABLE vicidial_closer_log ADD xfercallid INT(9) UNSIGNED;
ALTER TABLE vicidial_campaign_server_stats ENGINE=HEAP;
ALTER TABLE live_channels ENGINE=HEAP;
ALTER TABLE live_sip_channels ENGINE=HEAP;
ALTER TABLE parked_channels ENGINE=HEAP;
ALTER TABLE server_updater ENGINE=HEAP;
ALTER TABLE web_client_sessions ENGINE=HEAP;
ALTER TABLE vicidial_campaigns MODIFY lead_order VARCHAR(30);
DROP index user on vicidial_users;
ALTER TABLE vicidial_users MODIFY user VARCHAR(20) NOT NULL;
CREATE UNIQUE INDEX user ON vicidial_users (user);
ALTER TABLE vicidial_users MODIFY pass VARCHAR(20) NOT NULL;
ALTER TABLE vicidial_users MODIFY user_level TINYINT(2) NOT NULL default '1';
CREATE TABLE vicidial_user_closer_log (
user VARCHAR(20),
campaign_id VARCHAR(20),
event_date DATETIME,
blended ENUM('1','0') default '0',
closer_campaigns TEXT,
index (user),
index (event_date)
);
ALTER TABLE vicidial_users ADD qc_enabled ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_user_level INT(2) default '1';
ALTER TABLE vicidial_users ADD qc_pass ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_finish ENUM('1','0') default '0';
ALTER TABLE vicidial_users ADD qc_commit ENUM('1','0') default '0';
ALTER TABLE vicidial_user_groups ADD qc_allowed_campaigns TEXT;
ALTER TABLE vicidial_user_groups ADD qc_allowed_inbound_groups TEXT;
@@ -0,0 +1,40 @@
############################################################ ADMIN
QC Enabled -<\/B> This option allows the user to log in to the Quality Control agent screen||
QC User Level -<\/B> This setting defines what the agent Quality Control user level is. This will dictate the level of functionality for the agent in the QC section||
QC Record Pass -<\/B> This option allows the agent to specify that a record has passed the first round of QC after reviewing the record||
QC Record Finish -<\/B> This option allows the agent to specify that a record has finished the second round of QC after reviewing the passed record||
QC Record Commit -<\/B> This option allows the agent to specify that a record has been committed in QC. It can no longer be modified by anyone||
QC Allowed Campaigns -<\/B> This is a selectable list of Campaigns which members of this user group will be able to QC. The ALL-CAMPAIGNS option allows the users in this group to QC any campaign on the system||
QC Allowed Inbound Groups -<\/B> This is a selectable list of Inbound Groups which members of this user group will be able to QC. The ALL-GROUPS option allows the users in this user group to QC any inbound group on the system||
QC Enabled: ||
QC User Level: ||
QC Pass: ||
QC Finish: ||
QC Commit: ||
Modify Nothing||
Modify Nothing Except Status||
Modify All Fields||
Verify First Round of QC||
View QC Statistics||
Ability to Modify FINISHed records||
Manager Level||
USERS CAN VIEW ANY CAMPAIGN||
USERS CAN QC ANY CAMPAIGN||
USERS CAN QC ANY INBOUND GROUP||
QC Allowed Campaigns: ||
QC Allowed Inbound Groups: ||
############################################################ CLIENT
Gender: ||
Date of Birth: ||
YOU MUST BE PAUSED TO CHANGE GROUPS||
############################################################ MANAGER Manual
############################################################ AGENT Manual
+15 -4
View File
@@ -1,7 +1,7 @@
<?
# vdc_db_query.php
#
# Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
# Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
# This script is designed purely to send whether the meetme conference has live channels connected and which they are
# This script depends on the server_ip being sent and also needs to have a valid user/pass from the vicidial_users table
@@ -70,6 +70,7 @@
# - $omit_phone_code - ('Y','N')
# - $no_delete_sessions - ('0','1')
# - $LogouTKicKAlL - ('0','1');
# - $closer_blended = ('0','1');
# CHANGELOG:
# 50629-1044 - First build of script
@@ -141,10 +142,11 @@
# 71129-2025 - restricted callbacks count and list to campaign only
# 71223-0318 - changed logging of closer calls
# 71226-1117 - added option to kick all calls from conference upon logout
# 80116-1032 - added user_closer_log logging in regCLOSER
#
$version = '2.0.5-67';
$build = '71226-1117';
$version = '2.0.5-68';
$build = '80116-1032';
require("dbconnect.php");
@@ -279,7 +281,8 @@ if (isset($_GET["status"])) {$status=$_GET["status"];}
elseif (isset($_POST["status"])) {$status=$_POST["status"];}
if (isset($_GET["LogouTKicKAlL"])) {$LogouTKicKAlL=$_GET["LogouTKicKAlL"];}
elseif (isset($_POST["LogouTKicKAlL"])) {$LogouTKicKAlL=$_POST["LogouTKicKAlL"];}
if (isset($_GET["closer_blended"])) {$closer_blended=$_GET["closer_blended"];}
elseif (isset($_POST["closer_blended"])) {$closer_blended=$_POST["closer_blended"];}
$user=ereg_replace("[^0-9a-zA-Z]","",$user);
$pass=ereg_replace("[^0-9a-zA-Z]","",$pass);
@@ -454,6 +457,14 @@ if ($ACTION == 'regCLOSER')
$rslt=mysql_query($stmt, $link);
}
$stmt="INSERT INTO vicidial_user_closer_log set user='$user',campaign_id='$campaign',event_date='$NOW_TIME',blended='$closer_blended',closer_campaigns='$closer_choice';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_query($stmt, $link);
$stmt="DELETE FROM vicidial_live_inbound_agents where user='$user';";
if ($format=='debug') {echo "\n<!-- $stmt -->";}
$rslt=mysql_query($stmt, $link);
$in_groups_pre = preg_replace('/-$/','',$closer_choice);
$in_groups = explode(" ",$in_groups_pre);
$in_groups_ct = count($in_groups);
+25 -5
View File
@@ -1,7 +1,7 @@
<?
# vicidial.php - the web-based version of the astVICIDIAL client application
#
# Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
# Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
# make sure you have added a user to the vicidial_users MySQL table with at least
# user_level 1 or greater to access this page. Also, you need to have the login
@@ -174,10 +174,11 @@
# 71223-0318 - changed logging of closer calls
# 71226-1117 - added option to kick all calls from conference upon logout
# 80109-1510 - added gender select list
# 80116-1032 - added option on CLOSER-type campaigns to change in-groups when paused
#
$version = '2.0.5-145';
$build = '80109-1510';
$version = '2.0.5-146';
$build = '80116-1032';
require("dbconnect.php");
@@ -5191,6 +5192,8 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
{
if (document.vicidial_form.CloserSelectBlended.checked==true)
{VICIDiaL_closer_blended = 1;}
else
{VICIDiaL_closer_blended = 0;}
var CloserSelectChoices = document.vicidial_form.CloserSelectList.value;
@@ -5218,7 +5221,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
}
if (xmlhttp)
{
CSCupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=regCLOSER&format=text&user=" + user + "&pass=" + pass + "&comments=" + VU_agent_choose_ingroups_DV + "&closer_choice=" + CloserSelectChoices + "-";
CSCupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=regCLOSER&format=text&user=" + user + "&pass=" + pass + "&comments=" + VU_agent_choose_ingroups_DV + "&closer_blended=" + VICIDiaL_closer_blended + "&campaign=" + campaign + "&closer_choice=" + CloserSelectChoices + "-";
xmlhttp.open('POST', 'vdc_db_query.php');
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
xmlhttp.send(CSCupdate_query);
@@ -5659,6 +5662,21 @@ else
}
// ################################################################################
// Show the groups selection span
function OpeNGrouPSelectioN()
{
if ( (AutoDialWaiting == 1) || (VD_live_customer_call==1) || (alt_dial_active==1) )
{
alert("YOU MUST BE PAUSED TO CHANGE GROUPS");
}
else
{
showDiv('CloserSelectBox')
}
}
// ################################################################################
// Hide the CBcommentsBox span upon click
function CBcommentsBoxhide()
@@ -6377,7 +6395,9 @@ echo "</head>\n";
<INPUT TYPE=HIDDEN NAME=extension>
<font class="body_text">
<? echo "Logged in as User: $VD_login on Phone: $SIP_user to campaign: $VD_campaign&nbsp; \n"; ?>
</TD><TD COLSPAN=3 VALIGN=TOP ALIGN=RIGHT><font class="body_text"><? echo "<a href=\"#\" onclick=\"LogouT();return false;\">LOGOUT</a>\n"; ?>
</TD><TD COLSPAN=3 VALIGN=TOP ALIGN=RIGHT><font class="body_text">
<? if ($INgrpCT > 0) {echo "<a href=\"#\" onclick=\"OpeNGrouPSelectioN();return false;\">GROUPS</a> &nbsp; &nbsp; \n";} ?>
<? echo "<a href=\"#\" onclick=\"LogouT();return false;\">LOGOUT</a>\n"; ?>
</TD></TR></TABLE>
</SPAN>
+151 -12
View File
@@ -2,7 +2,7 @@
# admin.php - VICIDIAL administration page
#
#
# Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
# Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
#
@@ -669,6 +669,20 @@ if (isset($_GET["source_group_id"])) {$source_group_id=$_GET["source_group_id"
elseif (isset($_POST["source_group_id"])) {$source_group_id=$_POST["source_group_id"];}
if (isset($_GET["default_xfer_group"])) {$default_xfer_group=$_GET["default_xfer_group"];}
elseif (isset($_POST["default_xfer_group"])) {$default_xfer_group=$_POST["default_xfer_group"];}
if (isset($_GET["qc_enabled"])) {$qc_enabled=$_GET["qc_enabled"];}
elseif (isset($_POST["qc_enabled"])) {$qc_enabled=$_POST["qc_enabled"];}
if (isset($_GET["qc_user_level"])) {$qc_user_level=$_GET["qc_user_level"];}
elseif (isset($_POST["qc_user_level"])) {$qc_user_level=$_POST["qc_user_level"];}
if (isset($_GET["qc_pass"])) {$qc_pass=$_GET["qc_pass"];}
elseif (isset($_POST["qc_pass"])) {$qc_pass=$_POST["qc_pass"];}
if (isset($_GET["qc_finish"])) {$qc_finish=$_GET["qc_finish"];}
elseif (isset($_POST["qc_finish"])) {$qc_finish=$_POST["qc_finish"];}
if (isset($_GET["qc_commit"])) {$qc_commit=$_GET["qc_commit"];}
elseif (isset($_POST["qc_commit"])) {$qc_commit=$_POST["qc_commit"];}
if (isset($_GET["qc_campaigns"])) {$qc_campaigns=$_GET["qc_campaigns"];}
elseif (isset($_POST["qc_campaigns"])) {$qc_campaigns=$_POST["qc_campaigns"];}
if (isset($_GET["qc_groups"])) {$qc_groups=$_GET["qc_groups"];}
elseif (isset($_POST["qc_groups"])) {$qc_groups=$_POST["qc_groups"];}
if (isset($script_id)) {$script_id= strtoupper($script_id);}
@@ -807,6 +821,11 @@ $mix_container_item = ereg_replace("[^0-9]","",$mix_container_item);
$prompt_interval = ereg_replace("[^0-9]","",$prompt_interval);
$agent_alert_delay = ereg_replace("[^0-9]","",$agent_alert_delay);
$manual_dial_list_id = ereg_replace("[^0-9]","",$manual_dial_list_id);
$qc_enabled = ereg_replace("[^0-9]","",$qc_enabled);
$qc_user_level = ereg_replace("[^0-9]","",$qc_user_level);
$qc_pass = ereg_replace("[^0-9]","",$qc_pass);
$qc_finish = ereg_replace("[^0-9]","",$qc_finish);
$qc_commit = ereg_replace("[^0-9]","",$qc_commit);
### DIGITS and DASHES
$group_rank = ereg_replace("[^-0-9]","",$group_rank);
@@ -1141,12 +1160,14 @@ $list_mix_container = ereg_replace(";","",$list_mix_container);
# 71116-0942 - Added campaign_rank and fewest_calls as methods for agent call routing
# 71122-1135 - Added default transfer group for campaigns and inbound groups
# 71125-1751 - Added allowable transfer groups to campaign detail screen
# 80107-1204 - Started framework for new QC section
# 80112-0242 - Added more options for lead order
#
#
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time
$admin_version = '2.0.4-119';
$build = '71125-1751';
$admin_version = '2.0.5-121';
$build = '80112-0242';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -1769,16 +1790,26 @@ if ( ( (strlen($ADD)>4) && ($ADD < 99998) ) or ($ADD==3) or (($ADD>20) and ($ADD
{
if ( ($ADD==211111) or ($ADD==311111) or ($ADD==511111) or ($ADD==611111) )
{
$stmt="SELECT allowed_campaigns from vicidial_user_groups where user_group='$user_group';";
$stmt="SELECT allowed_campaigns,qc_allowed_campaigns,qc_allowed_inbound_groups from vicidial_user_groups where user_group='$user_group';";
$rslt=mysql_query($stmt, $link);
$row=mysql_fetch_row($rslt);
$allowed_campaigns = $row[0];
$allowed_campaigns = $row[0];
$qc_allowed_campaigns = $row[1];
$qc_allowed_inbound_groups = $row[2];
$allowed_campaigns = preg_replace("/ -$/","",$allowed_campaigns);
$campaigns = explode(" ", $allowed_campaigns);
$qc_allowed_campaigns = preg_replace("/ -$/","",$qc_allowed_campaigns);
$qc_campaigns = explode(" ", $qc_allowed_campaigns);
$qc_allowed_inbound_groups = preg_replace("/ -$/","",$qc_allowed_inbound_groups);
$qc_groups = explode(" ", $qc_allowed_inbound_groups);
}
$campaigns_value='';
$campaigns_list='<B><input type="checkbox" name="campaigns[]" value="-ALL-CAMPAIGNS-"';
$qc_campaigns_value='';
$qc_campaigns_list='<B><input type="checkbox" name="qc_campaigns[]" value="-ALL-CAMPAIGNS-"';
$qc_groups_value='';
$qc_groups_list='<B><input type="checkbox" name="qc_groups[]" value="-ALL-GROUPS-"';
$p=0;
while ($p<100)
{
@@ -1787,9 +1818,21 @@ if ( ( (strlen($ADD)>4) && ($ADD < 99998) ) or ($ADD==3) or (($ADD>20) and ($ADD
$campaigns_list.=" CHECKED";
$campaigns_value .= " -ALL-CAMPAIGNS- -";
}
if (eregi('ALL-CAMPAIGNS',$qc_campaigns[$p]))
{
$qc_campaigns_list.=" CHECKED";
$qc_campaigns_value .= " -ALL-CAMPAIGNS- -";
}
if (eregi('ALL-GROUPS',$qc_groups[$p]))
{
$qc_groups_list.=" CHECKED";
$qc_groups_value .= " -ALL-GROUPS- -";
}
$p++;
}
$campaigns_list.="> ALL-CAMPAIGNS - USERS CAN VIEW ANY CAMPAIGN</B><BR>\n";
$qc_campaigns_list.="> ALL-CAMPAIGNS - USERS CAN QC ANY CAMPAIGN</B><BR>\n";
$qc_groups_list.="> ALL-GROUPS - USERS CAN QC ANY INBOUND GROUP</B><BR>\n";
$stmt="SELECT campaign_id,campaign_name from vicidial_campaigns order by campaign_id";
$rslt=mysql_query($stmt, $link);
@@ -1802,6 +1845,7 @@ if ( ( (strlen($ADD)>4) && ($ADD < 99998) ) or ($ADD==3) or (($ADD>20) and ($ADD
$campaign_id_value = $rowx[0];
$campaign_name_value = $rowx[1];
$campaigns_list .= "<input type=\"checkbox\" name=\"campaigns[]\" value=\"$campaign_id_value\"";
$qc_campaigns_list .= "<input type=\"checkbox\" name=\"qc_campaigns[]\" value=\"$campaign_id_value\"";
$p=0;
while ($p<100)
{
@@ -1811,13 +1855,47 @@ if ( ( (strlen($ADD)>4) && ($ADD < 99998) ) or ($ADD==3) or (($ADD>20) and ($ADD
$campaigns_list .= " CHECKED";
$campaigns_value .= " $campaign_id_value";
}
if ($campaign_id_value == $qc_campaigns[$p])
{
$qc_campaigns_list .= " CHECKED";
$qc_campaigns_value .= " $campaign_id_value";
}
# echo "<!-- O $p|$campaign_id_value|$campaigns[$p]| -->";
$p++;
}
$campaigns_list .= "> $campaign_id_value - $campaign_name_value<BR>\n";
$qc_campaigns_list .= "> $campaign_id_value - $campaign_name_value<BR>\n";
$o++;
}
$stmt="SELECT group_id,group_name from vicidial_inbound_groups order by group_id";
$rslt=mysql_query($stmt, $link);
$groups_to_print = mysql_num_rows($rslt);
$o=0;
while ($groups_to_print > $o)
{
$rowx=mysql_fetch_row($rslt);
$group_id_value = $rowx[0];
$group_name_value = $rowx[1];
$qc_groups_list .= "<input type=\"checkbox\" name=\"qc_groups[]\" value=\"$group_id_value\"";
$p=0;
while ($p<100)
{
if ($group_id_value == $qc_groups[$p])
{
$qc_groups_list .= " CHECKED";
$qc_groups_value .= " $group_id_value";
}
$p++;
}
$qc_groups_list .= "> $group_id_value - $group_name_value<BR>\n";
$o++;
}
if (strlen($campaigns_value)>2) {$campaigns_value .= " -";}
if (strlen($qc_campaigns_value)>2) {$qc_campaigns_value .= " -";}
if (strlen($qc_groups_value)>2) {$qc_groups_value .= " -";}
}
##### END get campaigns listing for checkboxes #####
@@ -2055,6 +2133,39 @@ echo "<TABLE WIDTH=98% BGCOLOR=#E6E6E6 cellpadding=2 cellspacing=0><TR><TD ALIGN
<BR>
<B>View Reports -</B> This option allows the user to view the VICIDIAL reports.
<BR>
<A NAME="vicidial_users-qc_enabled">
<BR>
<B>QC Enabled -</B> This option allows the user to log in to the Quality Control agent screen.
<BR>
<A NAME="vicidial_users-qc_user_level">
<BR>
<B>QC User Level -</B> This setting defines what the agent Quality Control user level is. This will dictate the level of functionality for the agent in the QC section:<BR>
1 - Modify Nothing<BR>
2 - Modify Nothing Except Status<BR>
3 - Modify All Fields<BR>
4 - Verify First Round of QC<BR>
5 - View QC Statistics<BR>
6 - Ability to Modify FINISHed records<BR>
7 - Manager Level<BR>
<BR>
<A NAME="vicidial_users-qc_pass">
<BR>
<B>QC Record Pass -</B> This option allows the agent to specify that a record has passed the first round of QC after reviewing the record.
<BR>
<A NAME="vicidial_users-qc_finish">
<BR>
<B>QC Record Finish -</B> This option allows the agent to specify that a record has finished the second round of QC after reviewing the passed record.
<BR>
<A NAME="vicidial_users-qc_commit">
<BR>
<B>QC Record Commit -</B> This option allows the agent to specify that a record has been committed in QC. It can no longer be modified by anyone.
@@ -2706,6 +2817,16 @@ echo "<TABLE WIDTH=98% BGCOLOR=#E6E6E6 cellpadding=2 cellspacing=0><TR><TD ALIGN
<BR>
<B>Allowed Campaigns -</B> This is a selectable list of Campaigns to which members of this user group can log in to. The ALL-CAMPAIGNS option allows the users in this group to see and log in to any campaign on the system.
<BR>
<A NAME="vicidial_user_groups-qc_allowed_campaigns">
<BR>
<B>QC Allowed Campaigns -</B> This is a selectable list of Campaigns which members of this user group will be able to QC. The ALL-CAMPAIGNS option allows the users in this group to QC any campaign on the system.
<BR>
<A NAME="vicidial_user_groups-qc_allowed_inbound_groups">
<BR>
<B>QC Allowed Inbound Groups -</B> This is a selectable list of Inbound Groups which members of this user group will be able to QC. The ALL-GROUPS option allows the users in this user group to QC any inbound group on the system.
@@ -4809,7 +4930,7 @@ if ($ADD=="2A")
}
else
{
$stmt="INSERT INTO vicidial_users (user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override) SELECT \"$user\",\"$pass\",\"$full_name\",user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override from vicidial_users where user=\"$source_user_id\";";
$stmt="INSERT INTO vicidial_users (user,pass,full_name,user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit) SELECT \"$user\",\"$pass\",\"$full_name\",user_level,user_group,phone_login,phone_pass,delete_users,delete_user_groups,delete_lists,delete_campaigns,delete_ingroups,delete_remote_agents,load_leads,campaign_detail,ast_admin_access,ast_delete_phones,delete_scripts,modify_leads,hotkeys_active,change_agent_campaign,agent_choose_ingroups,closer_campaigns,scheduled_callbacks,agentonly_callbacks,agentcall_manual,vicidial_recording,vicidial_transfers,delete_filters,alter_agent_interface_options,closer_default_blended,delete_call_times,modify_call_times,modify_users,modify_campaigns,modify_lists,modify_scripts,modify_filters,modify_ingroups,modify_usergroups,modify_remoteagents,modify_servers,view_reports,vicidial_recording_override,alter_custdata_override,qc_enabled,qc_user_level,qc_pass,qc_finish,qc_commit from vicidial_users where user=\"$source_user_id\";";
$rslt=mysql_query($stmt, $link);
$stmtA="INSERT INTO vicidial_inbound_group_agents (user,group_id,group_rank,group_weight,calls_today) SELECT \"$user\",group_id,group_rank,group_weight,\"0\" from vicidial_inbound_group_agents where user=\"$source_user_id\";";
@@ -5881,11 +6002,10 @@ if ($ADD=="4A")
{
echo "<br><B>USER MODIFIED - ADMIN: $user</B>\n";
$stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',delete_users='$delete_users',delete_user_groups='$delete_user_groups',delete_lists='$delete_lists',delete_campaigns='$delete_campaigns',delete_ingroups='$delete_ingroups',delete_remote_agents='$delete_remote_agents',load_leads='$load_leads',campaign_detail='$campaign_detail',ast_admin_access='$ast_admin_access',ast_delete_phones='$ast_delete_phones',delete_scripts='$delete_scripts',modify_leads='$modify_leads',hotkeys_active='$hotkeys_active',change_agent_campaign='$change_agent_campaign',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',delete_filters='$delete_filters',alter_agent_interface_options='$alter_agent_interface_options',closer_default_blended='$closer_default_blended',delete_call_times='$delete_call_times',modify_call_times='$modify_call_times',modify_users='$modify_users',modify_campaigns='$modify_campaigns',modify_lists='$modify_lists',modify_scripts='$modify_scripts',modify_filters='$modify_filters',modify_ingroups='$modify_ingroups',modify_usergroups='$modify_usergroups',modify_remoteagents='$modify_remoteagents',modify_servers='$modify_servers',view_reports='$view_reports',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override' where user='$user';";
$stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',delete_users='$delete_users',delete_user_groups='$delete_user_groups',delete_lists='$delete_lists',delete_campaigns='$delete_campaigns',delete_ingroups='$delete_ingroups',delete_remote_agents='$delete_remote_agents',load_leads='$load_leads',campaign_detail='$campaign_detail',ast_admin_access='$ast_admin_access',ast_delete_phones='$ast_delete_phones',delete_scripts='$delete_scripts',modify_leads='$modify_leads',hotkeys_active='$hotkeys_active',change_agent_campaign='$change_agent_campaign',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',delete_filters='$delete_filters',alter_agent_interface_options='$alter_agent_interface_options',closer_default_blended='$closer_default_blended',delete_call_times='$delete_call_times',modify_call_times='$modify_call_times',modify_users='$modify_users',modify_campaigns='$modify_campaigns',modify_lists='$modify_lists',modify_scripts='$modify_scripts',modify_filters='$modify_filters',modify_ingroups='$modify_ingroups',modify_usergroups='$modify_usergroups',modify_remoteagents='$modify_remoteagents',modify_servers='$modify_servers',view_reports='$view_reports',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override',qc_enabled='$qc_enabled',qc_user_level='$qc_user_level',qc_pass='$qc_pass',qc_finish='$qc_finish',qc_commit='$qc_commit' where user='$user';";
$rslt=mysql_query($stmt, $link);
### LOG CHANGES TO LOG FILE ###
if ($WeBRooTWritablE > 0)
{
@@ -5923,7 +6043,7 @@ if ($ADD=="4B")
{
echo "<br><B>USER MODIFIED - ADMIN: $user</B>\n";
$stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',hotkeys_active='$hotkeys_active',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',closer_default_blended='$closer_default_blended',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override' where user='$user';";
$stmt="UPDATE vicidial_users set pass='$pass',full_name='$full_name',user_level='$user_level',user_group='$user_group',phone_login='$phone_login',phone_pass='$phone_pass',hotkeys_active='$hotkeys_active',agent_choose_ingroups='$agent_choose_ingroups',closer_campaigns='$groups_value',scheduled_callbacks='$scheduled_callbacks',agentonly_callbacks='$agentonly_callbacks',agentcall_manual='$agentcall_manual',vicidial_recording='$vicidial_recording',vicidial_transfers='$vicidial_transfers',closer_default_blended='$closer_default_blended',vicidial_recording_override='$vicidial_recording_override',alter_custdata_override='$alter_custdata_override',qc_enabled='$qc_enabled',qc_user_level='$qc_user_level',qc_pass='$qc_pass',qc_finish='$qc_finish',qc_commit='$qc_commit' where user='$user';";
$rslt=mysql_query($stmt, $link);
### LOG CHANGES TO LOG FILE ###
@@ -6765,7 +6885,7 @@ if ($ADD==411111)
}
else
{
$stmt="UPDATE vicidial_user_groups set user_group='$user_group', group_name='$group_name',allowed_campaigns='$campaigns_value' where user_group='$OLDuser_group';";
$stmt="UPDATE vicidial_user_groups set user_group='$user_group', group_name='$group_name',allowed_campaigns='$campaigns_value',qc_allowed_campaigns='$qc_campaigns_value',qc_allowed_inbound_groups='$qc_groups_value' where user_group='$OLDuser_group';";
$rslt=mysql_query($stmt, $link);
echo "<br><B>USER GROUP MODIFIED</B>\n";
@@ -8666,6 +8786,12 @@ if ($ADD==3)
$view_reports = $row[43];
$vicidial_recording_override = $row[44];
$alter_custdata_override = $row[45];
$qc_enabled = $row[46];
$qc_user_level = $row[47];
$qc_pass = $row[48];
$qc_finish = $row[49];
$qc_commit = $row[50];
if ( ($user_level >= $LOGuser_level) and ($LOGuser_level < 9) )
{
@@ -8738,6 +8864,11 @@ if ($ADD==3)
echo "$RANKgroups_list";
echo "</table>\n";
echo "</td></tr>\n";
echo "<tr bgcolor=#9BB9FB><td align=right>QC Enabled: </td><td align=left><select size=1 name=qc_enabled><option>0</option><option>1</option><option SELECTED>$qc_enabled</option></select>$NWB#vicidial_users-qc_enabled$NWE</td></tr>\n";
echo "<tr bgcolor=#9BB9FB><td align=right>QC User Level: </td><td align=left><select size=1 name=qc_user_level><option value=1>1 - Modify Nothing</option><option value=2>2 - Modify Nothing Except Status</option><option value=3>3 - Modify All Fields</option><option value=4>4 - Verify First Round of QC</option><option value=5>5 - View QC Statistics</option><option value=6>6 - Ability to Modify FINISHed records</option><option value=7>7 - Manager Level</option><option SELECTED>$qc_user_level</option></select>$NWB#vicidial_users-qc_user_level$NWE</td></tr>\n";
echo "<tr bgcolor=#9BB9FB><td align=right>QC Pass: </td><td align=left><select size=1 name=qc_pass><option>0</option><option>1</option><option SELECTED>$qc_pass</option></select>$NWB#vicidial_users-qc_pass$NWE</td></tr>\n";
echo "<tr bgcolor=#9BB9FB><td align=right>QC Finish: </td><td align=left><select size=1 name=qc_finish><option>0</option><option>1</option><option SELECTED>$qc_finish</option></select>$NWB#vicidial_users-qc_finish$NWE</td></tr>\n";
echo "<tr bgcolor=#9BB9FB><td align=right>QC Commit: </td><td align=left><select size=1 name=qc_commit><option>0</option><option>1</option><option SELECTED>$qc_commit</option></select>$NWB#vicidial_users-qc_commit$NWE</td></tr>\n";
}
if ($LOGuser_level > 8)
{
@@ -9065,7 +9196,7 @@ if ($ADD==31)
echo "</select> &nbsp; \n";
echo "<input type=submit name=submit value=ADD> &nbsp; &nbsp; $NWB#vicidial_campaigns-dial_status$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>List Order: </td><td align=left><select size=1 name=lead_order ><option>DOWN</option><option>UP</option><option>UP PHONE</option><option>DOWN PHONE</option><option>UP LAST NAME</option><option>DOWN LAST NAME</option><option>UP COUNT</option><option>DOWN COUNT</option><option>DOWN COUNT 2nd NEW</option><option>DOWN COUNT 3rd NEW</option><option>DOWN COUNT 4th NEW</option><option>DOWN COUNT 5th NEW</option><option>DOWN COUNT 6th NEW</option><option SELECTED>$lead_order</option></select>$NWB#vicidial_campaigns-lead_order$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>List Order: </td><td align=left><select size=1 name=lead_order ><option>DOWN</option><option>UP</option><option>DOWN PHONE</option><option>UP PHONE</option><option>DOWN LAST NAME</option><option>UP LAST NAME</option><option>DOWN COUNT</option><option>UP COUNT</option><option>DOWN 2nd NEW</option><option>DOWN 3rd NEW</option><option>DOWN 4th NEW</option><option>DOWN 5th NEW</option><option>DOWN 6th NEW</option><option>UP 2nd NEW</option><option>UP 3rd NEW</option><option>UP 4th NEW</option><option>UP 5th NEW</option><option>UP 6th NEW</option><option>DOWN PHONE 2nd NEW</option><option>DOWN PHONE 3rd NEW</option><option>DOWN PHONE 4th NEW</option><option>DOWN PHONE 5th NEW</option><option>DOWN PHONE 6th NEW</option><option>UP PHONE 2nd NEW</option><option>UP PHONE 3rd NEW</option><option>UP PHONE 4th NEW</option><option>UP PHONE 5th NEW</option><option>UP PHONE 6th NEW</option><option>DOWN LAST NAME 2nd NEW</option><option>DOWN LAST NAME 3rd NEW</option><option>DOWN LAST NAME 4th NEW</option><option>DOWN LAST NAME 5th NEW</option><option>DOWN LAST NAME 6th NEW</option><option>UP LAST NAME 2nd NEW</option><option>UP LAST NAME 3rd NEW</option><option>UP LAST NAME 4th NEW</option><option>UP LAST NAME 5th NEW</option><option>UP LAST NAME 6th NEW</option><option>DOWN COUNT 2nd NEW</option><option>DOWN COUNT 3rd NEW</option><option>DOWN COUNT 4th NEW</option><option>DOWN COUNT 5th NEW</option><option>DOWN COUNT 6th NEW</option><option>UP COUNT 2nd NEW</option><option>UP COUNT 3rd NEW</option><option>UP COUNT 4th NEW</option><option>UP COUNT 5th NEW</option><option>UP COUNT 6th NEW</option><option SELECTED>$lead_order</option></select>$NWB#vicidial_campaigns-lead_order$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right><a href=\"$PHP_SELF?ADD=31&SUB=29&campaign_id=$campaign_id&vcl_id=$list_order_mix\">List Mix</a>: </td><td align=left><select size=1 name=list_order_mix>\n";
echo "$mixes_list";
@@ -9779,7 +9910,7 @@ if ($ADD==34)
echo "</select> &nbsp; \n";
echo "<input type=submit name=submit value=ADD> &nbsp; &nbsp; $NWB#vicidial_campaigns-dial_status$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>List Order: </td><td align=left><select size=1 name=lead_order><option>DOWN</option><option>UP</option><option>UP PHONE</option><option>DOWN PHONE</option><option>UP LAST NAME</option><option>DOWN LAST NAME</option><option>UP COUNT</option><option>DOWN COUNT</option><option>DOWN COUNT 2nd NEW</option><option>DOWN COUNT 3rd NEW</option><option>DOWN COUNT 4th NEW</option><option>DOWN COUNT 5th NEW</option><option>DOWN COUNT 6th NEW</option><option SELECTED>$lead_order</option></select>$NWB#vicidial_campaigns-lead_order$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>List Order: </td><td align=left><select size=1 name=lead_order><option>DOWN</option><option>UP</option><option>DOWN PHONE</option><option>UP PHONE</option><option>DOWN LAST NAME</option><option>UP LAST NAME</option><option>DOWN COUNT</option><option>UP COUNT</option><option>DOWN 2nd NEW</option><option>DOWN 3rd NEW</option><option>DOWN 4th NEW</option><option>DOWN 5th NEW</option><option>DOWN 6th NEW</option><option>UP 2nd NEW</option><option>UP 3rd NEW</option><option>UP 4th NEW</option><option>UP 5th NEW</option><option>UP 6th NEW</option><option>DOWN PHONE 2nd NEW</option><option>DOWN PHONE 3rd NEW</option><option>DOWN PHONE 4th NEW</option><option>DOWN PHONE 5th NEW</option><option>DOWN PHONE 6th NEW</option><option>UP PHONE 2nd NEW</option><option>UP PHONE 3rd NEW</option><option>UP PHONE 4th NEW</option><option>UP PHONE 5th NEW</option><option>UP PHONE 6th NEW</option><option>DOWN LAST NAME 2nd NEW</option><option>DOWN LAST NAME 3rd NEW</option><option>DOWN LAST NAME 4th NEW</option><option>DOWN LAST NAME 5th NEW</option><option>DOWN LAST NAME 6th NEW</option><option>UP LAST NAME 2nd NEW</option><option>UP LAST NAME 3rd NEW</option><option>UP LAST NAME 4th NEW</option><option>UP LAST NAME 5th NEW</option><option>UP LAST NAME 6th NEW</option><option>DOWN COUNT 2nd NEW</option><option>DOWN COUNT 3rd NEW</option><option>DOWN COUNT 4th NEW</option><option>DOWN COUNT 5th NEW</option><option>DOWN COUNT 6th NEW</option><option>UP COUNT 2nd NEW</option><option>UP COUNT 3rd NEW</option><option>UP COUNT 4th NEW</option><option>UP COUNT 5th NEW</option><option>UP COUNT 6th NEW</option><option SELECTED>$lead_order</option></select>$NWB#vicidial_campaigns-lead_order$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right><a href=\"$PHP_SELF?ADD=31&SUB=29&campaign_id=$campaign_id&vcl_id=$list_order_mix\">List Mix</a>: </td><td align=left><select size=1 name=list_order_mix>\n";
echo "$mixes_list";
@@ -11154,6 +11285,14 @@ if ($ADD==311111)
echo "<tr bgcolor=#B6D3FC><td align=right>Allowed Campaigns: </td><td align=left>\n";
echo "$campaigns_list";
echo "$NWB#vicidial_user_groups-allowed_campaigns$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>QC Allowed Campaigns: </td><td align=left>\n";
echo "$qc_campaigns_list";
echo "$NWB#vicidial_user_groups-qc_allowed_campaigns$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=right>QC Allowed Inbound Groups: </td><td align=left>\n";
echo "$qc_groups_list";
echo "$NWB#vicidial_user_groups-qc_allowed_inbound_groups$NWE</td></tr>\n";
echo "<tr bgcolor=#B6D3FC><td align=center colspan=2><input type=submit name=SUBMIT value=SUBMIT></td></tr>\n";
echo "</TABLE></center>\n";
+1
View File
@@ -49,4 +49,5 @@ $AM_shift_BEGIN = '03:45:00';
$AM_shift_END = '17:45:00';
$PM_shift_BEGIN = '17:45:01';
$PM_shift_END = '23:59:59';
$admin_qc_enabled = '0';
?>
+35 -1
View File
@@ -1,7 +1,7 @@
<?
### user_stats.php
###
### Copyright (C) 2007 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
### Copyright (C) 2008 Matt Florell <vicidial@gmail.com> LICENSE: GPLv2
###
# CHANGES
#
@@ -9,6 +9,7 @@
# 61201-1136 - Added recordings display and changed calls to time range with 10000 limit
# 70118-1605 - Added user group column to login/out and calls lists
# 70702-1231 - Added recording location link and truncation
# 80117-0316 - Added vicidial_user_closer_log entries to display
#
header ("Content-type: text/html; charset=utf-8");
@@ -264,6 +265,39 @@ echo "<br><br>\n";
echo "<center>\n";
echo "<B>CLOSER IN-GROUP SELECTION LOGS:</B>\n";
echo "<TABLE width=650 cellspacing=0 cellpadding=1>\n";
echo "<tr><td><font size=1># </td><td><font size=2>DATE/TIME </td><td align=left><font size=2> CAMPAIGN</td><td align=left><font size=2>BLEND</td><td align=left><font size=2> GROUPS</td></tr>\n";
$stmt="select * from vicidial_user_closer_log where user='" . mysql_real_escape_string($user) . "' and event_date >= '" . mysql_real_escape_string($begin_date) . " 0:00:01' and event_date <= '" . mysql_real_escape_string($end_date) . " 23:59:59' order by event_date desc limit 1000;";
$rslt=mysql_query($stmt, $link);
$logs_to_print = mysql_num_rows($rslt);
$u=0;
while ($logs_to_print > $u) {
$row=mysql_fetch_row($rslt);
if (eregi("1$|3$|5$|7$|9$", $u))
{$bgcolor='bgcolor="#B9CBFD"';}
else
{$bgcolor='bgcolor="#9BB9FB"';}
$u++;
echo "<tr $bgcolor>";
echo "<td><font size=1>$u</td>";
echo "<td><font size=2>$row[2]</td>";
echo "<td align=left><font size=2> $row[1]</td>\n";
echo "<td align=left><font size=2> $row[3]</td>\n";
echo "<td align=left><font size=2> $row[4] </td>\n";
echo "</tr>\n";
}
echo "</TABLE></center><BR><BR>\n";
echo "<B>OUTBOUND CALLS FOR THIS TIME PERIOD: (10000 record limit)</B>\n";
echo "<TABLE width=650 cellspacing=0 cellpadding=1>\n";
echo "<tr><td><font size=1># </td><td><font size=2>DATE/TIME </td><td align=left><font size=2>LENGTH</td><td align=left><font size=2> STATUS</td><td align=left><font size=2> PHONE</td><td align=right><font size=2> CAMPAIGN</td><td align=right><font size=2> GROUP</td><td align=right><font size=2> LIST</td><td align=right><font size=2> LEAD</td></tr>\n";