Added Talk Seconds URLs features to campaigns and in-groups
Small fix for Stereo Call Recordings Added code for Monitor Deprecation after Asterisk 20 git-svn-id: svn://192.168.202.10@3945 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
@@ -871,6 +871,21 @@ OTHER CHANGES:
|
|||||||
setting. This can send a URL request when new leads are added to the
|
setting. This can send a URL request when new leads are added to the
|
||||||
system through the "add_lead" Non-Agent API function.
|
system through the "add_lead" Non-Agent API function.
|
||||||
|
|
||||||
|
249. Added agc/dispo_move_listSC.php script, allowing for multiple more complex
|
||||||
|
Dispo Move List functions after an agent dispositions a call.
|
||||||
|
|
||||||
|
250. Added "hopper_bulk_insert" Non-Agent API function.
|
||||||
|
|
||||||
|
251. Added Stereo Call Recording, allowing for additional call recordings with
|
||||||
|
the customer on one side(the Right channel) and the agent on the other
|
||||||
|
side(the Left channel), as well as optional parallel stereo call
|
||||||
|
recordings. For more information, read the doc:
|
||||||
|
STEREO_CALL_RECORDINGS.txt
|
||||||
|
|
||||||
|
252. Added "Talk Seconds URLs" Campaign and In-Group features. Allows for URLs
|
||||||
|
to be sent out from the Agent Screen while the agent is talking to the
|
||||||
|
customer, based on the number of seconds they have been talking.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
# exten => _91NXXNXXXXXX,n,Set(__AMDMINLEN=7)
|
# exten => _91NXXNXXXXXX,n,Set(__AMDMINLEN=7)
|
||||||
# NOTE: the above variable setting will ensure that this script has run for a minimum of 7 seconds before ending and hanging up
|
# NOTE: the above variable setting will ensure that this script has run for a minimum of 7 seconds before ending and hanging up
|
||||||
#
|
#
|
||||||
# Copyright (C) 2024 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# changes:
|
# changes:
|
||||||
# 60206-1434 - first build
|
# 60206-1434 - first build
|
||||||
@@ -70,10 +70,11 @@
|
|||||||
# 230412-1023 - Added Code to dispo NOAUDIODATA as ADAIR (Dead Air Auto) with Settings Container option, Issue #1459
|
# 230412-1023 - Added Code to dispo NOAUDIODATA as ADAIR (Dead Air Auto) with Settings Container option, Issue #1459
|
||||||
# 230726-0932 - Added manual_vm_status_updates campaign option
|
# 230726-0932 - Added manual_vm_status_updates campaign option
|
||||||
# 240906-2228 - Added AMD minimum length handling to increase short call durations
|
# 240906-2228 - Added AMD minimum length handling to increase short call durations
|
||||||
|
# 250924-2152 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
$script = 'VD_amd.agi';
|
$script = 'VD_amd.agi';
|
||||||
$build = '230726-0932';
|
$build = '250924-2152';
|
||||||
|
|
||||||
$A = 1; # set to 1 for AMD output messages mode
|
$A = 1; # set to 1 for AMD output messages mode
|
||||||
$AMD_LOG = 3; # set to 1 for logfile and 2 forDB log, 3 for both
|
$AMD_LOG = 3; # set to 1 for logfile and 2 forDB log, 3 for both
|
||||||
@@ -711,10 +712,18 @@ else
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VD_phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$VD_lead_id','VDAD','$campaign_rec_filename','$uniqueid');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VD_phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$VD_lead_id','VDAD','$campaign_rec_filename','$uniqueid');";
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
# ;inbound DID catch-all:
|
# ;inbound DID catch-all:
|
||||||
#exten => _X.,1,AGI(agi-DID_route.agi)
|
#exten => _X.,1,AGI(agi-DID_route.agi)
|
||||||
#
|
#
|
||||||
# Copyright (C) 2024 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# changes:
|
# changes:
|
||||||
# 81007-0324 - First Build
|
# 81007-0324 - First Build
|
||||||
@@ -51,6 +51,7 @@
|
|||||||
# 220507-0811 - Added pre_filter_recent_call function
|
# 220507-0811 - Added pre_filter_recent_call function
|
||||||
# 230124-1228 - Added logging of VICIrecGatewayID channel variable, and vicidial_did_gateway_log table
|
# 230124-1228 - Added logging of VICIrecGatewayID channel variable, and vicidial_did_gateway_log table
|
||||||
# 241208-1748 - Changed DID filter_phone_group_id & pre_filter_phone_group_id to multi-selects
|
# 241208-1748 - Changed DID filter_phone_group_id & pre_filter_phone_group_id to multi-selects
|
||||||
|
# 250924-2156 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
|
|
||||||
@@ -877,10 +878,18 @@ if ($record_call =~ /Y/)
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename");
|
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$filename-in.wav)t($PATHmonitor/MIX/$filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename");
|
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$callerid','$SQLdate','$now_date_epoch','0','$filename','0','$extension','$filename','$unique_id');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$callerid','$SQLdate','$now_date_epoch','0','$filename','0','$extension','$filename','$unique_id');";
|
||||||
|
|||||||
@@ -42,7 +42,7 @@
|
|||||||
#exten => _83002*.,5,Hangup
|
#exten => _83002*.,5,Hangup
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 2013 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
# 70912-1105 - First build, non-functional
|
# 70912-1105 - First build, non-functional
|
||||||
@@ -53,6 +53,7 @@
|
|||||||
# 71120-1337 - added playing of recording ID at beginning of session
|
# 71120-1337 - added playing of recording ID at beginning of session
|
||||||
# 120430-2214 - Converted call to Monitor app to be asterisk 1.8 compatible
|
# 120430-2214 - Converted call to Monitor app to be asterisk 1.8 compatible
|
||||||
# 130108-1816 - Changes for Asterisk 1.8 compatibility
|
# 130108-1816 - Changes for Asterisk 1.8 compatibility
|
||||||
|
# 250924-2158 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
&get_time_now;
|
&get_time_now;
|
||||||
@@ -384,10 +385,18 @@ if ($record_call =~ /Y/)
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename|m");
|
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename|m");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$filename-in.wav)t($PATHmonitor/MIX/$filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename,m");
|
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename,m");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location) values('$channel','$server_ip','$inbound_number','$now_date','start_epoch','0','$filename','$lead_id','$user','$ivr_id');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location) values('$channel','$server_ip','$inbound_number','$now_date','start_epoch','0','$filename','$lead_id','$user','$ivr_id');";
|
||||||
|
|||||||
@@ -47,7 +47,7 @@
|
|||||||
#exten => _X.,n,Goto(default,${EXTEN},1)
|
#exten => _X.,n,Goto(default,${EXTEN},1)
|
||||||
#exten => _X.,n,Hangup
|
#exten => _X.,n,Hangup
|
||||||
#
|
#
|
||||||
# Copyright (C) 2015 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# CHANGELOG
|
# CHANGELOG
|
||||||
# 91105-1402 - First build
|
# 91105-1402 - First build
|
||||||
@@ -60,6 +60,7 @@
|
|||||||
# 151211-0932 - Added phone search and phone NVA URL features
|
# 151211-0932 - Added phone search and phone NVA URL features
|
||||||
# 151214-2148 - Added more variables to be used by nva url feature
|
# 151214-2148 - Added more variables to be used by nva url feature
|
||||||
# 151220-1521 - Added phone NVA List ID option for not found phone numbers
|
# 151220-1521 - Added phone NVA List ID option for not found phone numbers
|
||||||
|
# 250924-2137 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
&get_time_now;
|
&get_time_now;
|
||||||
@@ -402,11 +403,19 @@ if ($record_call =~ /Y/)
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename");
|
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r(/var/spool/asterisk/monitor/MIX/$filename-in.wav)t(/var/spool/asterisk/monitor/MIX/$filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename");
|
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$filename");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( ($phone_url =~ /Y/) && (length($nva_call_url) > 8) )
|
if ( ($phone_url =~ /Y/) && (length($nva_call_url) > 8) )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -266,6 +266,7 @@
|
|||||||
# 240906-1032 - Added testing for stereo_recording in-group option *NOT PRODUCTION READY*
|
# 240906-1032 - Added testing for stereo_recording in-group option *NOT PRODUCTION READY*
|
||||||
# 250325-1724 - Fix for possible daily_limit issue
|
# 250325-1724 - Fix for possible daily_limit issue
|
||||||
# 250825-1824 - Added stereo_recording code
|
# 250825-1824 - Added stereo_recording code
|
||||||
|
# 250924-2147 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
$script = 'agi-VDAD_ALL_inbound.agi';
|
$script = 'agi-VDAD_ALL_inbound.agi';
|
||||||
@@ -2689,10 +2690,18 @@ if ( ($CLchannel_group =~ /DID_INBOUND/) && (length($CLend_epoch) < 5) )
|
|||||||
{
|
{
|
||||||
$AGI->exec("StopMonitor wav|$PATHmonitor/MIX/$CLfilename");
|
$AGI->exec("StopMonitor wav|$PATHmonitor/MIX/$CLfilename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("StopMixMonitor","");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("StopMonitor","wav,$PATHmonitor/MIX/$CLfilename");
|
$AGI->exec("StopMonitor","wav,$PATHmonitor/MIX/$CLfilename");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
$stmtA = "UPDATE recording_log set end_time='$now_date',end_epoch='$now_date_epoch',length_in_sec=$CLlength_in_sec,length_in_min='$CLlength_in_min' where recording_id='$CLrecording_id'";
|
$stmtA = "UPDATE recording_log set end_time='$now_date',end_epoch='$now_date_epoch',length_in_sec=$CLlength_in_sec,length_in_min='$CLlength_in_min' where recording_id='$CLrecording_id'";
|
||||||
@@ -5032,11 +5041,19 @@ while ( ($drop_timer <= $DROP_TIME) && ($wait_in_queue > 0) && ($MCdrop_override
|
|||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$retval = $AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$insert_lead_id','$VDADuser','$campaign_rec_filename','$insert_close_id');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$insert_lead_id','$VDADuser','$campaign_rec_filename','$insert_close_id');";
|
||||||
|
|||||||
@@ -133,6 +133,7 @@
|
|||||||
# 241001-2222 - Fixes for Khomp call processing
|
# 241001-2222 - Fixes for Khomp call processing
|
||||||
# 241020-1928 - Added khomp campaign settings options
|
# 241020-1928 - Added khomp campaign settings options
|
||||||
# 250827-1556 - Added stereo_recording code
|
# 250827-1556 - Added stereo_recording code
|
||||||
|
# 250924-2150 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
$script = 'agi-VDAD_ALL_outbound.agi';
|
$script = 'agi-VDAD_ALL_outbound.agi';
|
||||||
@@ -1210,10 +1211,18 @@ if ($VDACaffected_rows > 0)
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','VDAD','$campaign_rec_filename','$uniqueid');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','VDAD','$campaign_rec_filename','$uniqueid');";
|
||||||
@@ -3226,11 +3235,19 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$retval = $AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','$VDADuser','$campaign_rec_filename','$uniqueid');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','$VDADuser','$campaign_rec_filename','$uniqueid');";
|
||||||
@@ -3938,7 +3955,7 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
$SRaffected_rows = $dbhA->do($stmtA);
|
$SRaffected_rows = $dbhA->do($stmtA);
|
||||||
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
||||||
|
|
||||||
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed) values('$recording_id','$temp_parallel_rec_ag_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0')";
|
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed,rir_type) values('$recording_id','$temp_parallel_rec_ag_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0','S')";
|
||||||
$affected_rowsB = $dbhA->do($stmtB);
|
$affected_rowsB = $dbhA->do($stmtB);
|
||||||
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
||||||
|
|
||||||
@@ -3987,7 +4004,7 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
$SRaffected_rows = $dbhA->do($stmtA);
|
$SRaffected_rows = $dbhA->do($stmtA);
|
||||||
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
||||||
|
|
||||||
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed) values('$recording_id','$stereo_rec_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0')";
|
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed,rir_type) values('$recording_id','$stereo_rec_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0','S')";
|
||||||
$affected_rowsB = $dbhA->do($stmtB);
|
$affected_rowsB = $dbhA->do($stmtB);
|
||||||
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
||||||
|
|
||||||
@@ -4640,11 +4657,19 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor wav|$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$retval = $AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
$retval = $AGI->exec("Monitor","wav,$PATHmonitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','$VDADuser','$campaign_rec_filename','$uniqueid');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VDADphone','$now_date','$now_date_epoch','0','$campaign_rec_filename','$CIDlead_id','$VDADuser','$campaign_rec_filename','$uniqueid');";
|
||||||
@@ -5349,7 +5374,7 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
$SRaffected_rows = $dbhA->do($stmtA);
|
$SRaffected_rows = $dbhA->do($stmtA);
|
||||||
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
||||||
|
|
||||||
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed) values('$recording_id','$temp_parallel_rec_ag_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0')";
|
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed,rir_type) values('$recording_id','$temp_parallel_rec_ag_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0','S')";
|
||||||
$affected_rowsB = $dbhA->do($stmtB);
|
$affected_rowsB = $dbhA->do($stmtB);
|
||||||
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
||||||
|
|
||||||
@@ -5398,7 +5423,7 @@ while ($drop_timer <= $DROP_TIME)
|
|||||||
$SRaffected_rows = $dbhA->do($stmtA);
|
$SRaffected_rows = $dbhA->do($stmtA);
|
||||||
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='01XXX'; $MEL_aff_rows=$SRaffected_rows; &mysql_error_logging;
|
||||||
|
|
||||||
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed) values('$recording_id','$stereo_rec_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0')";
|
$stmtB = "INSERT INTO routing_initiated_recordings (recording_id,filename,launch_time,lead_id,vicidial_id,user,processed,rir_type) values('$recording_id','$stereo_rec_filename','$now_date','$CIDlead_id','$uniqueid','$VDADuser','0','S')";
|
||||||
$affected_rowsB = $dbhA->do($stmtB);
|
$affected_rowsB = $dbhA->do($stmtB);
|
||||||
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
$dbhP=$dbhA; $mysql_count='02XXX'; $MEL_aff_rows=$affected_rowsB; &mysql_error_logging;
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
# exten => _8331*.,n,AGI(agi-VDAD_RINGALL.agi,${EXTEN})
|
# exten => _8331*.,n,AGI(agi-VDAD_RINGALL.agi,${EXTEN})
|
||||||
# exten => _8331*.,n,Hangup
|
# exten => _8331*.,n,Hangup
|
||||||
#
|
#
|
||||||
# Copyright (C) 2024 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# changes:
|
# changes:
|
||||||
# 110303-2325 - First build
|
# 110303-2325 - First build
|
||||||
@@ -24,6 +24,7 @@
|
|||||||
# 140421-1448 - Added code to halt ringing of other channels in ring_all NAC method
|
# 140421-1448 - Added code to halt ringing of other channels in ring_all NAC method
|
||||||
# 240420-2241 - Added ConfBridge code
|
# 240420-2241 - Added ConfBridge code
|
||||||
# 240415-1702 - Fix for ConfBridge code
|
# 240415-1702 - Fix for ConfBridge code
|
||||||
|
# 250924-2157 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
$script = 'agi-VDAD_RINGALL.agi';
|
$script = 'agi-VDAD_RINGALL.agi';
|
||||||
@@ -385,10 +386,18 @@ if ($NAGcount > 0)
|
|||||||
{
|
{
|
||||||
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor wav|/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($ast_ver_str{major} > 20)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$AGI->exec("MixMonitor",",r($PATHmonitor/MIX/$campaign_rec_filename-in.wav)t($PATHmonitor/MIX/$campaign_rec_filename-out.wav)");
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
$AGI->exec("Monitor","wav,/var/spool/asterisk/monitor/MIX/$campaign_rec_filename");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
### insert record into recording_log table ###
|
### insert record into recording_log table ###
|
||||||
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VAC_phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$VAC_lead_id','$dial_user','$campaign_rec_filename','$uniqueid');";
|
$stmtA = "INSERT INTO recording_log (channel,server_ip,extension,start_time,start_epoch,length_in_sec,filename,lead_id,user,location,vicidial_id) values('$channel','$VARserver_ip','$VAC_phone_number','$now_date','$now_date_epoch','0','$campaign_rec_filename','$VAC_lead_id','$dial_user','$campaign_rec_filename','$uniqueid');";
|
||||||
|
|||||||
@@ -174,9 +174,10 @@
|
|||||||
# 240420-2209 - Added Conference Updater option
|
# 240420-2209 - Added Conference Updater option
|
||||||
# 250103-0932 - Added ConfBridge code and enhanced_agent_monitoring system setting code
|
# 250103-0932 - Added ConfBridge code and enhanced_agent_monitoring system setting code
|
||||||
# 250914-1601 - Added pruning of recording_live table entries over 7 days old, deletion of parallel recording source files 3+ days
|
# 250914-1601 - Added pruning of recording_live table entries over 7 days old, deletion of parallel recording source files 3+ days
|
||||||
|
# 250924-2212 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||||
#
|
#
|
||||||
|
|
||||||
$build = '250914-1601';
|
$build = '250924-2212';
|
||||||
|
|
||||||
$DB=0; # Debug flag
|
$DB=0; # Debug flag
|
||||||
$teodDB=0; # flag to log Timeclock End of Day processes to log file
|
$teodDB=0; # flag to log Timeclock End of Day processes to log file
|
||||||
@@ -3402,7 +3403,17 @@ if ( ($active_asterisk_server =~ /Y/) && ($generate_vicidial_conf =~ /Y/) && ($r
|
|||||||
if ($asterisk_version =~ /^1.2/)
|
if ($asterisk_version =~ /^1.2/)
|
||||||
{$Vext .= "exten => 8309,2,Monitor(wav,\${CALLERIDNAME})\n";}
|
{$Vext .= "exten => 8309,2,Monitor(wav,\${CALLERIDNAME})\n";}
|
||||||
else
|
else
|
||||||
{$Vext .= "exten => 8309,2,Monitor(wav,\${CALLERID(name)})\n";}
|
{
|
||||||
|
if ($asterisk_version =~ /^2[1-9]|^3\d|^4\d/)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$Vext .= "exten => 8309,2,MixMonitor(,r($PATHmonitor/\${CALLERID(name)}-in.wav)t($PATHmonitor/\${CALLERID(name)}-out.wav))\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Vext .= "exten => 8309,2,Monitor(wav,\${CALLERID(name)})\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
$Vext .= "exten => 8309,3,Wait($vicidial_recording_limit)\n";
|
$Vext .= "exten => 8309,3,Wait($vicidial_recording_limit)\n";
|
||||||
$Vext .= "exten => 8309,4,Hangup()\n";
|
$Vext .= "exten => 8309,4,Hangup()\n";
|
||||||
$Vext .= "; this is the GSM verison\n";
|
$Vext .= "; this is the GSM verison\n";
|
||||||
@@ -3410,7 +3421,17 @@ if ( ($active_asterisk_server =~ /Y/) && ($generate_vicidial_conf =~ /Y/) && ($r
|
|||||||
if ($asterisk_version =~ /^1.2/)
|
if ($asterisk_version =~ /^1.2/)
|
||||||
{$Vext .= "exten => 8310,2,Monitor(gsm,\${CALLERIDNAME})\n";}
|
{$Vext .= "exten => 8310,2,Monitor(gsm,\${CALLERIDNAME})\n";}
|
||||||
else
|
else
|
||||||
{$Vext .= "exten => 8310,2,Monitor(gsm,\${CALLERID(name)})\n";}
|
{
|
||||||
|
if ($asterisk_version =~ /^2[1-9]|^3\d|^4\d/)
|
||||||
|
{
|
||||||
|
# Deprecation of "Monitor" application after Asterisk 20
|
||||||
|
$Vext .= "exten => 8309,2,MixMonitor(,r($PATHmonitor/\${CALLERID(name)}-in.wav)t($PATHmonitor/\${CALLERID(name)}-out.wav))\n";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$Vext .= "exten => 8310,2,Monitor(gsm,\${CALLERID(name)})\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
$Vext .= "exten => 8310,3,Wait($vicidial_recording_limit)\n";
|
$Vext .= "exten => 8310,3,Wait($vicidial_recording_limit)\n";
|
||||||
$Vext .= "exten => 8310,4,Hangup()\n";
|
$Vext .= "exten => 8310,4,Hangup()\n";
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
VICIDIAL STEREO CALL RECORDINGS Started: 2025-06-18 Updated: 2025-09-19
|
VICIDIAL STEREO CALL RECORDINGS Started: 2025-06-18 Updated: 2025-09-25
|
||||||
|
|
||||||
|
|
||||||
TO USE THESE FEATURES, YOU WILL NEED TO HAVE ALL SERVERS IN YOUR CLUSTER USING SVN/TRUNK REVISION 3943(2025-09-19) CODE OR HIGHER!!!
|
TO USE THESE FEATURES, YOU WILL NEED TO HAVE ALL SERVERS IN YOUR CLUSTER USING SVN/TRUNK REVISION 3945(2025-09-25) CODE OR HIGHER!!!
|
||||||
|
|
||||||
|
|
||||||
This project was designed to allow for additional stereo recording of phone calls at the agent and server levels directly on VICIdial Asterisk servers, with the customer always on one channel(the Right channel) and the agent and all other parties on the other channel(the Left channel). If you are looking for the VICI Gateway Recording Server documentation, please see the GATEWAY_RECORDING_SERVER.txt document.
|
This project was designed to allow for additional stereo recording of phone calls at the agent and server levels directly on VICIdial Asterisk servers, with the customer always on one channel(the Right channel) and the agent and all other parties on the other channel(the Left channel). If you are looking for the VICI Gateway Recording Server documentation, please see the GATEWAY_RECORDING_SERVER.txt document.
|
||||||
|
|||||||
@@ -3801,7 +3801,7 @@ url_id INT(9) UNSIGNED NOT NULL AUTO_INCREMENT,
|
|||||||
campaign_id VARCHAR(20) NOT NULL,
|
campaign_id VARCHAR(20) NOT NULL,
|
||||||
entry_type ENUM('campaign','ingroup','list','system','') default '',
|
entry_type ENUM('campaign','ingroup','list','system','') default '',
|
||||||
active ENUM('Y','N') default 'N',
|
active ENUM('Y','N') default 'N',
|
||||||
url_type ENUM('dispo','start','addlead','noagent','apinewlead','') default '',
|
url_type ENUM('dispo','start','addlead','noagent','apinewlead','talk','') default '',
|
||||||
url_rank SMALLINT(5) default '1',
|
url_rank SMALLINT(5) default '1',
|
||||||
url_statuses VARCHAR(1000) default '',
|
url_statuses VARCHAR(1000) default '',
|
||||||
url_description VARCHAR(255) default '',
|
url_description VARCHAR(255) default '',
|
||||||
@@ -5853,4 +5853,4 @@ INSERT INTO `wallboard_reports` VALUES ('AGENTS_AND_QUEUES','Agents and Queues',
|
|||||||
|
|
||||||
UPDATE system_settings set vdc_agent_api_active='1';
|
UPDATE system_settings set vdc_agent_api_active='1';
|
||||||
|
|
||||||
UPDATE system_settings SET db_schema_version='1729',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
UPDATE system_settings SET db_schema_version='1730',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||||
|
|||||||
@@ -2873,7 +2873,7 @@ ALTER TABLE system_settings ADD agent_hide_dial_fail ENUM('0','1','2','3','4','5
|
|||||||
UPDATE system_settings SET db_schema_version='1725',db_schema_update_date=NOW() where db_schema_version < 1725;
|
UPDATE system_settings SET db_schema_version='1725',db_schema_update_date=NOW() where db_schema_version < 1725;
|
||||||
|
|
||||||
ALTER TABLE vicidial_url_multi MODIFY entry_type ENUM('campaign','ingroup','list','system','') default '';
|
ALTER TABLE vicidial_url_multi MODIFY entry_type ENUM('campaign','ingroup','list','system','') default '';
|
||||||
ALTER TABLE vicidial_url_multi MODIFY url_type ENUM('dispo','start','addlead','noagent','apinewlead','') default '';
|
ALTER TABLE vicidial_url_multi MODIFY url_type ENUM('dispo','start','addlead','noagent','apinewlead','talk','') default '';
|
||||||
|
|
||||||
UPDATE system_settings SET db_schema_version='1726',db_schema_update_date=NOW() where db_schema_version < 1726;
|
UPDATE system_settings SET db_schema_version='1726',db_schema_update_date=NOW() where db_schema_version < 1726;
|
||||||
|
|
||||||
@@ -3007,3 +3007,7 @@ CREATE TABLE recording_log_parallel_archive LIKE recording_log_parallel;
|
|||||||
CREATE TABLE recording_log_stereo_archive LIKE recording_log_stereo;
|
CREATE TABLE recording_log_stereo_archive LIKE recording_log_stereo;
|
||||||
|
|
||||||
UPDATE system_settings SET db_schema_version='1729',db_schema_update_date=NOW() where db_schema_version < 1729;
|
UPDATE system_settings SET db_schema_version='1729',db_schema_update_date=NOW() where db_schema_version < 1729;
|
||||||
|
|
||||||
|
ALTER TABLE vicidial_url_multi MODIFY url_type ENUM('dispo','start','addlead','noagent','apinewlead','talk','') default '';
|
||||||
|
|
||||||
|
UPDATE system_settings SET db_schema_version='1730',db_schema_update_date=NOW() where db_schema_version < 1730;
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ $version = '2.14-106';
|
|||||||
$build = '250831-0839';
|
$build = '250831-0839';
|
||||||
$php_script = 'manager_send.php';
|
$php_script = 'manager_send.php';
|
||||||
$mel=1; # Mysql Error Log enabled = 1
|
$mel=1; # Mysql Error Log enabled = 1
|
||||||
$mysql_log_count=161;
|
$mysql_log_count=177;
|
||||||
$one_mysql_log=0;
|
$one_mysql_log=0;
|
||||||
$SSagent_debug_logging=0;
|
$SSagent_debug_logging=0;
|
||||||
$startMS = microtime();
|
$startMS = microtime();
|
||||||
@@ -2820,7 +2820,7 @@ if ( ($ACTION=="MonitorConf") || ($ACTION=="StopMonitorConf") )
|
|||||||
$stmt = "UPDATE recording_live set end_time='$NOW_TIME',recording_status='FINISHED' where recording_id='$recording_id' and recording_status='STARTED';";
|
$stmt = "UPDATE recording_live set end_time='$NOW_TIME',recording_status='FINISHED' where recording_id='$recording_id' and recording_status='STARTED';";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02162',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
|
|
||||||
# find and hang up all recordings going on in this conference # and extension = '$exten'
|
# find and hang up all recordings going on in this conference # and extension = '$exten'
|
||||||
@@ -2900,7 +2900,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt = "UPDATE vicidial_live_agents SET external_recording='' where user='$user';";
|
$stmt = "UPDATE vicidial_live_agents SET external_recording='' where user='$user';";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02163',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
##### get call type from vicidial_live_agents table
|
##### get call type from vicidial_live_agents table
|
||||||
$VLA_inOUT='NONE';
|
$VLA_inOUT='NONE';
|
||||||
@@ -2994,7 +2994,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
{
|
{
|
||||||
$stmt="SELECT vendor_lead_code FROM vicidial_list where lead_id='$lead_id';";
|
$stmt="SELECT vendor_lead_code FROM vicidial_list where lead_id='$lead_id';";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$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);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02164',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$VM_mancall_ct = mysqli_num_rows($rslt);
|
$VM_mancall_ct = mysqli_num_rows($rslt);
|
||||||
if ($VM_mancall_ct > 0)
|
if ($VM_mancall_ct > 0)
|
||||||
@@ -3058,7 +3058,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
# gather parallel_recording_id from recording_log_parallel
|
# gather parallel_recording_id from recording_log_parallel
|
||||||
$stmt="SELECT parallel_recording_id FROM recording_log_parallel where lead_id='$lead_id' and user='$user' and channel='$channel' and start_time > \"$four_hours_ago\" order by parallel_recording_id desc limit 1;";
|
$stmt="SELECT parallel_recording_id FROM recording_log_parallel where lead_id='$lead_id' and user='$user' and channel='$channel' and start_time > \"$four_hours_ago\" order by parallel_recording_id desc limit 1;";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$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);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02165',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$PR_ct = mysqli_num_rows($rslt);
|
$PR_ct = mysqli_num_rows($rslt);
|
||||||
if ($PR_ct > 0)
|
if ($PR_ct > 0)
|
||||||
@@ -3071,12 +3071,12 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmtA = "INSERT INTO recording_log_stereo (recording_id,server_ip,start_time,length_in_sec,filename,lead_id,options,processing_log,recording_status,parallel_recording_id) values('$recording_id','$server_ip','$NOW_TIME','0','$stereo_rec_filename','$lead_id','$VDcampaign_id STEREO_PARALLEL AGENT-CONTROLLED $stereo_recording $stereo_recording_agent','start: $now_date|vicidial_id: $VDvicidial_id|user: $user|channel: $channel|','STEREO START','$parallel_recording_id');";
|
$stmtA = "INSERT INTO recording_log_stereo (recording_id,server_ip,start_time,length_in_sec,filename,lead_id,options,processing_log,recording_status,parallel_recording_id) values('$recording_id','$server_ip','$NOW_TIME','0','$stereo_rec_filename','$lead_id','$VDcampaign_id STEREO_PARALLEL AGENT-CONTROLLED $stereo_recording $stereo_recording_agent','start: $now_date|vicidial_id: $VDvicidial_id|user: $user|channel: $channel|','STEREO START','$parallel_recording_id');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmtA -->";}
|
if ($format=='debug') {echo "\n<!-- $stmtA -->";}
|
||||||
$rslt=mysql_to_mysqli($stmtA, $link);
|
$rslt=mysql_to_mysqli($stmtA, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtA,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtA,'02166',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
$stmtD = "INSERT INTO recording_live (recording_id,recording_type,server_ip,start_time,channel,filename,lead_id,user,dtmf_muting_end_time,recording_status) values('$recording_id','STEREO_PARALLEL AGENT-CONTROLLED','$server_ip','$NOW_TIME','$channel','$stereo_rec_filename','$lead_id','$user','2020-12-31 23:59:59','STARTED');";
|
$stmtD = "INSERT INTO recording_live (recording_id,recording_type,server_ip,start_time,channel,filename,lead_id,user,dtmf_muting_end_time,recording_status) values('$recording_id','STEREO_PARALLEL AGENT-CONTROLLED','$server_ip','$NOW_TIME','$channel','$stereo_rec_filename','$lead_id','$user','2020-12-31 23:59:59','STARTED');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmtD -->";}
|
if ($format=='debug') {echo "\n<!-- $stmtD -->";}
|
||||||
$rslt=mysql_to_mysqli($stmtD, $link);
|
$rslt=mysql_to_mysqli($stmtD, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtD,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtD,'02167',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -3092,12 +3092,12 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmtA = "INSERT INTO recording_log_stereo (recording_id,server_ip,start_time,length_in_sec,filename,lead_id,options,processing_log,recording_status) values('$recording_id','$server_ip','$NOW_TIME','0','$stereo_rec_filename','$lead_id','$VDcampaign_id STEREO AGENT-CONTROLLED $stereo_recording $stereo_recording_agent','start: $now_date|vicidial_id: $VDvicidial_id|user: $user|channel: $channel|','STEREO START');";
|
$stmtA = "INSERT INTO recording_log_stereo (recording_id,server_ip,start_time,length_in_sec,filename,lead_id,options,processing_log,recording_status) values('$recording_id','$server_ip','$NOW_TIME','0','$stereo_rec_filename','$lead_id','$VDcampaign_id STEREO AGENT-CONTROLLED $stereo_recording $stereo_recording_agent','start: $now_date|vicidial_id: $VDvicidial_id|user: $user|channel: $channel|','STEREO START');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmtA -->";}
|
if ($format=='debug') {echo "\n<!-- $stmtA -->";}
|
||||||
$rslt=mysql_to_mysqli($stmtA, $link);
|
$rslt=mysql_to_mysqli($stmtA, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtA,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtA,'02168',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
$stmtD = "INSERT INTO recording_live (recording_id,recording_type,server_ip,start_time,channel,filename,lead_id,user,dtmf_muting_end_time,recording_status) values('$recording_id','STEREO AGENT-CONTROLLED','$server_ip','$NOW_TIME','$channel','$stereo_rec_filename','$lead_id','$user','2020-12-31 23:59:59','STARTED');";
|
$stmtD = "INSERT INTO recording_live (recording_id,recording_type,server_ip,start_time,channel,filename,lead_id,user,dtmf_muting_end_time,recording_status) values('$recording_id','STEREO AGENT-CONTROLLED','$server_ip','$NOW_TIME','$channel','$stereo_rec_filename','$lead_id','$user','2020-12-31 23:59:59','STARTED');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmtD -->";}
|
if ($format=='debug') {echo "\n<!-- $stmtD -->";}
|
||||||
$rslt=mysql_to_mysqli($stmtD, $link);
|
$rslt=mysql_to_mysqli($stmtD, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtD,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmtD,'02169',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
if (preg_match("/CUSTOMER_ONLY/",$stereo_recording) )
|
if (preg_match("/CUSTOMER_ONLY/",$stereo_recording) )
|
||||||
{
|
{
|
||||||
@@ -3105,7 +3105,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','MixMonitorMute','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','Direction: write','State: 1','','','','','','');";
|
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','MixMonitorMute','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','Direction: write','State: 1','','','','','','');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02170',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
if (preg_match("/CUSTOMER_MUTE/",$stereo_recording) )
|
if (preg_match("/CUSTOMER_MUTE/",$stereo_recording) )
|
||||||
{
|
{
|
||||||
@@ -3113,7 +3113,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','MixMonitorMute','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','Direction: read','State: 1','','','','','','');";
|
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','MixMonitorMute','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','Direction: read','State: 1','','','','','','');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02171',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$filename = $stereo_rec_filename;
|
$filename = $stereo_rec_filename;
|
||||||
@@ -3131,7 +3131,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt = "UPDATE vicidial_live_agents SET external_recording='' where user='$user';";
|
$stmt = "UPDATE vicidial_live_agents SET external_recording='' where user='$user';";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02172',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
if ($uniqueid=='IN')
|
if ($uniqueid=='IN')
|
||||||
{
|
{
|
||||||
@@ -3164,7 +3164,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
|
|
||||||
$stmt="SELECT recording_id,UNIX_TIMESTAMP(start_time),filename,recording_type FROM recording_live where channel='$channel' and user='$user' and recording_status='STARTED' and recording_type LIKE \"STEREO%\" and recording_type LIKE \"%AGENT-CONTROLLED%\" order by start_time desc;";
|
$stmt="SELECT recording_id,UNIX_TIMESTAMP(start_time),filename,recording_type FROM recording_live where channel='$channel' and user='$user' and recording_status='STARTED' and recording_type LIKE \"STEREO%\" and recording_type LIKE \"%AGENT-CONTROLLED%\" order by start_time desc;";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02173',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rec_count = mysqli_num_rows($rslt);
|
$rec_count = mysqli_num_rows($rslt);
|
||||||
if ($rec_count>0)
|
if ($rec_count>0)
|
||||||
@@ -3187,17 +3187,17 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt = "UPDATE recording_log_stereo set end_time='$NOW_TIME',recording_status='FINISHED',length_in_sec=$length_in_sec where recording_id='$recording_id';";
|
$stmt = "UPDATE recording_log_stereo set end_time='$NOW_TIME',recording_status='FINISHED',length_in_sec=$length_in_sec where recording_id='$recording_id';";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02174',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
$stmt = "UPDATE recording_live set end_time='$NOW_TIME',recording_status='FINISHED' where recording_id='$recording_id' and recording_status='STARTED';";
|
$stmt = "UPDATE recording_live set end_time='$NOW_TIME',recording_status='FINISHED' where recording_id='$recording_id' and recording_status='STARTED';";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02175',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
|
|
||||||
$stmt = "UPDATE routing_initiated_recordings set processed='1' where user='$user' and processed='0' and rir_type='S' order by launch_time desc limit 1;";
|
$stmt = "UPDATE routing_initiated_recordings set processed='1' where user='$user' and processed='0' and rir_type='S' order by launch_time desc limit 1;";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02176',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
|
|
||||||
# if ($WeBRooTWritablE > 0)
|
# if ($WeBRooTWritablE > 0)
|
||||||
@@ -3213,7 +3213,7 @@ if ( ($ACTION=="MonitorStereo") || ($ACTION=="StopMonitorStereo") )
|
|||||||
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','StopMixMonitor','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','','','','','','','','');";
|
$stmt="INSERT INTO vicidial_manager values('','','$NOW_TIME','NEW','N','$server_ip','','StopMixMonitor','$vmgr_callerid','ActionID: $vmgr_callerid','Channel: $channel','','','','','','','','');";
|
||||||
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
if ($format=='debug') {echo "\n<!-- $stmt -->";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'02177',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
##### END StopMonitorStereo steps #####
|
##### END StopMonitorStereo steps #####
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -749,13 +749,14 @@
|
|||||||
# 250806-0859 - Added manual_dial_lead_id 'ONLY' option and user override setting
|
# 250806-0859 - Added manual_dial_lead_id 'ONLY' option and user override setting
|
||||||
# 250808-1322 - Added agent_man_dial_filter & agent_3way_dial_filter system settings
|
# 250808-1322 - Added agent_man_dial_filter & agent_3way_dial_filter system settings
|
||||||
# 250916-2055 - Added stereo recording features
|
# 250916-2055 - Added stereo recording features
|
||||||
|
# 250924-0953 - Added Talk Seconds URLs features
|
||||||
#
|
#
|
||||||
|
|
||||||
$version = '2.14-715c';
|
$version = '2.14-716c';
|
||||||
$build = '250916-2055';
|
$build = '250924-0953';
|
||||||
$php_script = 'vicidial.php';
|
$php_script = 'vicidial.php';
|
||||||
$mel=1; # Mysql Error Log enabled = 1
|
$mel=1; # Mysql Error Log enabled = 1
|
||||||
$mysql_log_count=103;
|
$mysql_log_count=108;
|
||||||
$one_mysql_log=0;
|
$one_mysql_log=0;
|
||||||
$DB=0;
|
$DB=0;
|
||||||
$conf_table = "vicidial_conferences";
|
$conf_table = "vicidial_conferences";
|
||||||
@@ -1156,7 +1157,7 @@ if (preg_match("/1|2/",$SSagent_hide_dial_fail))
|
|||||||
$agent_hide_dial_fail_MESSAGE='Dial Failed';
|
$agent_hide_dial_fail_MESSAGE='Dial Failed';
|
||||||
$stmt="SELECT container_entry FROM vicidial_settings_containers WHERE container_id='FAILED_DIAL_MESSAGE_OVERRIDE';";
|
$stmt="SELECT container_entry FROM vicidial_settings_containers WHERE container_id='FAILED_DIAL_MESSAGE_OVERRIDE';";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01104',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$stde_ct = mysqli_num_rows($rslt);
|
$stde_ct = mysqli_num_rows($rslt);
|
||||||
if ($stde_ct > 0)
|
if ($stde_ct > 0)
|
||||||
@@ -1820,7 +1821,7 @@ else
|
|||||||
$stmt="SELECT count(*) from vicidial_two_factor_auth where user='$VD_login' and auth_stage='1' and auth_exp_date > NOW();";
|
$stmt="SELECT count(*) from vicidial_two_factor_auth where user='$VD_login' and auth_stage='1' and auth_exp_date > NOW();";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01105',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||||
$auth_check_to_print = mysqli_num_rows($rslt);
|
$auth_check_to_print = mysqli_num_rows($rslt);
|
||||||
if ($auth_check_to_print < 1)
|
if ($auth_check_to_print < 1)
|
||||||
{$VALID_2FA=0;}
|
{$VALID_2FA=0;}
|
||||||
@@ -1844,7 +1845,7 @@ else
|
|||||||
|
|
||||||
$stmt="SELECT full_name,email,mobile_number,user_group from vicidial_users where user='$VD_login' and active='Y' and api_only_user != '1';";
|
$stmt="SELECT full_name,email,mobile_number,user_group from vicidial_users where user='$VD_login' and active='Y' and api_only_user != '1';";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01106',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||||
$row=mysqli_fetch_row($rslt);
|
$row=mysqli_fetch_row($rslt);
|
||||||
$LOGfullname = $row[0];
|
$LOGfullname = $row[0];
|
||||||
$LOGemail = $row[1];
|
$LOGemail = $row[1];
|
||||||
@@ -3395,7 +3396,7 @@ else
|
|||||||
{
|
{
|
||||||
$stmt="SELECT container_entry FROM vicidial_settings_containers WHERE container_id='$state_descriptions';";
|
$stmt="SELECT container_entry FROM vicidial_settings_containers WHERE container_id='$state_descriptions';";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01107',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$stde_ct = mysqli_num_rows($rslt);
|
$stde_ct = mysqli_num_rows($rslt);
|
||||||
if ($stde_ct > 0)
|
if ($stde_ct > 0)
|
||||||
@@ -3881,7 +3882,7 @@ else
|
|||||||
# Gather list of In-Groups for this user that have hit the daily limit, so we can exclude them
|
# Gather list of In-Groups for this user that have hit the daily limit, so we can exclude them
|
||||||
$stmt="SELECT group_id FROM vicidial_inbound_group_agents WHERE user='$VD_login' and ( (daily_limit > -1) and (daily_limit <= calls_today) ) limit 1000;";
|
$stmt="SELECT group_id FROM vicidial_inbound_group_agents WHERE user='$VD_login' and ( (daily_limit > -1) and (daily_limit <= calls_today) ) limit 1000;";
|
||||||
$rslt=mysql_to_mysqli($stmt, $link);
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01XXX',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'01108',$VD_login,$server_ip,$session_name,$one_mysql_log);}
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
$VD_hit_limit_ingroups_ct = mysqli_num_rows($rslt);
|
$VD_hit_limit_ingroups_ct = mysqli_num_rows($rslt);
|
||||||
$VD_hit_limit_ingroups="'',";
|
$VD_hit_limit_ingroups="'',";
|
||||||
@@ -6318,6 +6319,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
|||||||
var conf_channels_xtra_display = 0;
|
var conf_channels_xtra_display = 0;
|
||||||
var display_message = '';
|
var display_message = '';
|
||||||
var web_form_vars = '';
|
var web_form_vars = '';
|
||||||
|
var talk_url_vars = '';
|
||||||
var Nactiveext;
|
var Nactiveext;
|
||||||
var Nbusytrunk;
|
var Nbusytrunk;
|
||||||
var Nbusyext;
|
var Nbusyext;
|
||||||
@@ -6862,6 +6864,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
|||||||
var HTheightS='<?php echo $HTheightS ?>';
|
var HTheightS='<?php echo $HTheightS ?>';
|
||||||
var agent_hide_dial_fail='<?php echo $SSagent_hide_dial_fail ?>';
|
var agent_hide_dial_fail='<?php echo $SSagent_hide_dial_fail ?>';
|
||||||
var agent_hide_dial_fail_MESSAGE="<?php echo $agent_hide_dial_fail_MESSAGE ?>";
|
var agent_hide_dial_fail_MESSAGE="<?php echo $agent_hide_dial_fail_MESSAGE ?>";
|
||||||
|
var talk_sec_url_secs='';
|
||||||
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 = "<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_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\" />";
|
var DiaLControl_auto_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif") ?>\" border=\"0\" alt=\"pause button disabled\" />";
|
||||||
@@ -11612,12 +11615,10 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
{
|
{
|
||||||
var MDlookResponse = null;
|
var MDlookResponse = null;
|
||||||
// alert(xmlhttp.responseText);
|
// alert(xmlhttp.responseText);
|
||||||
|
|
||||||
var debug_response = xmlhttp.responseText;
|
var debug_response = xmlhttp.responseText;
|
||||||
var REGcommentsDBNL = new RegExp("\n","g");
|
var REGcommentsDBNL = new RegExp("\n","g");
|
||||||
debug_response = debug_response.replace(REGcommentsDBNL, "<br>");
|
debug_response = debug_response.replace(REGcommentsDBNL, "<br>");
|
||||||
// document.getElementById("debugbottomspan").innerHTML = "<br>|" + manDiaLlook_query + "|<br>\n" + debug_response;
|
// document.getElementById("debugbottomspan").innerHTML = "<br>|" + manDiaLlook_query + "|<br>\n" + debug_response;
|
||||||
|
|
||||||
MDlookResponse = xmlhttp.responseText;
|
MDlookResponse = xmlhttp.responseText;
|
||||||
var MDlookResponse_array=MDlookResponse.split("\n");
|
var MDlookResponse_array=MDlookResponse.split("\n");
|
||||||
var MDlookCID = MDlookResponse_array[0];
|
var MDlookCID = MDlookResponse_array[0];
|
||||||
@@ -11758,6 +11759,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
document.vicidial_form.uniqueid.value = MDlookResponse_array[0];
|
document.vicidial_form.uniqueid.value = MDlookResponse_array[0];
|
||||||
document.getElementById("callchannel").innerHTML = MDlookResponse_array[1];
|
document.getElementById("callchannel").innerHTML = MDlookResponse_array[1];
|
||||||
var stereo_info = MDlookResponse_array[2];
|
var stereo_info = MDlookResponse_array[2];
|
||||||
|
var talk_sec_url_info = MDlookResponse_array[3];
|
||||||
lastcustchannel = MDlookResponse_array[1];
|
lastcustchannel = MDlookResponse_array[1];
|
||||||
if( document.images ) { document.images['livecall'].src = image_livecall_ON.src;}
|
if( document.images ) { document.images['livecall'].src = image_livecall_ON.src;}
|
||||||
document.vicidial_form.SecondS.value = 0;
|
document.vicidial_form.SecondS.value = 0;
|
||||||
@@ -11781,6 +11783,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
var regSRC = new RegExp("^SAC|^SPAC","ig");
|
var regSRC = new RegExp("^SAC|^SPAC","ig");
|
||||||
var regSRD = new RegExp("^SOD","ig");
|
var regSRD = new RegExp("^SOD","ig");
|
||||||
var regSRAF = new RegExp("ALLFORCE","ig");
|
var regSRAF = new RegExp("ALLFORCE","ig");
|
||||||
|
var regTSU = new RegExp("TALKURLS","ig");
|
||||||
if (stereo_info.match(regSRC))
|
if (stereo_info.match(regSRC))
|
||||||
{
|
{
|
||||||
// stereo recording was started
|
// stereo recording was started
|
||||||
@@ -11802,7 +11805,11 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
var conf_rec_start_html = "<a href=\"#\" onclick=\"conf_send_stereo_recording('MonitorStereo','" + session_id + "','','','','YES');return false;\"><img src=\"./images/<?php echo _QXZ("$STstart_recording_GIF") ?>\" border=\"0\" alt=\"Start Stereo Recording\" /></a>";
|
var conf_rec_start_html = "<a href=\"#\" onclick=\"conf_send_stereo_recording('MonitorStereo','" + session_id + "','','','','YES');return false;\"><img src=\"./images/<?php echo _QXZ("$STstart_recording_GIF") ?>\" border=\"0\" alt=\"Start Stereo Recording\" /></a>";
|
||||||
document.getElementById("StRecorDControl").innerHTML = conf_rec_start_html;
|
document.getElementById("StRecorDControl").innerHTML = conf_rec_start_html;
|
||||||
}
|
}
|
||||||
|
if (talk_sec_url_info.match(regTSU))
|
||||||
|
{
|
||||||
|
talk_sec_url_secs = talk_sec_url_info.replace(regTSU, '');
|
||||||
|
// alert('talk_sec_url_secs: |' + talk_sec_url_secs + '|');
|
||||||
|
}
|
||||||
|
|
||||||
document.getElementById("ParkControl").innerHTML ="<a href=\"#\" onclick=\"mainxfer_send_redirect('ParK','" + lastcustchannel + "','" + lastcustserverip + "','','','','YES');return false;\"><img src=\"./images/<?php echo _QXZ("vdc_LB_parkcall.gif"); ?>\" border=\"0\" alt=\"Park Call\" /></a>";
|
document.getElementById("ParkControl").innerHTML ="<a href=\"#\" onclick=\"mainxfer_send_redirect('ParK','" + lastcustchannel + "','" + lastcustserverip + "','','','','YES');return false;\"><img src=\"./images/<?php echo _QXZ("vdc_LB_parkcall.gif"); ?>\" border=\"0\" alt=\"Park Call\" /></a>";
|
||||||
if ( (ivr_park_call=='ENABLED') || (ivr_park_call=='ENABLED_PARK_ONLY') )
|
if ( (ivr_park_call=='ENABLED') || (ivr_park_call=='ENABLED_PARK_ONLY') )
|
||||||
@@ -13439,6 +13446,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
manual_entry_dial=0;
|
manual_entry_dial=0;
|
||||||
SCRIPTweb_form_vars='';
|
SCRIPTweb_form_vars='';
|
||||||
SCRIPT2web_form_vars='';
|
SCRIPT2web_form_vars='';
|
||||||
|
talk_url_vars='';
|
||||||
MDcheck_for_answer=0;
|
MDcheck_for_answer=0;
|
||||||
leave_3way_start_recording_trigger=0;
|
leave_3way_start_recording_trigger=0;
|
||||||
leave_3way_start_recording_triggerCALL=0;
|
leave_3way_start_recording_triggerCALL=0;
|
||||||
@@ -14298,7 +14306,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
}
|
}
|
||||||
VDICstereo_recording = VDIC_data_VDIG[42];
|
VDICstereo_recording = VDIC_data_VDIG[42];
|
||||||
VDICstereo_recording_agent = VDIC_data_VDIG[43];
|
VDICstereo_recording_agent = VDIC_data_VDIG[43];
|
||||||
|
talk_sec_url_secs = VDIC_data_VDIG[44];
|
||||||
|
// alert("talk_sec_url_secs: |" + talk_sec_url_secs + "|");
|
||||||
var VDIC_data_VDFR=check_VDIC_array[3].split("|");
|
var VDIC_data_VDFR=check_VDIC_array[3].split("|");
|
||||||
if ( (VDIC_data_VDFR[1].length > 1) && (VDCL_fronter_display == 'Y') )
|
if ( (VDIC_data_VDFR[1].length > 1) && (VDCL_fronter_display == 'Y') )
|
||||||
{VDIC_fronter = " <?php echo _QXZ("Fronter:"); ?> " + VDIC_data_VDFR[0] + " - " + VDIC_data_VDFR[1];}
|
{VDIC_fronter = " <?php echo _QXZ("Fronter:"); ?> " + VDIC_data_VDFR[0] + " - " + VDIC_data_VDFR[1];}
|
||||||
@@ -15190,6 +15199,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
{CalL_ScripT_id_two = VDIC_data_VDIG[36];}
|
{CalL_ScripT_id_two = VDIC_data_VDIG[36];}
|
||||||
if (VDIC_data_VDIG[37].length > 0)
|
if (VDIC_data_VDIG[37].length > 0)
|
||||||
{CalL_ScripT_color_two = VDIC_data_VDIG[37];}
|
{CalL_ScripT_color_two = VDIC_data_VDIG[37];}
|
||||||
|
talk_sec_url_secs = VDIC_data_VDIG[38];
|
||||||
|
|
||||||
var VDIC_data_VDFR=check_VDIC_array[3].split("|");
|
var VDIC_data_VDFR=check_VDIC_array[3].split("|");
|
||||||
if ( (VDIC_data_VDFR[1].length > 1) && (VDCL_fronter_display == 'Y') )
|
if ( (VDIC_data_VDFR[1].length > 1) && (VDCL_fronter_display == 'Y') )
|
||||||
@@ -17890,6 +17900,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
leave_3way_start_recording_filename='';
|
leave_3way_start_recording_filename='';
|
||||||
three_way_call_cid = orig_three_way_call_cid;
|
three_way_call_cid = orig_three_way_call_cid;
|
||||||
APIskip=0;
|
APIskip=0;
|
||||||
|
talk_sec_url_secs='';
|
||||||
document.getElementById("BannerPanel").style.background = panel_bgcolor;
|
document.getElementById("BannerPanel").style.background = panel_bgcolor;
|
||||||
document.getElementById("BannerPanel").innerHTML = '';
|
document.getElementById("BannerPanel").innerHTML = '';
|
||||||
if (manual_auto_next > 0)
|
if (manual_auto_next > 0)
|
||||||
@@ -18123,6 +18134,52 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ################################################################################
|
||||||
|
// Send AJAX request to trigger the Talk Seconds URLs Trigger
|
||||||
|
function talk_sec_url_send(temp_talk_url_type,temp_call_seconds,temp_inOUT,temp_talk_url_vars)
|
||||||
|
{
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
TSUupdate_query = "server_ip=" + server_ip + "&session_name=" + session_name + "&ACTION=TALKsecURL&format=text&user=" + user + "&pass=" + pass + "&orig_pass=" + orig_pass + "&lead_id=" + document.vicidial_form.lead_id.value + "&campaign=" + campaign + "&auto_dial_level=" + auto_dial_level + "&agent_log_id=" + agent_log_id + "&list_id=" + document.vicidial_form.list_id.value + "&MDnextCID=" + LasTCID + "&stage=" + group + "&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 + "&agent_email=" + LOGemail + "&conf_exten=" + session_id + "&customer_server_ip=" + lastcustserverip + "&exten=" + extension + "&inOUT=" + inOUT + "&customer_sec=" + temp_call_seconds + "&group=" + group + "&original_phone_login=" + original_phone_login + "&phone_pass=" + phone_pass + "";
|
||||||
|
xmlhttp.open('POST', 'vdc_db_query.php');
|
||||||
|
xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
|
||||||
|
xmlhttp.send(TSUupdate_query);
|
||||||
|
xmlhttp.onreadystatechange = function()
|
||||||
|
{
|
||||||
|
// document.getElementById("debugbottomspan").innerHTML = TSUupdate_query + "\n" + xmlhttp.responseText;
|
||||||
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
|
||||||
|
{
|
||||||
|
// alert(xmlhttp.responseText);
|
||||||
|
var check_talk_sec_url_received = null;
|
||||||
|
check_talk_sec_url_received = xmlhttp.responseText;
|
||||||
|
var check_DT_array=check_talk_sec_url_received.split("\n");
|
||||||
|
agent_events('talk_sec_url_send received', LasTCID, aec); aec++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
delete xmlhttp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ################################################################################
|
// ################################################################################
|
||||||
// Submit the URLs
|
// Submit the URLs
|
||||||
function SendURLs(newurlids,newurltype)
|
function SendURLs(newurlids,newurltype)
|
||||||
@@ -19836,6 +19893,8 @@ else
|
|||||||
{web_form_vars_two = web_form_varsX;}
|
{web_form_vars_two = web_form_varsX;}
|
||||||
if (webformnumber == '3')
|
if (webformnumber == '3')
|
||||||
{web_form_vars_three = web_form_varsX;}
|
{web_form_vars_three = web_form_varsX;}
|
||||||
|
if (webformnumber == '9')
|
||||||
|
{talk_url_vars = web_form_varsX;}
|
||||||
|
|
||||||
var SCvendor_lead_code = encodeURIComponent(document.vicidial_form.vendor_lead_code.value);
|
var SCvendor_lead_code = encodeURIComponent(document.vicidial_form.vendor_lead_code.value);
|
||||||
var SCsource_id = source_id;
|
var SCsource_id = source_id;
|
||||||
@@ -22434,6 +22493,20 @@ function phone_number_format(formatphone) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// Check for Talk URLs trigger seconds talk_sec_url_secs
|
||||||
|
if ( (talk_sec_url_secs.length > 0) && (CheckDEADcallON < 1) )
|
||||||
|
{
|
||||||
|
var temp_tsc = '-' + VD_live_call_secondS + '-';
|
||||||
|
var regTSC = new RegExp(temp_tsc,"g");
|
||||||
|
if (talk_sec_url_secs.match(regTSC))
|
||||||
|
{
|
||||||
|
// alert('Talk Sec URL Trigger: |' + VD_live_call_secondS + '| |' + talk_sec_url_secs + '|');
|
||||||
|
// Gather lead and call variables, save them to 'talk_url_vars' variable
|
||||||
|
// URLDecode('','NO','DEFAULT','9');
|
||||||
|
// Send Talk Sec URL trigger for VD_live_call_secondS seconds
|
||||||
|
talk_sec_url_send('TALK_SEC_TRIGGER',VD_live_call_secondS,inOUT,talk_url_vars);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (XD_live_customer_call==1)
|
if (XD_live_customer_call==1)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6285,12 +6285,13 @@ if ($SSscript_remove_js > 0)
|
|||||||
# 250806-0841 - Added manual_dial_lead_id user setting, and new 'ONLY' option for campaign setting
|
# 250806-0841 - Added manual_dial_lead_id user setting, and new 'ONLY' option for campaign setting
|
||||||
# 250808-1120 - Added agent_man_dial_filter & agent_3way_dial_filter system settings
|
# 250808-1120 - Added agent_man_dial_filter & agent_3way_dial_filter system settings
|
||||||
# 250822-2056 - Added system/campaign/ingroup settings for stereo_recording
|
# 250822-2056 - Added system/campaign/ingroup settings for stereo_recording
|
||||||
|
# 250922-0841 - Added Talk Seconds URL links to multi-url admin page in campaigns and in-groups
|
||||||
#
|
#
|
||||||
|
|
||||||
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time
|
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time
|
||||||
|
|
||||||
$admin_version = '2.14-943a';
|
$admin_version = '2.14-944a';
|
||||||
$build = '250822-2056';
|
$build = '250922-0841';
|
||||||
|
|
||||||
$STARTtime = date("U");
|
$STARTtime = date("U");
|
||||||
$SQLdate = date("Y-m-d H:i:s");
|
$SQLdate = date("Y-m-d H:i:s");
|
||||||
@@ -29317,6 +29318,16 @@ if ($ADD==31)
|
|||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Call URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#campaigns-na_call_url$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Call URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#campaigns-na_call_url$NWE</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$campaign_id' and entry_type='campaign' and url_type='talk';";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$vum_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($vum_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
$vum_count = $rowx[0];
|
||||||
|
}
|
||||||
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right><a href=\"admin_url_multi.php?DB=$DB&campaign_id=$campaign_id&entry_type=campaign&url_type=talk\">"._QXZ("Talk Seconds URLs")."</a>: </td><td align=left>$NWB#campaigns-talk_sec_url$NWE <a href=\"admin_url_multi.php?DB=$DB&campaign_id=$campaign_id&entry_type=campaign&url_type=talk\"> "._QXZ("Talk Seconds URLs Defined").": $vum_count</a></td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Extension Append CID").": </td><td align=left><select size=1 name=extension_appended_cidname><option value='Y'>"._QXZ("Y")."</option><option value='N'>"._QXZ("N")."</option><option value='Y_USER'>"._QXZ("Y_USER")."</option><option value='Y_WITH_CAMPAIGN'>"._QXZ("Y_WITH_CAMPAIGN")."</option><option value='Y_USER_WITH_CAMPAIGN'>"._QXZ("Y_USER_WITH_CAMPAIGN")."</option><option value='$extension_appended_cidname' SELECTED>"._QXZ("$extension_appended_cidname")."</option></select>$NWB#campaigns-extension_appended_cidname$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Extension Append CID").": </td><td align=left><select size=1 name=extension_appended_cidname><option value='Y'>"._QXZ("Y")."</option><option value='N'>"._QXZ("N")."</option><option value='Y_USER'>"._QXZ("Y_USER")."</option><option value='Y_WITH_CAMPAIGN'>"._QXZ("Y_WITH_CAMPAIGN")."</option><option value='Y_USER_WITH_CAMPAIGN'>"._QXZ("Y_USER_WITH_CAMPAIGN")."</option><option value='$extension_appended_cidname' SELECTED>"._QXZ("$extension_appended_cidname")."</option></select>$NWB#campaigns-extension_appended_cidname$NWE</td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Blind Monitor Warning").": </td><td align=left><select size=1 name=blind_monitor_warning><option value='DISABLED'>"._QXZ("DISABLED")."</option><option value='ALERT'>"._QXZ("ALERT")."</option><option value='NOTICE'>"._QXZ("NOTICE")."</option><option value='AUDIO'>"._QXZ("AUDIO")."</option><option value='ALERT_NOTICE'>"._QXZ("ALERT_NOTICE")."</option><option value='ALERT_AUDIO'>"._QXZ("ALERT_AUDIO")."</option><option value='NOTICE_AUDIO'>"._QXZ("NOTICE_AUDIO")."</option><option value='ALL'>"._QXZ("ALL")."</option><option value='$blind_monitor_warning' SELECTED>"._QXZ("$blind_monitor_warning")."</option></select>$NWB#campaigns-blind_monitor_warning$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Blind Monitor Warning").": </td><td align=left><select size=1 name=blind_monitor_warning><option value='DISABLED'>"._QXZ("DISABLED")."</option><option value='ALERT'>"._QXZ("ALERT")."</option><option value='NOTICE'>"._QXZ("NOTICE")."</option><option value='AUDIO'>"._QXZ("AUDIO")."</option><option value='ALERT_NOTICE'>"._QXZ("ALERT_NOTICE")."</option><option value='ALERT_AUDIO'>"._QXZ("ALERT_AUDIO")."</option><option value='NOTICE_AUDIO'>"._QXZ("NOTICE_AUDIO")."</option><option value='ALL'>"._QXZ("ALL")."</option><option value='$blind_monitor_warning' SELECTED>"._QXZ("$blind_monitor_warning")."</option></select>$NWB#campaigns-blind_monitor_warning$NWE</td></tr>\n";
|
||||||
@@ -35284,6 +35295,28 @@ if ($ADD==3111)
|
|||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Call URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#inbound_groups-na_call_url$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Call URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#inbound_groups-na_call_url$NWE</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# get count of talk seconds urls in this In-Group
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk';";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$vum_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($vum_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
$vum_count = $rowx[0];
|
||||||
|
}
|
||||||
|
# check if this In-Group has talk seconds url set to -FORCEDISABLE-
|
||||||
|
$force_disableHTML='';
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk' and active='N' and url_address LIKE \"%FORCEDISABLE%\";";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$fdtsu_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($fdtsu_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
if ($rowx[0] > 0)
|
||||||
|
{$force_disableHTML="<font color='red'><b>FORCED DISABLE</b></font>";}
|
||||||
|
}
|
||||||
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right><a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\">"._QXZ("Talk Seconds URLs")."</a>: </td><td align=left>$NWB#inbound_groups-talk_sec_url$NWE <a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\"> "._QXZ("Talk Seconds URLs Defined").": $vum_count</a> $force_disableHTML</td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right nowrap>"._QXZ("Waiting Call URL On").": </td><td align=left><input type=text name=waiting_call_url_on size=70 maxlength=5000 value=\"$waiting_call_url_on\">$NWB#inbound_groups-waiting_call_url_on$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right nowrap>"._QXZ("Waiting Call URL On").": </td><td align=left><input type=text name=waiting_call_url_on size=70 maxlength=5000 value=\"$waiting_call_url_on\">$NWB#inbound_groups-waiting_call_url_on$NWE</td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right nowrap>"._QXZ("Waiting Call URL Off").": </td><td align=left><input type=text name=waiting_call_url_off size=70 maxlength=5000 value=\"$waiting_call_url_off\">$NWB#inbound_groups-waiting_call_url_on$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right nowrap>"._QXZ("Waiting Call URL Off").": </td><td align=left><input type=text name=waiting_call_url_off size=70 maxlength=5000 value=\"$waiting_call_url_off\">$NWB#inbound_groups-waiting_call_url_on$NWE</td></tr>\n";
|
||||||
@@ -36303,6 +36336,28 @@ if ($ADD==3811)
|
|||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Dispo Email URL").": </td><td align=left><input type=text name=dispo_call_url size=70 maxlength=5000 value=\"$dispo_call_url\">$NWB#inbound_groups-dispo_email_url$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("Dispo Email URL").": </td><td align=left><input type=text name=dispo_call_url size=70 maxlength=5000 value=\"$dispo_call_url\">$NWB#inbound_groups-dispo_email_url$NWE</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# get count of talk seconds urls in this In-Group
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk';";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$vum_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($vum_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
$vum_count = $rowx[0];
|
||||||
|
}
|
||||||
|
# check if this In-Group has talk seconds url set to -FORCEDISABLE-
|
||||||
|
$force_disableHTML='';
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk' and active='N' and url_address LIKE \"%FORCEDISABLE%\";";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$fdtsu_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($fdtsu_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
if ($rowx[0] > 0)
|
||||||
|
{$force_disableHTML="<font color='red'><b>FORCED DISABLE</b></font>";}
|
||||||
|
}
|
||||||
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right><a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\">"._QXZ("Talk Seconds URLs")."</a>: </td><td align=left>$NWB#inbound_groups-talk_sec_url$NWE <a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\"> "._QXZ("Talk Seconds URLs Defined").": $vum_count</a> $force_disableHTML</td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Custom 1").": </td><td align=left><input type=text name=custom_one id=custom_one size=40 maxlength=2000 value=\"$custom_one\"> $NWB#inbound_groups-custom_fields$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Custom 1").": </td><td align=left><input type=text name=custom_one id=custom_one size=40 maxlength=2000 value=\"$custom_one\"> $NWB#inbound_groups-custom_fields$NWE</td></tr>\n";
|
||||||
|
|
||||||
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Custom 2").": </td><td align=left><input type=text name=custom_two id=custom_two size=40 maxlength=2000 value=\"$custom_two\"> $NWB#inbound_groups-custom_fields$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row3_background><td align=right>"._QXZ("Custom 2").": </td><td align=left><input type=text name=custom_two id=custom_two size=40 maxlength=2000 value=\"$custom_two\"> $NWB#inbound_groups-custom_fields$NWE</td></tr>\n";
|
||||||
@@ -37181,6 +37236,29 @@ if ($ADD==3911)
|
|||||||
{
|
{
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Chat URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#inbound_groups-na_chat_url$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>"._QXZ("No Agent Chat URL").": </td><td align=left><input type=text name=na_call_url size=70 maxlength=5000 value=\"$na_call_url\">$NWB#inbound_groups-na_chat_url$NWE</td></tr>\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# get count of talk seconds urls in this In-Group
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk';";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$vum_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($vum_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
$vum_count = $rowx[0];
|
||||||
|
}
|
||||||
|
# check if this In-Group has talk seconds url set to -FORCEDISABLE-
|
||||||
|
$force_disableHTML='';
|
||||||
|
$stmt="SELECT count(*) from vicidial_url_multi where campaign_id='$group_id' and entry_type='ingroup' and url_type='talk' and active='N' and url_address LIKE \"%FORCEDISABLE%\";";
|
||||||
|
$rslt=mysql_to_mysqli($stmt, $link);
|
||||||
|
$fdtsu_to_print = mysqli_num_rows($rslt);
|
||||||
|
if ($fdtsu_to_print > 0)
|
||||||
|
{
|
||||||
|
$rowx=mysqli_fetch_row($rslt);
|
||||||
|
if ($rowx[0] > 0)
|
||||||
|
{$force_disableHTML="<font color='red'><b>FORCED DISABLE</b></font>";}
|
||||||
|
}
|
||||||
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right><a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\">"._QXZ("Talk Seconds URLs")."</a>: </td><td align=left>$NWB#inbound_groups-talk_sec_url$NWE <a href=\"admin_url_multi.php?DB=$DB&campaign_id=$group_id&entry_type=ingroup&url_type=talk\"> "._QXZ("Talk Seconds URLs Defined").": $vum_count</a> $force_disableHTML</td></tr>\n";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>Extension Append CID: </td><td align=left><select size=1 name=extension_appended_cidname><option>"._QXZ("Y")."</option><option>N</option><option SELECTED>$extension_appended_cidname</option></select>$NWB#inbound_groups-extension_appended_cidname$NWE</td></tr>\n";
|
echo "<tr bgcolor=#$SSstd_row4_background><td align=right>Extension Append CID: </td><td align=left><select size=1 name=extension_appended_cidname><option>"._QXZ("Y")."</option><option>N</option><option SELECTED>$extension_appended_cidname</option></select>$NWB#inbound_groups-extension_appended_cidname$NWE</td></tr>\n";
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
# admin_url_multi.php
|
# admin_url_multi.php
|
||||||
#
|
#
|
||||||
# Copyright (C) 2022 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
# Copyright (C) 2025 Matt Florell <vicidial@gmail.com> LICENSE: AGPLv2
|
||||||
#
|
#
|
||||||
# this screen will control the *url* settings needed when the Campaign or
|
# this screen will control the *url* settings needed when the Campaign or
|
||||||
# In-Group or List URL setting is set to "ALT". This screen allows for multiple
|
# In-Group or List URL setting is set to "ALT". This screen allows for multiple
|
||||||
@@ -19,10 +19,11 @@
|
|||||||
# 211117-2006 - Added minimum call length field
|
# 211117-2006 - Added minimum call length field
|
||||||
# 220127-1900 - Added display of the URL ID
|
# 220127-1900 - Added display of the URL ID
|
||||||
# 220222-1959 - Added allow_web_debug system setting
|
# 220222-1959 - Added allow_web_debug system setting
|
||||||
|
# 250920-2202 - Added talk_sec_urls
|
||||||
#
|
#
|
||||||
|
|
||||||
$admin_version = '2.14-9';
|
$admin_version = '2.14-10';
|
||||||
$build = '220222-1959';
|
$build = '250920-2202';
|
||||||
|
|
||||||
require("dbconnect_mysqli.php");
|
require("dbconnect_mysqli.php");
|
||||||
require("functions.php");
|
require("functions.php");
|
||||||
@@ -235,6 +236,8 @@ if ($entry_type == 'campaign')
|
|||||||
{$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' and start_call_url='ALT';";}
|
{$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' and start_call_url='ALT';";}
|
||||||
elseif ($url_type == 'noagent')
|
elseif ($url_type == 'noagent')
|
||||||
{$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' and na_call_url='ALT';";}
|
{$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id' and na_call_url='ALT';";}
|
||||||
|
elseif ($url_type == 'talk')
|
||||||
|
{$stmt="SELECT count(*) from vicidial_campaigns where campaign_id='$campaign_id';";}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
echo _QXZ("ERROR: no valid url type defined:") . $url_type;
|
echo _QXZ("ERROR: no valid url type defined:") . $url_type;
|
||||||
@@ -256,6 +259,8 @@ elseif ($entry_type == 'ingroup')
|
|||||||
{$stmt="SELECT count(*) from vicidial_inbound_groups where group_id='$campaign_id' and na_call_url='ALT';";}
|
{$stmt="SELECT count(*) from vicidial_inbound_groups where group_id='$campaign_id' and na_call_url='ALT';";}
|
||||||
elseif ($url_type == 'addlead')
|
elseif ($url_type == 'addlead')
|
||||||
{$stmt="SELECT count(*) from vicidial_inbound_groups where group_id='$campaign_id' and add_lead_url='ALT';";}
|
{$stmt="SELECT count(*) from vicidial_inbound_groups where group_id='$campaign_id' and add_lead_url='ALT';";}
|
||||||
|
elseif ($url_type == 'talk')
|
||||||
|
{$stmt="SELECT count(*) from vicidial_inbound_groups where group_id='$campaign_id';";}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
echo _QXZ("ERROR: no valid url type defined:") . $url_type;
|
echo _QXZ("ERROR: no valid url type defined:") . $url_type;
|
||||||
@@ -291,6 +296,8 @@ elseif ($url_type == 'noagent')
|
|||||||
{$url_type_text='No Agent Call';}
|
{$url_type_text='No Agent Call';}
|
||||||
elseif ($url_type == 'addlead')
|
elseif ($url_type == 'addlead')
|
||||||
{$url_type_text='Add Lead';}
|
{$url_type_text='Add Lead';}
|
||||||
|
elseif ($url_type == 'talk')
|
||||||
|
{$url_type_text='Talk Seconds';}
|
||||||
else
|
else
|
||||||
{$url_type_text='Error';}
|
{$url_type_text='Error';}
|
||||||
|
|
||||||
@@ -457,16 +464,25 @@ if ($action == "URL_MULTI_DELETE")
|
|||||||
##### BEGIN URL multi control form
|
##### BEGIN URL multi control form
|
||||||
if ($action == "BLANK")
|
if ($action == "BLANK")
|
||||||
{
|
{
|
||||||
|
$min_length_text = 'MIN LENGTH';
|
||||||
|
$statuses_text = 'STATUSES';
|
||||||
|
if ( ($url_type == 'start') or ($url_type == 'noagent') or ($url_type == 'addlead') )
|
||||||
|
{$min_length_text = 'NOT USED';}
|
||||||
|
if ( ($url_type == 'start') or ($url_type == 'noagent') or ($url_type == 'addlead') or ($url_type == 'talk') )
|
||||||
|
{$statuses_text = 'NOT USED';}
|
||||||
$bgcolor='bgcolor="#'. $SSstd_row2_background .'"';
|
$bgcolor='bgcolor="#'. $SSstd_row2_background .'"';
|
||||||
echo "<TABLE><TR><TD>\n";
|
echo "<TABLE><TR><TD>\n";
|
||||||
echo "<FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>";
|
echo "<FONT FACE=\"ARIAL,HELVETICA\" COLOR=BLACK SIZE=2>";
|
||||||
echo "<br>"._QXZ("Alternate URL Form");
|
echo "<br>"._QXZ("Alternate URL Form");
|
||||||
echo "<center><TABLE width=1020 cellspacing=3>\n";
|
echo "<center><TABLE width=1020 cellspacing=3>\n";
|
||||||
echo "<tr><td align=center colspan=2>\n";
|
echo "<tr><td align=center colspan=2>\n";
|
||||||
echo "<br><b>"._QXZ("Alternate %1s URLs for %2s",0,'',$url_type_text,$entry_type).": <a href=\"./admin.php?$mod_link$campaign_id\">$campaign_id</a></b> $NWB#alt_multi_urls$NWE\n";
|
echo "<br><b>";
|
||||||
|
if (!preg_match("/talk/",$url_type))
|
||||||
|
{echo _QXZ("Alternate");}
|
||||||
|
echo _QXZ(" %1s URLs for %2s",0,'',$url_type_text,$entry_type).": <a href=\"./admin.php?$mod_link$campaign_id\">$campaign_id</a></b> $NWB#alt_multi_urls$NWE\n";
|
||||||
|
|
||||||
echo "<TABLE width=1000 cellspacing=3>\n";
|
echo "<TABLE width=1000 cellspacing=3>\n";
|
||||||
echo "<tr><td><font size=2><b>#</td><td NOWRAP><font size=1>URL ID</td><td><font size=2><b>"._QXZ("ACTIVE")."</td><td><font size=2><b>"._QXZ("RANK")."</td><td><font size=2><b>"._QXZ("STATUSES")."</td><td><font size=2><b>"._QXZ("LISTS")."</td><td><font size=2><b>"._QXZ("MIN LENGTH")."</td><td><font size=2><b>"._QXZ("DESCRIPTION")."</td><td><font size=2><b>"._QXZ("SUBMIT")."</td></tr>\n";
|
echo "<tr><td><font size=2><b>#</td><td NOWRAP><font size=1>URL ID</td><td><font size=2><b>"._QXZ("ACTIVE")."</td><td><font size=2><b>"._QXZ("RANK")."</td><td><font size=2><b>"._QXZ("$statuses_text")."</td><td><font size=2><b>"._QXZ("LISTS")."</td><td><font size=2><b>"._QXZ("$min_length_text")."</td><td><font size=2><b>"._QXZ("DESCRIPTION")."</td><td><font size=2><b>"._QXZ("SUBMIT")."</td></tr>\n";
|
||||||
|
|
||||||
$stmt="SELECT url_id,active,url_rank,url_statuses,url_description,url_address,url_lists,url_call_length from vicidial_url_multi where campaign_id='$campaign_id' and entry_type='$entry_type' and url_type='$url_type' order by url_rank limit 1000;";
|
$stmt="SELECT url_id,active,url_rank,url_statuses,url_description,url_address,url_lists,url_call_length from vicidial_url_multi where campaign_id='$campaign_id' and entry_type='$entry_type' and url_type='$url_type' order by url_rank limit 1000;";
|
||||||
if ($DB) {echo "$stmt\n";}
|
if ($DB) {echo "$stmt\n";}
|
||||||
@@ -521,6 +537,8 @@ if ($action == "BLANK")
|
|||||||
echo "</form>\n";
|
echo "</form>\n";
|
||||||
echo "</tr>\n";
|
echo "</tr>\n";
|
||||||
}
|
}
|
||||||
|
if ($types_to_print < 1)
|
||||||
|
{echo "<tr bgcolor='#". $SSstd_row2_background ."'><td colspan=9> "._QXZ("No URLs added here yet")."</td></tr>";}
|
||||||
echo "</table></center><br>\n";
|
echo "</table></center><br>\n";
|
||||||
|
|
||||||
|
|
||||||
@@ -537,7 +555,7 @@ if ($action == "BLANK")
|
|||||||
echo "<input type=hidden name=active value=\"N\">\n";
|
echo "<input type=hidden name=active value=\"N\">\n";
|
||||||
echo "<input type=hidden name=action value=URL_MULTI_NEW>\n";
|
echo "<input type=hidden name=action value=URL_MULTI_NEW>\n";
|
||||||
echo "<td><font size=1>"._QXZ("RANK").": <input type=text size=4 maxlength=3 name=url_rank value=\"\"></td>";
|
echo "<td><font size=1>"._QXZ("RANK").": <input type=text size=4 maxlength=3 name=url_rank value=\"\"></td>";
|
||||||
echo "<td><font size=1>"._QXZ("STATUSES").": <input type=text size=30 maxlength=1000 name=url_statuses value=\"\"></td>";
|
echo "<td><font size=1>"._QXZ("STATUSES").": <input type=text size=30 maxlength=1000 name=url_statuses value=\"---ALL---\"></td>";
|
||||||
echo "<td><font size=1>"._QXZ("DESCRIPTION").": <input type=text size=30 maxlength=255 name=url_description value=\"\"></td>";
|
echo "<td><font size=1>"._QXZ("DESCRIPTION").": <input type=text size=30 maxlength=255 name=url_description value=\"\"></td>";
|
||||||
echo "<td rowspan=2><font size=1><input type=submit name=SUBMIT value='"._QXZ("SUBMIT")."'></td>";
|
echo "<td rowspan=2><font size=1><input type=submit name=SUBMIT value='"._QXZ("SUBMIT")."'></td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
@@ -555,7 +573,7 @@ if ($action == "BLANK")
|
|||||||
|
|
||||||
$ENDtime = date("U");
|
$ENDtime = date("U");
|
||||||
$RUNtime = ($ENDtime - $STARTtime);
|
$RUNtime = ($ENDtime - $STARTtime);
|
||||||
echo "\n\n\n<br><br><br>\n<font size=1> "._QXZ("runtime").": $RUNtime "._QXZ("seconds")." "._QXZ("Version").": $admin_version "._QXZ("Build").": $build</font>";
|
echo "\n\n\n<br><br><br>\n<font size=1> "._QXZ("runtime").": $RUNtime "._QXZ("seconds")." "._QXZ("Version").": $admin_version "._QXZ("Build").": $build</font>";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# version: 20250917172301
|
# version: 20250920221701
|
||||||
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 20 digits in length, Must be at least 2 characters in length. We strongly recommend not reusing user accounts for different users, for reporting accuracy. To disable a user account, set the Active option to -N-.</QXZ>
|
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 20 digits in length, Must be at least 2 characters in length. We strongly recommend not reusing user accounts for different users, for reporting accuracy. To disable a user account, set the Active option to -N-.</QXZ>
|
||||||
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length, unless the User Password Minimum Length system setting is enabled, which will require a longer password. Only letters and numbers are allowed in user passwords. 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-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length, unless the User Password Minimum Length system setting is enabled, which will require a longer password. Only letters and numbers are allowed in user passwords. 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 or the agent screen. Default is N.</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 or the agent screen. Default is N.</QXZ>
|
||||||
@@ -432,6 +432,7 @@ campaigns-crm_login_address CRM Popup Address <QXZ>The web address of a CRM logi
|
|||||||
campaigns-start_call_url Start Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. This URL can NOT be a relative path. For Manual dial calls, the Start Call URL will be sent when the call is placed. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action.</QXZ>
|
campaigns-start_call_url Start Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. This URL can NOT be a relative path. For Manual dial calls, the Start Call URL will be sent when the call is placed. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action.</QXZ>
|
||||||
campaigns-dispo_call_url Dispo Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is dispositioned by an agent if it is populated. Uses the same variables as the web form fields and scripts. dispo, callback_lead_status, talk_time and term_reason are the variables you can use to retrieve the agent-defined disposition for the call and the actual talk time in seconds of the call as well as how the call was ended. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
campaigns-dispo_call_url Dispo Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is dispositioned by an agent if it is populated. Uses the same variables as the web form fields and scripts. dispo, callback_lead_status, talk_time and term_reason are the variables you can use to retrieve the agent-defined disposition for the call and the actual talk time in seconds of the call as well as how the call was ended. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
||||||
campaigns-na_call_url No Agent Call URL <QXZ>This web URL address is not seen by the agent, but if it is populated it is called every time a call that is not handled by an agent is hung up or transferred. Uses the same variables as the web form fields and scripts. --A--dispo--B-- can be used to retrieve the system-defined disposition for the call. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>Custom Fields are not available with this feature. If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
campaigns-na_call_url No Agent Call URL <QXZ>This web URL address is not seen by the agent, but if it is populated it is called every time a call that is not handled by an agent is hung up or transferred. Uses the same variables as the web form fields and scripts. --A--dispo--B-- can be used to retrieve the system-defined disposition for the call. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>Custom Fields are not available with this feature. If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
||||||
|
campaigns-talk_sec_url Talk Seconds URLs <QXZ>This feature allows you to define URLs that can be triggered by the Agent Screen when the agent is talking to the customer based upon how many seconds they have been talking. If the customer hangs up, then no more Talk Seconds URLs will be triggered. To define these Talk Seconds URLs, just click on the link to the right.</QXZ>
|
||||||
campaigns-agent_allow_group_alias Group Alias Allowed <QXZ>If you want to allow your agents to use group aliases then you need to set this to Y. Group Aliases are explained more in the Admin section, they allow agents to select different callerIDs for outbound manual calls that they may place. Default is N.</QXZ>
|
campaigns-agent_allow_group_alias Group Alias Allowed <QXZ>If you want to allow your agents to use group aliases then you need to set this to Y. Group Aliases are explained more in the Admin section, they allow agents to select different callerIDs for outbound manual calls that they may place. Default is N.</QXZ>
|
||||||
campaigns-default_group_alias Default Group Alias <QXZ>If you have allowed Group Aliases then this is the group alias that is selected first by default when the agent chooses to use a Group Alias for an outbound manual call. Default is NONE or empty.</QXZ>
|
campaigns-default_group_alias Default Group Alias <QXZ>If you have allowed Group Aliases then this is the group alias that is selected first by default when the agent chooses to use a Group Alias for an outbound manual call. Default is NONE or empty.</QXZ>
|
||||||
campaigns-calls_inqueue_count Calls In Queue Count Display <QXZ>This setting, if set to a valid CALLS_IN_QUEUE_COUNT type Settings Container, will change the display at the top of the agent screen to a specific filtered count of the calls in queue, replacing the default display of the count of every call waiting in queue that the agent has permissions to handle. If both of these settings are enabled, the first one will display before the second one. If you use an EXCEPT option, the exception container cannot also use an EXCEPT option. Default is ---DISABLED---. The CALLS_IN_QUEUE_COUNT type Settings Container should have -HEADING=>Display Name- as its first line, without the dashes, and then either a list of In-Groups and Campaigns, or one of the following special options,<BR>--ALL-IN-GROUP-CALLS--<BR>--ALL-CAMPAIGN-CALLS--<BR>--ALL-CALLS--<BR>--ALL-IN-GROUP-CALLS-EXCEPT=container_id<BR>--ALL-CAMPAIGN-CALLS-EXCEPT=container_id<BR>--ALL-CALLS-EXCEPT=container_id</QXZ>
|
campaigns-calls_inqueue_count Calls In Queue Count Display <QXZ>This setting, if set to a valid CALLS_IN_QUEUE_COUNT type Settings Container, will change the display at the top of the agent screen to a specific filtered count of the calls in queue, replacing the default display of the count of every call waiting in queue that the agent has permissions to handle. If both of these settings are enabled, the first one will display before the second one. If you use an EXCEPT option, the exception container cannot also use an EXCEPT option. Default is ---DISABLED---. The CALLS_IN_QUEUE_COUNT type Settings Container should have -HEADING=>Display Name- as its first line, without the dashes, and then either a list of In-Groups and Campaigns, or one of the following special options,<BR>--ALL-IN-GROUP-CALLS--<BR>--ALL-CAMPAIGN-CALLS--<BR>--ALL-CALLS--<BR>--ALL-IN-GROUP-CALLS-EXCEPT=container_id<BR>--ALL-CAMPAIGN-CALLS-EXCEPT=container_id<BR>--ALL-CALLS-EXCEPT=container_id</QXZ>
|
||||||
@@ -691,6 +692,7 @@ inbound_groups-enter_ingroup_url Enter In-Group URL <QXZ>This web URL address is
|
|||||||
inbound_groups-start_call_url Start Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action.</QXZ>
|
inbound_groups-start_call_url Start Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is sent to an agent if it is populated. Uses the same variables as the web form fields and scripts. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action.</QXZ>
|
||||||
inbound_groups-dispo_call_url Dispo Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is dispositioned by an agent if it is populated. Uses the same variables as the web form fields and scripts. dispo, talk_time and term_reason are the variables you can use to retrieve the agent-defined disposition for the call and the actual talk time in seconds of the call as well as how the call was ended. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ> <QXZ>If you want the campaign Dispo Call URL to be used for inbound calls, then put CAMP into this field.</QXZ>
|
inbound_groups-dispo_call_url Dispo Call URL <QXZ>This web URL address is not seen by the agent, but it is called every time a call is dispositioned by an agent if it is populated. Uses the same variables as the web form fields and scripts. dispo, talk_time and term_reason are the variables you can use to retrieve the agent-defined disposition for the call and the actual talk time in seconds of the call as well as how the call was ended. Default is blank.</QXZ> <QXZ>If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ> <QXZ>If you want the campaign Dispo Call URL to be used for inbound calls, then put CAMP into this field.</QXZ>
|
||||||
inbound_groups-na_call_url No Agent Call URL <QXZ>This web URL address is not seen by the agent, but if it is populated it is called every time a call that is not handled by an agent is hung up or transferred. Uses the same variables as the web form fields and scripts. --A--dispo--B-- can be used to retrieve the system-defined disposition for the call. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>Custom Fields are not available with this feature. If the Wait time, On-Hold Prompt or other settings are not set properly in this In-Group, then this feature may not function properly. If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
inbound_groups-na_call_url No Agent Call URL <QXZ>This web URL address is not seen by the agent, but if it is populated it is called every time a call that is not handled by an agent is hung up or transferred. Uses the same variables as the web form fields and scripts. --A--dispo--B-- can be used to retrieve the system-defined disposition for the call. This URL can NOT be a relative path. Default is blank.</QXZ> <QXZ>Custom Fields are not available with this feature. If the Wait time, On-Hold Prompt or other settings are not set properly in this In-Group, then this feature may not function properly. If you put ALT into this field and submit this form, you will be able to go to a separate page where you can define multiple URLs for this action as well as specific statuses that will trigger them.</QXZ>
|
||||||
|
inbound_groups-talk_sec_url Talk Seconds URLs <QXZ>This feature allows you to define URLs that can be triggered by the Agent Screen when the agent is talking to the customer based upon how many seconds they have been talking. If the customer hangs up, then no more Talk Seconds URLs will be triggered. To define these Talk Seconds URLs, just click on the link to the right. If there are no active Talk Seconds URLs defined for an In-Group, then the Campaign Talk Seconds URLs for the campaign the agent is logged into will be used for those In-Group calls. If you want to ensure that the Campaign Talk Seconds URLs are not used for this In-Group, then you can create a Talk Seconds URLs entry for the In-Group that has Active set to -N- and the URL set to -FORCEDISABLE-.</QXZ>
|
||||||
inbound_groups-waiting_call_url_on Waiting Call URL On <QXZ>This feature allows you to trigger a URL when there are calls waiting in this In-Group. The -On- URL will be sent the first time a call is waiting, and no more will be sent as long as there are still calls from this In-Group waiting in the queue. The -Off- URL will be sent as soon as there are no calls waiting for this In-Group anymore. This feature was created to allow for a remote power switch to be triggered to light up a flashing light to notify agents in a call center room that there were calls waiting for them. For this feature to work, both the -On- and -Off- URLs must be filled in. Default is -empty- for disabled.</QXZ>
|
inbound_groups-waiting_call_url_on Waiting Call URL On <QXZ>This feature allows you to trigger a URL when there are calls waiting in this In-Group. The -On- URL will be sent the first time a call is waiting, and no more will be sent as long as there are still calls from this In-Group waiting in the queue. The -Off- URL will be sent as soon as there are no calls waiting for this In-Group anymore. This feature was created to allow for a remote power switch to be triggered to light up a flashing light to notify agents in a call center room that there were calls waiting for them. For this feature to work, both the -On- and -Off- URLs must be filled in. Default is -empty- for disabled.</QXZ>
|
||||||
inbound_groups-add_lead_url Add Lead URL <QXZ>This web URL address is not seen by the agent, but it is called every time a lead is added to the system through the inbound process. Default is blank. You must begin this URL with VAR if you want to use variables, and of course --A-- and --B-- around the actual variable in the URL where you want to use it. Here is the list of variables that are available for this function. lead_id, vendor_lead_code, list_id, phone_number, phone_code, did_id, did_extension, did_pattern, did_description, uniqueid</QXZ>
|
inbound_groups-add_lead_url Add Lead URL <QXZ>This web URL address is not seen by the agent, but it is called every time a lead is added to the system through the inbound process. Default is blank. You must begin this URL with VAR if you want to use variables, and of course --A-- and --B-- around the actual variable in the URL where you want to use it. Here is the list of variables that are available for this function. lead_id, vendor_lead_code, list_id, phone_number, phone_code, did_id, did_extension, did_pattern, did_description, uniqueid</QXZ>
|
||||||
inbound_groups-add_lead_timezone Add Lead Timezone <QXZ>This is the method that the system will use to determine the current timezone when a lead is created when a call is being routed through this in-group. SERVER will use the current timezone of the server. PHONE_CODE_AREACODE will look up the timezone based on the phone code set in the lead and the areacode of the phone number. Default is SERVER.</QXZ>
|
inbound_groups-add_lead_timezone Add Lead Timezone <QXZ>This is the method that the system will use to determine the current timezone when a lead is created when a call is being routed through this in-group. SERVER will use the current timezone of the server. PHONE_CODE_AREACODE will look up the timezone based on the phone code set in the lead and the areacode of the phone number. Default is SERVER.</QXZ>
|
||||||
@@ -1484,7 +1486,7 @@ cb-bulk-newlist Transfer to List ID <QXZ>The list ID to which all callbacks will
|
|||||||
cb-bulk-newstatus New Status <QXZ>The new vicidial_list status the selected callbacks will be updated to. This affects the vicidial_list table ONLY.</QXZ>
|
cb-bulk-newstatus New Status <QXZ>The new vicidial_list status the selected callbacks will be updated to. This affects the vicidial_list table ONLY.</QXZ>
|
||||||
cb-export Callbacks export <QXZ>This page is used to view and download a list of all scheduled callbacks based on the campaigns selected and the dates the callbacks are scheduled to be contacted.</QXZ>
|
cb-export Callbacks export <QXZ>This page is used to view and download a list of all scheduled callbacks based on the campaigns selected and the dates the callbacks are scheduled to be contacted.</QXZ>
|
||||||
cb-export-cb-dates Scheduled callback dates <QXZ>The date the leads are scheduled to be called back.</QXZ>
|
cb-export-cb-dates Scheduled callback dates <QXZ>The date the leads are scheduled to be called back.</QXZ>
|
||||||
alt_multi_urls Alternate Multi URLs <QXZ>This page allows you to define Alternate URLs with conditions in place of the simple URL option for Dispo, Start, Add Lead or No Agent URLs. The RANK field will define the order in which the URLs are requested, this is important because if you have a URL that may take a few seconds to run ranked as 1, that will mean that any URLs ranked after it will have to wait to be run until that first URL request receives a response. The ACTIVE field will determine whether the specific URL is run. The STATUSES field only works for the Dispo URLs and will determine which disposition statuses will trigger the URL being run, if you want to run the entry for all statuses just fill in ---ALL--- in this field, if you want only a few statuses, separate them by spaces. If populated, the LISTS field will limit the calls that the URL is run from to only the list IDs listed in this field. To have it run for all lists, leave the field blank, if you want only a few lists, separate them by spaces. The MIN LENGTH field will limit the calls that the URL is run for to only calls that are this minimum length in seconds and higher, default is 0. The min length option does not work for No Agent Call URLs. The URL field works the same as it would in the URL option in campaigns, in-groups and lists, and it is also limited to 2000 characters in length. If you want to delete a URL, it must first be set to not active, then you can click on the DELETE link below the SUBMIT button for that URL entry.</QXZ>
|
alt_multi_urls Alternate Multi URLs <QXZ>This page allows you to define Alternate URLs with conditions in place of the simple URL option for Dispo, Start, Add Lead, No Agent or Talk Seconds URLs. The RANK field will define the order in which the URLs are requested, this is important because if you have a URL that may take a few seconds to run ranked as 1, that will mean that any URLs ranked after it will have to wait to be run until that first URL request receives a response. The ACTIVE field will determine whether the specific URL is run. The STATUSES field only works for the Dispo URLs and will determine which disposition statuses will trigger the URL being run, if you want to run the entry for all statuses just fill in ---ALL--- in this field, if you want only a few statuses, separate them by spaces. If populated, the LISTS field will limit the calls that the URL is run from to only the list IDs listed in this field. To have it run for all lists, leave the field blank, if you want only a few lists, separate them by spaces. The MIN LENGTH field will limit the calls that the URL is run for to only calls that are this minimum length in seconds and higher, default is 0. The min length option does not work for No Agent, Start or Add Lead URLs. For Talk Seconds URLS, the MIN LENGTH field is the trigger time during talk time with the customer when each URL is triggered, if it is set to 0 for a Talk Seconds URL, then that URL will never trigger. The URL field works the same as it would in the URL option in campaigns, in-groups and lists, and it is also limited to 2000 characters in length. If you want to delete a URL, it must first be set to not active, then you can click on the DELETE link below the SUBMIT button for that URL entry.</QXZ>
|
||||||
amm_multi AM Message Wildcards <QXZ>This page allows you to define Am Message Wildcards that will check lead data from the defined lead fields for matches in the defined order specified on this page. For example, if you add a wildcard with the word -vacation- tied to the vendor_lead_code field, and the lead being played a message has -vacation- in that field, then it will hear the message defined in that AM Message Wildcard record. If you want to delete a wildcard, it must first be set to not active, then you can click on the DELETE link below the SUBMIT button for that wildcard entry</QXZ>
|
amm_multi AM Message Wildcards <QXZ>This page allows you to define Am Message Wildcards that will check lead data from the defined lead fields for matches in the defined order specified on this page. For example, if you add a wildcard with the word -vacation- tied to the vendor_lead_code field, and the lead being played a message has -vacation- in that field, then it will hear the message defined in that AM Message Wildcard record. If you want to delete a wildcard, it must first be set to not active, then you can click on the DELETE link below the SUBMIT button for that wildcard entry</QXZ>
|
||||||
user_list_new_limits User List New Lead Limits <QXZ>If the system setting for New Leads Per List Limit is enabled, then this page allows for the setting of per-user per-list new lead limit overrides to those List limits. This feature will only work properly if the campaign is set to either the MANUAL or INBOUND_MAN Dial Method and No Hopper dialing is enabled.</QXZ>
|
user_list_new_limits User List New Lead Limits <QXZ>If the system setting for New Leads Per List Limit is enabled, then this page allows for the setting of per-user per-list new lead limit overrides to those List limits. This feature will only work properly if the campaign is set to either the MANUAL or INBOUND_MAN Dial Method and No Hopper dialing is enabled.</QXZ>
|
||||||
user_inbound_calls_today User Inbound Calls Today <QXZ>This page will show you the User Inbound Calls Today, the Max Limits and the Call Credits for all users in the system. If one of the limits is reached, you will see notes showing you which one was reached.</QXZ>
|
user_inbound_calls_today User Inbound Calls Today <QXZ>This page will show you the User Inbound Calls Today, the Max Limits and the Call Credits for all users in the system. If one of the limits is reached, you will see notes showing you which one was reached.</QXZ>
|
||||||
|
|||||||
Reference in New Issue
Block a user