More code updates for PHP8 compatibility
AMD updates git-svn-id: svn://192.168.202.10@3997 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
+25
-9
@@ -73,10 +73,11 @@
|
||||
# 250924-2152 - Added code for deprecation of "Monitor" application after Asterisk 20
|
||||
# 251006-0903 - If recording_dtmf_muting enabled, force use of MixMonitor for recording
|
||||
# 260129-1443 - Added code to reinsert missing vicidial_auto_calls record
|
||||
# 260527-0902 - Updates for ViciAMD
|
||||
#
|
||||
|
||||
$script = 'VD_amd.agi';
|
||||
$build = '260129-1443';
|
||||
$build = '260527-0902';
|
||||
|
||||
$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
|
||||
@@ -407,6 +408,8 @@ $amd_agent_route_options='';
|
||||
$AMDcontainer_entry='';
|
||||
$AMD_agent_send=0;
|
||||
$NOAUDIODATA_hangup_enabled=0;
|
||||
$FAX_hangup_enabled=0;
|
||||
$FAS_hangup_enabled=0;
|
||||
$VL_status_updates=1;
|
||||
$stmtA = "SELECT amd_agent_route_options,manual_vm_status_updates FROM vicidial_campaigns where campaign_id='$VD_campaign_id' limit 1;";
|
||||
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
|
||||
@@ -456,6 +459,14 @@ if ($amd_agent_route_options =~ /ENABLED/i)
|
||||
{
|
||||
$NOAUDIODATA_hangup_enabled++;
|
||||
}
|
||||
if ($AMDcontainer_lines[$c] =~ /FAX-Hangup-ENABLED/)
|
||||
{
|
||||
$FAX_hangup_enabled++;
|
||||
}
|
||||
if ($AMDcontainer_lines[$c] =~ /FAS-Hangup-ENABLED/)
|
||||
{
|
||||
$FAS_hangup_enabled++;
|
||||
}
|
||||
$c++;
|
||||
}
|
||||
}
|
||||
@@ -464,7 +475,7 @@ if ($amd_agent_route_options =~ /ENABLED/i)
|
||||
|
||||
##################################################################################
|
||||
########## AMD says it's a person so exit and go on to transfer scripts ##########
|
||||
if ( ( ($AMDSTATUS =~ /PERSON|HUMAN|NOTSURE|HANGUP/) && ($force_playback !~ /YES/) && (length($AMDcontainer_entry) < 4) ) || ( ($AMD_agent_send > 0) && (length($AMDcontainer_entry) > 3) ) )
|
||||
if ( ( ($AMDSTATUS =~ /PERSON|HUMAN|NOTSURE|HANGUP|CALLSCREEN/) && ($force_playback !~ /YES/) && (length($AMDcontainer_entry) < 4) ) || ( ($AMD_agent_send > 0) && (length($AMDcontainer_entry) > 3) ) )
|
||||
{
|
||||
if ($A)
|
||||
{
|
||||
@@ -862,24 +873,29 @@ else
|
||||
exit;
|
||||
}
|
||||
|
||||
if ( ($AMDRESPONSE =~ /^NOAUDIODATA/) && ($NOAUDIODATA_hangup_enabled > 0) )
|
||||
if ( ( ($AMDRESPONSE =~ /^NOAUDIODATA/) && ($NOAUDIODATA_hangup_enabled > 0) ) || ( ($AMDRESPONSE =~ /^FAX/) && ($FAX_hangup_enabled > 0) ) || ( ($AMDRESPONSE =~ /^FAS/) && ($FAS_hangup_enabled > 0) ) )
|
||||
{
|
||||
### No audio, let's update lead, log and hangup.
|
||||
$stmtA = "UPDATE vicidial_log set status='ADAIR' where uniqueid='$uniqueid' and lead_id='$VD_lead_id' order by call_date desc limit 1;";
|
||||
$hangup_status='ADAIR';
|
||||
if ( ($AMDRESPONSE =~ /^FAX/) && ($FAX_hangup_enabled > 0) )
|
||||
{$hangup_status='FAXHU';}
|
||||
if ( ($AMDRESPONSE =~ /^FAS/) && ($FAS_hangup_enabled > 0) )
|
||||
{$hangup_status='FASHU';}
|
||||
### If No Audio or a Fax or a False Answer, let's update lead, log and hangup.
|
||||
$stmtA = "UPDATE vicidial_log set status='$hangup_status' where uniqueid='$uniqueid' and lead_id='$VD_lead_id' order by call_date desc limit 1;";
|
||||
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
|
||||
$affected_rows = $dbhA->do($stmtA);
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_log ADAIR update: |$affected_rows|$uniqueid|"; &agi_output;}
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_log $hangup_status update: |$affected_rows|$uniqueid|"; &agi_output;}
|
||||
|
||||
$stmtA = "UPDATE vicidial_list set status='ADAIR' where lead_id='$VD_lead_id';";
|
||||
$stmtA = "UPDATE vicidial_list set status='$hangup_status' where lead_id='$VD_lead_id';";
|
||||
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
|
||||
if ($VL_status_updates > 0)
|
||||
{
|
||||
$affected_rows = $dbhA->do($stmtA);
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_list ADAIR update: |$affected_rows|$uniqueid"; &agi_output;}
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_list $hangup_status update: |$affected_rows|$uniqueid"; &agi_output;}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_list ADAIR update DISABLED: |$calleridname|$uniqueid|$VL_status_updates|$manual_vm_status_updates|"; &agi_output;}
|
||||
if ($AGILOG) {$agi_string = "-- VDAD vicidial_list $hangup_status update DISABLED: |$calleridname|$uniqueid|$VL_status_updates|$manual_vm_status_updates|"; &agi_output;}
|
||||
}
|
||||
|
||||
$dbhA->disconnect();
|
||||
|
||||
@@ -85,3 +85,7 @@ ADAIR - Dead Air Auto, for AMD NOAUDIODATA calls
|
||||
ACFLTR - Inbound call areacode filter check
|
||||
LTMGAD - Campaign HotKey option, will transfer customer to voicemail message and disposition the call
|
||||
XAMMAD - Campaign HotKey option, will transfer customer to voicemail message and disposition the call
|
||||
FAXHU - Fax AMD Auto Hangup
|
||||
FASHU - False Answer AMD Auto Hangup
|
||||
GVM - Generic Voicemail Message
|
||||
PVM - Personalized Voicemail Message
|
||||
|
||||
@@ -1069,7 +1069,7 @@ campaign_script_two VARCHAR(20) default '',
|
||||
leave_vm_no_dispo ENUM('ENABLED','DISABLED') default 'DISABLED',
|
||||
leave_vm_message_group_id VARCHAR(40) default '---NONE---',
|
||||
dial_timeout_lead_container VARCHAR(40) default 'DISABLED',
|
||||
amd_type ENUM('AMD','CPD','KHOMP') default 'AMD',
|
||||
amd_type ENUM('AMD','CPD','KHOMP','ViciAMD') default 'AMD',
|
||||
vmm_daily_limit TINYINT(3) UNSIGNED default '0',
|
||||
opensips_cid_name VARCHAR(15) default '',
|
||||
amd_agent_route_options ENUM('ENABLED','DISABLED','PENDING') default 'DISABLED',
|
||||
@@ -1146,7 +1146,8 @@ recording_dtmf_muting SMALLINT(3) UNSIGNED default '0',
|
||||
stereo_recording_agent ENUM('NEVER','ONDEMAND','ALLCALLS','ALLFORCE') default 'ALLFORCE',
|
||||
call_count_limit_restrict VARCHAR(30) default 'DISABLED',
|
||||
adaptive_percentmax_percentage TINYINT(2) UNSIGNED default '50',
|
||||
hangup_again_link ENUM('DISABLED','ENABLED') default 'ENABLED'
|
||||
hangup_again_link ENUM('DISABLED','ENABLED') default 'ENABLED',
|
||||
amd_agent_display ENUM('ENABLED','DISABLED') default 'DISABLED'
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_lists (
|
||||
@@ -2082,7 +2083,8 @@ recording_dtmf_muting TINYINT(3) UNSIGNED default '0',
|
||||
stereo_parallel_recording ENUM('0','1','2','3','4','5','6') default '0',
|
||||
db_crashed_tables_check ENUM('0','1','2','3','4','5','6') default '1',
|
||||
xfer_min_container VARCHAR(40) default '',
|
||||
max_inbound_auto_reenable ENUM('0','1','2','3','4','5','6') default '1'
|
||||
max_inbound_auto_reenable ENUM('0','1','2','3','4','5','6') default '1',
|
||||
viciamd_enabled ENUM('0','1','2','3','4','5','6') default '0'
|
||||
) ENGINE=MyISAM;
|
||||
|
||||
CREATE TABLE vicidial_campaigns_list_mix (
|
||||
@@ -5874,7 +5876,11 @@ INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,cate
|
||||
INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback,completed,answering_machine) values('ADCT','Disconnected Number Temporary','N','N','UNDEFINED','N','N','N','N','N','N','N','N');
|
||||
INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback,completed,answering_machine) values('LSMERG','Agent lead search old lead mrg','N','N','UNDEFINED','N','N','N','N','N','N','N','N');
|
||||
INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback,completed,answering_machine) values('DAIR','Dead Air','Y','N','UNDEFINED','N','N','N','N','N','N','N','N');
|
||||
INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback,completed,answering_machine) values('GVM','Generic Voicemail Message','Y','N','UNDEFINED','N','N','N','N','N','N','N','Y');
|
||||
INSERT INTO vicidial_statuses (status,status_name,selectable,human_answered,category,sale,dnc,customer_contact,not_interested,unworkable,scheduled_callback,completed,answering_machine) values('PVM','Personalized Voicemail Message','Y','N','UNDEFINED','N','N','N','N','N','N','N','Y');
|
||||
INSERT INTO vicidial_statuses (status,status_name) VALUES ('ADAIR', 'Dead Air Auto');
|
||||
INSERT INTO vicidial_statuses (status,status_name) VALUES ('FAXHU', 'Fax Auto Hangup');
|
||||
INSERT INTO vicidial_statuses (status,status_name) VALUES ('FASHU', 'False Answer Auto Hangup');
|
||||
|
||||
INSERT INTO vicidial_qc_codes (code,code_name,qc_result_type) VALUES ('QCPASS','PASS','PASS');
|
||||
INSERT INTO vicidial_qc_codes (code,code_name,qc_result_type) VALUES ('QCFAIL','FAIL','FAIL');
|
||||
@@ -5902,6 +5908,7 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('VICIDIAL_TIMEOFF_SETTINGS','Settings for time-off admin utility','OTHER','---ALL---','; Comma-delimited time-off codes - MANDATORY, must have at least one defined. \r\n; Default is \'VAC\' for vacation\r\ntimeoff_types => VAC\r\n\r\n; optional, if set to \'1\' will show all viewable agents, even ones with no \r\n; time off for month. Default is 0\r\ndisplay_all_agents => 0\r\n\r\n; optional, used to filter users displayed, in addition to user_group \r\n; permissions\r\nuser_filter_SQL => \r\n\r\n; optional, uses columns from vicidial_users table. Defaults to \r\n; full_name asc, user asc if commented out or non-existent\r\n; sort_SQL => full_name asc, user asc\r\n\r\n; include custom coding for misc download coding where \"custom_download\" \r\n; marked in agent_timeoff_script.php - DO NOT USE WITHOUT CODING KNOWLEDGE\r\n; set to \'1\' to activate\r\ncustom_download => 0');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('FAILED_DIAL_MESSAGE_OVERRIDE','Failed Dial Message Override','OTHER','---ALL---',"Unable to complete the call at this time.\nPlease try again later.");
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry) VALUES ('LISTLOADER_AUTO_MAPPING', 'Contains aliases for auto-mapping fields in listloader', 'OTHER', '---ALL---', '; Use this to auto-map fields in the listloader when you attempt to load\r\n; a file. This will populate the \'File data\' dropdown menus \r\n; You may define additional aliases by adding them to the below list.\r\n; They must be of the form \"alias => vicidial_field\". One per line.\r\n; The \"vicidial_field\" value must match the name of a column in the\r\n; vicidial_list table\r\n\r\n\'phone\' => \'phonenumber\'\r\n\'phoneno\' => \'phonenumber\'\r\n\'phone1\' => \'phonenumber\'\r\n\'primaryphone\' => \'phonenumber\'\r\n\'mainphone\' => \'phonenumber\'\r\n\'telephone\' => \'phonenumber\'\r\n\'tel\' => \'phonenumber\'\r\n\'cell\' => \'phonenumber\'\r\n\'cellphone\' => \'phonenumber\'\r\n\'mobile\' => \'phonenumber\'\r\n\'mobilephone\' => \'phonenumber\'\r\n\'workphone\' => \'phonenumber\'\r\n\'homephone\' => \'phonenumber\'\r\n\'fname\' => \'firstname\'\r\n\'first\' => \'firstname\'\r\n\'givenname\' => \'firstname\'\r\n\'lname\' => \'lastname\'\r\n\'last\' => \'lastname\'\r\n\'surname\' => \'lastname\'\r\n\'familyname\' => \'lastname\'\r\n\'mi\' => \'middleinitial\'\r\n\'middle\' => \'middleinitial\'\r\n\'middlename\' => \'middleinitial\'\r\n\'minit\' => \'middleinitial\'\r\n\'addr\' => \'address1\'\r\n\'addr1\' => \'address1\'\r\n\'street\' => \'address1\'\r\n\'streetaddress\' => \'address1\'\r\n\'address\' => \'address1\'\r\n\'addr2\' => \'address2\'\r\n\'street2\' => \'address2\'\r\n\'suite\' => \'address2\'\r\n\'apt\' => \'address2\'\r\n\'apartment\' => \'address2\'\r\n\'unit\' => \'address2\'\r\n\'addr3\' => \'address3\'\r\n\'zip\' => \'postalcode\'\r\n\'zipcode\' => \'postalcode\'\r\n\'postcode\' => \'postalcode\'\r\n\'postalzip\' => \'postalcode\'\r\n\'st\' => \'state\'\r\n\'stateprovince\' => \'state\'\r\n\'region\' => \'state\'\r\n\'prov\' => \'province\'\r\n\'country\' => \'countrycode\'\r\n\'countrycd\' => \'countrycode\'\r\n\'cc\' => \'countrycode\'\r\n\'sex\' => \'gender\'\r\n\'dob\' => \'dateofbirth\'\r\n\'birthday\' => \'dateofbirth\'\r\n\'birthdate\' => \'dateofbirth\'\r\n\'birth\' => \'dateofbirth\'\r\n\'altphone\' => \'altphone\'\r\n\'phone2\' => \'altphone\'\r\n\'secondaryphone\' => \'altphone\'\r\n\'otherphone\' => \'altphone\'\r\n\'alternatephone\' => \'altphone\'\r\n\'emailaddress\' => \'email\'\r\n\'emailaddr\' => \'email\'\r\n\'mail\' => \'email\'\r\n\'note\' => \'comments\'\r\n\'notes\' => \'comments\'\r\n\'comment\' => \'comments\'\r\n\'remark\' => \'comments\'\r\n\'remarks\' => \'comments\'\r\n\'description\' => \'comments\'\r\n\'vendorcode\' => \'vendorleadcode\'\r\n\'vendorid\' => \'vendorleadcode\'\r\n\'vendorleadid\' => \'vendorleadcode\'\r\n\'leadcode\' => \'vendorleadcode\'\r\n\'externalid\' => \'vendorleadcode\'\r\n\'sourcecode\' => \'sourceid\'\r\n\'source\' => \'sourceid\'\r\n\'leadsource\' => \'sourceid\'\r\n\'listid\' => \'listid\'\r\n\'list\' => \'listid\'\r\n\'phonecode\' => \'phonecode\'\r\n\'dialcode\' => \'phonecode\'\r\n\'countrydialing\' => \'phonecode\'\r\n\'prefix\' => \'title\'\r\n\'salutation\' => \'title\'\r\n\'mr\' => \'title\'\r\n\'securityphrase\' => \'securityphrase\'\r\n\'security\' => \'securityphrase\'\r\n\'pin\' => \'securityphrase\'\r\n\'password\' => \'securityphrase\'\r\n\'priority\' => \'rank\'\r\n\'score\' => \'rank\'\r\n\'weight\' => \'rank\'\r\n\'agent\' => \'owner\'\r\n\'assignedto\' => \'owner\'\r\n\'rep\' => \'owner\'\r\n\'town\' => \'city\'\r\n\r\n\r\n; This is the minimum required score that the header field must return\r\n; when processed with the Levenshtein distance algorithm. Default is 70.\r\n; If you wish to raise or lower it, uncomment the below line and change the \r\n; score value to whatever you wish\r\n; minimum_required_score => 70\r\n');
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry,modify_stamp) VALUES('VAMD_SETTINGS_NEW_TEMPLATE','Settings for ViciAMD Template for Campaigns','OTHER','---ALL---','# When doing audio signature analysis of the received audio VAMD compares\r\n# it to a database of known audio signatures. This comparison results in a\r\n# mathematical -distance- value between 0 and 1. 0 is a perfect match. 1 \r\n# is a perfect mismatch. The audio_match_dist is the maximum value that is\r\n# considered a match. Anything above that is not a match. Setting this\r\n# higher will weed out more automated messages but at a cost of a higher\r\n# false positive rate. Default is 0.2\r\naudio_match_dist = 0.2\r\n\r\n\r\n# When doing voice signature analysis of the received audio VAMD compares\r\n# it to a database of known voice signatures. This comparison results in a\r\n# mathematical -distance- value between 0 and 1. 0 is a perfect match. 1 \r\n# is a perfect mismatch. The voice_match_dist is the maximum value that is\r\n# considered a match. Anything above that is not a match. Setting this\r\n# higher will weed out more automated message but at a cost of a higher\r\n# false positive rate. Default is 0.2\r\nvoice_match_dist = 0.2\r\n\r\n\r\n# If no other result fits, a confidence check is done on the speech \r\n# recognition results. If that check is less than this threshold VAMD\r\n# statuses the call as NOTSURE,LOWCONFIDENCE. If it is higher than this\r\n# threshold VAMD statuses the call as NOTSURE,LOWSCORE.\r\n# Value ranges from 0 to 1\r\nmin_word_confidence = 0.1\r\n\r\n\r\n# The threshold above which sound is detected initially. \r\n# Value ranges is from 1 to 32,767\r\ninit_silence_threshold = 4000\r\n\r\n\r\n# The threshold above which sound is detected after the initial silence.\r\n# Value ranges is from 1 to 32,767\r\nsilence_threshold = 2000\r\n\r\n\r\n# The maximum initial silence in milliseconds. Any longer than this and the call will be statused as NOTSURE,INITIALSILENCE\r\nmax_init_sil_ms = 3000\r\n\r\n\r\n# The maximum length of audio collection in milliseconds before audio\r\n# processing of the data is forced. This triggers if no silence was \r\n# detected after the initial silence.\r\nmax_detection_ms = 5000\r\n\r\n\r\n# The minimum time spent collecting audio in ms. Audio processing cannot be\r\n# triggered until after this cutoff.\r\nmin_detection_ms = 3000\r\n\r\n\r\n# The maximum length of silence in milliseconds after the initial silence \r\n# before the customer greeting is assumed over and audio processing will\r\n# begin.\r\nmax_silence_ms = 800\r\n\r\n\r\n# If the total amount sound detected is less than this number of \r\n# milliseconds it is assumed that whatever is on the line is not a person\r\nmin_sound_ms = 150\r\n\r\n\r\n# The maximum number of words before the call is considered an answering \r\n# machine\r\nmax_words = 4\r\n\r\n\r\nphrase_dict = b2b-phrases.ini',NOW());
|
||||
|
||||
INSERT INTO `wallboard_widgets` VALUES ('queues_widget_1','AGENTS_AND_QUEUES','queues','','TEXT',5,'N',1,'Queue Information','','',NULL,'','',NULL,2),('queues_widget_0','AGENTS_AND_QUEUES','queues','','LOGO',2,'N',1,NULL,'','',NULL,'','',NULL,1),('queues_widget_2','AGENTS_AND_QUEUES','queues','SLA Level %','SLA_LEVEL_PCT',1,'N',1,NULL,'','>60',NULL,'','',NULL,3),('queues_widget_3','AGENTS_AND_QUEUES','queues','Outbound calls','LIVE_QUEUE_INFO',1,'N',1,'','201201','','','','','yellow_alarm,|red_alarm,',4),('queues_widget_4','AGENTS_AND_QUEUES','queues','USA Ded Inbound','LIVE_QUEUE_INFO',1,'N',1,'','ALL_IN','','','','','yellow_alarm,|red_alarm,',5),('queues_widget_5','AGENTS_AND_QUEUES','queues','MLA Ded Inbound','LIVE_QUEUE_INFO',1,'N',1,'','514911','','','','','yellow_alarm,|red_alarm,',6),('queues_widget_6','AGENTS_AND_QUEUES','queues','N Waiting Calls','N_WAITING_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,7),('queues_widget_7','AGENTS_AND_QUEUES','queues','Offered Calls','OFFERED_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,8),('queues_widget_8','AGENTS_AND_QUEUES','queues','Answered Calls','ANSWERED_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,9),('queues_widget_9','AGENTS_AND_QUEUES','queues','Lost Calls','LOST_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,10),('queues_widget_10','AGENTS_AND_QUEUES','queues','Longest Wait','LONGEST_WAIT',1,'N',1,NULL,'','',NULL,'','',NULL,11),('queues_widget_11','AGENTS_AND_QUEUES','queues','Live Queues','LIVE_QUEUES',1,'Y',1,NULL,'','',NULL,'','',NULL,12),('queues_widget_12','AGENTS_AND_QUEUES','queues','Live Calls','LIVE_CALLS',1,'Y',2,NULL,'','',NULL,'','',NULL,13),('agent_widget_0','AGENTS_AND_QUEUES','agents','','LOGO',2,'N',1,NULL,'','',NULL,'','',NULL,1),('agent_widget_1','AGENTS_AND_QUEUES','agents','N Waiting Calls','N_WAITING_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,2),('agent_widget_2','AGENTS_AND_QUEUES','agents','Agents Ready','AGENTS_READY',1,'N',1,NULL,'','',NULL,'','',NULL,3),('agent_widget_3','AGENTS_AND_QUEUES','agents','Agents On Call','N_AGENTS_ON_CALL',1,'N',1,NULL,'','',NULL,'','',NULL,4),('agent_widget_4','AGENTS_AND_QUEUES','agents','N Answered Calls','N_ANSWERED_CALLS',1,'N',1,NULL,'','',NULL,'','',NULL,5),('agent_widget_5','AGENTS_AND_QUEUES','agents','Clock','CLOCK',1,'N',1,NULL,'','',NULL,'','',NULL,6),('agent_widget_6','AGENTS_AND_QUEUES','agents','Live Agents','LIVE_AGENTS',1,'Y',3,NULL,'','',NULL,'','',NULL,7);
|
||||
|
||||
@@ -5909,4 +5916,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 db_schema_version='1742',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
UPDATE system_settings SET db_schema_version='1743',db_schema_update_date=NOW(),reload_timestamp=NOW();
|
||||
|
||||
+10
-1
@@ -1115,7 +1115,7 @@ UPDATE system_settings SET db_schema_version='1579',db_schema_update_date=NOW()
|
||||
|
||||
ALTER TABLE vicidial_users ADD status_group_id VARCHAR(20) default '';
|
||||
|
||||
ALTER TABLE vicidial_campaigns ADD amd_type ENUM('AMD','CPD','KHOMP') default 'AMD';
|
||||
ALTER TABLE vicidial_campaigns ADD amd_type ENUM('AMD','CPD','KHOMP','ViciAMD') default 'AMD';
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1580',db_schema_update_date=NOW() where db_schema_version < 1580;
|
||||
|
||||
@@ -3104,3 +3104,12 @@ KEY intlog_dbtime_key (up_time)
|
||||
) ENGINE=MyISAM CHARSET=utf8 COLLATE=utf8_unicode_ci;
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1742',db_schema_update_date=NOW() where db_schema_version < 1742;
|
||||
|
||||
ALTER TABLE vicidial_campaigns MODIFY amd_type ENUM('AMD','CPD','KHOMP','ViciAMD') default 'AMD';
|
||||
ALTER TABLE vicidial_campaigns ADD amd_agent_display ENUM('ENABLED','DISABLED') default 'DISABLED';
|
||||
|
||||
ALTER TABLE system_settings ADD viciamd_enabled ENUM('0','1','2','3','4','5','6') default '0';
|
||||
|
||||
INSERT INTO vicidial_settings_containers(container_id,container_notes,container_type,user_group,container_entry,modify_stamp) VALUES('VAMD_SETTINGS_NEW_TEMPLATE','Settings for ViciAMD Template for Campaigns','OTHER','---ALL---','# When doing audio signature analysis of the received audio VAMD compares\r\n# it to a database of known audio signatures. This comparison results in a\r\n# mathematical -distance- value between 0 and 1. 0 is a perfect match. 1 \r\n# is a perfect mismatch. The audio_match_dist is the maximum value that is\r\n# considered a match. Anything above that is not a match. Setting this\r\n# higher will weed out more automated messages but at a cost of a higher\r\n# false positive rate. Default is 0.2\r\naudio_match_dist = 0.2\r\n\r\n\r\n# When doing voice signature analysis of the received audio VAMD compares\r\n# it to a database of known voice signatures. This comparison results in a\r\n# mathematical -distance- value between 0 and 1. 0 is a perfect match. 1 \r\n# is a perfect mismatch. The voice_match_dist is the maximum value that is\r\n# considered a match. Anything above that is not a match. Setting this\r\n# higher will weed out more automated message but at a cost of a higher\r\n# false positive rate. Default is 0.2\r\nvoice_match_dist = 0.2\r\n\r\n\r\n# If no other result fits, a confidence check is done on the speech \r\n# recognition results. If that check is less than this threshold VAMD\r\n# statuses the call as NOTSURE,LOWCONFIDENCE. If it is higher than this\r\n# threshold VAMD statuses the call as NOTSURE,LOWSCORE.\r\n# Value ranges from 0 to 1\r\nmin_word_confidence = 0.1\r\n\r\n\r\n# The threshold above which sound is detected initially. \r\n# Value ranges is from 1 to 32,767\r\ninit_silence_threshold = 4000\r\n\r\n\r\n# The threshold above which sound is detected after the initial silence.\r\n# Value ranges is from 1 to 32,767\r\nsilence_threshold = 2000\r\n\r\n\r\n# The maximum initial silence in milliseconds. Any longer than this and the call will be statused as NOTSURE,INITIALSILENCE\r\nmax_init_sil_ms = 3000\r\n\r\n\r\n# The maximum length of audio collection in milliseconds before audio\r\n# processing of the data is forced. This triggers if no silence was \r\n# detected after the initial silence.\r\nmax_detection_ms = 5000\r\n\r\n\r\n# The minimum time spent collecting audio in ms. Audio processing cannot be\r\n# triggered until after this cutoff.\r\nmin_detection_ms = 3000\r\n\r\n\r\n# The maximum length of silence in milliseconds after the initial silence \r\n# before the customer greeting is assumed over and audio processing will\r\n# begin.\r\nmax_silence_ms = 800\r\n\r\n\r\n# If the total amount sound detected is less than this number of \r\n# milliseconds it is assumed that whatever is on the line is not a person\r\nmin_sound_ms = 150\r\n\r\n\r\n# The maximum number of words before the call is considered an answering \r\n# machine\r\nmax_words = 4\r\n\r\n\r\nphrase_dict = b2b-phrases.ini',NOW());
|
||||
|
||||
UPDATE system_settings SET db_schema_version='1743',db_schema_update_date=NOW() where db_schema_version < 1743;
|
||||
|
||||
@@ -567,10 +567,11 @@
|
||||
# 251124-0935 - Added lead status display for callbacks list output
|
||||
# 260302-1057 - Code updates for PHP8 compatibility
|
||||
# 260403-2155 - Added vicidial_max_inbound_cache logging
|
||||
# 260529-0914 - Added code to allow for AMDnotesBox
|
||||
#
|
||||
|
||||
$version = '2.14-460';
|
||||
$build = '260403-2155';
|
||||
$version = '2.14-461';
|
||||
$build = '260529-0914';
|
||||
$php_script = 'vdc_db_query.php';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=10001;
|
||||
@@ -1254,7 +1255,7 @@ $sip_hangup_cause_dictionary = array(
|
||||
|
||||
#############################################
|
||||
##### START SYSTEM_SETTINGS LOOKUP #####
|
||||
$stmt = "SELECT use_non_latin,timeclock_end_of_day,agentonly_callback_campaign_lock,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,qc_features_active,allow_emails,callback_time_24hour,enable_languages,language_method,agent_debug_logging,default_language,active_modules,allow_chats,default_phone_code,user_new_lead_limit,sip_event_logging,call_quota_lead_ranking,daily_call_count_limit,call_limit_24hour,allow_web_debug,abandon_check_queue,inbound_credits,stereo_recording,stereo_parallel_recording,recording_dtmf_detection,recording_dtmf_muting FROM system_settings;";
|
||||
$stmt = "SELECT use_non_latin,timeclock_end_of_day,agentonly_callback_campaign_lock,alt_log_server_ip,alt_log_dbname,alt_log_login,alt_log_pass,tables_use_alt_log_db,qc_features_active,allow_emails,callback_time_24hour,enable_languages,language_method,agent_debug_logging,default_language,active_modules,allow_chats,default_phone_code,user_new_lead_limit,sip_event_logging,call_quota_lead_ranking,daily_call_count_limit,call_limit_24hour,allow_web_debug,abandon_check_queue,inbound_credits,stereo_recording,stereo_parallel_recording,recording_dtmf_detection,recording_dtmf_muting,viciamd_enabled FROM system_settings;";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00001',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
#if ($DB) {echo "$stmt\n";}
|
||||
@@ -1292,6 +1293,7 @@ if ($qm_conf_ct > 0)
|
||||
$SSstereo_parallel_recording = $row[27];
|
||||
$SSrecording_dtmf_detection = $row[28];
|
||||
$SSrecording_dtmf_muting = $row[29];
|
||||
$SSviciamd_enabled = $row[30];
|
||||
}
|
||||
if ($SSallow_web_debug < 1 || !isset($DB)) {$DB=0; $format="text";}
|
||||
$DB=preg_replace("/[^0-9]/","",$DB);
|
||||
@@ -10755,6 +10757,7 @@ if ($ACTION == 'VDADcheckINCOMING')
|
||||
$fronter = $user;
|
||||
$closer='';
|
||||
$recording_dtmf_muting=0;
|
||||
$VCAdata='y';
|
||||
|
||||
if ( (strlen($campaign)<1) || (strlen($server_ip)<1) )
|
||||
{
|
||||
@@ -10937,7 +10940,7 @@ if ($ACTION == 'VDADcheckINCOMING')
|
||||
$CBcomments = trim("$row[3]");
|
||||
}
|
||||
}
|
||||
$stmt="SELECT owner_populate,user_group_script,custom_one,custom_two,custom_three,custom_four,custom_five,state_descriptions,stereo_recording,stereo_recording_agent FROM vicidial_campaigns where campaign_id='$campaign';";
|
||||
$stmt="SELECT owner_populate,user_group_script,custom_one,custom_two,custom_three,custom_four,custom_five,state_descriptions,stereo_recording,stereo_recording_agent,amd_agent_display,amd_type FROM vicidial_campaigns where campaign_id='$campaign';";
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00444',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
@@ -10955,6 +10958,8 @@ if ($ACTION == 'VDADcheckINCOMING')
|
||||
$state_descriptions = $row[7];
|
||||
$stereo_recording = $row[8];
|
||||
$stereo_recording_agent = $row[9];
|
||||
$amd_agent_display = $row[10];
|
||||
$amd_type = $row[11];
|
||||
}
|
||||
$ownerSQL='';
|
||||
if ( ($owner_populate=='ENABLED') and ( (strlen($owner) < 1) or ($owner=='NULL') ) )
|
||||
@@ -11271,7 +11276,43 @@ if ($ACTION == 'VDADcheckINCOMING')
|
||||
}
|
||||
}
|
||||
|
||||
echo "$VDCL_group_web|$VDCL_group_name||||$VDCL_campaign_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|X|X||||$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number||||$VDCL_timer_action_destination|||||||$VDCL_group_web_three|$VDCL_ingroup_script_color|||$VDCL_campaign_script_two|$VDCL_ingroup_script_color_two|||$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs|\n|\n";
|
||||
$SSviciamd_enabled = intval($SSviciamd_enabled);
|
||||
if ($SSviciamd_enabled > 0)
|
||||
{
|
||||
if ( ($amd_type == 'ViciAMD') and ($amd_agent_display == 'ENABLED') )
|
||||
{
|
||||
# search for call in the vicidial_vca_log table $callerid, show tables like 'vicidial_vca_log';
|
||||
$stmt = "SHOW TABLES LIKE 'vicidial_vca_log';";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$VVCAL_ct = mysqli_num_rows($rslt);
|
||||
if ($VVCAL_ct > 0)
|
||||
{
|
||||
$ten_min_ago = date("Y-m-d H:i:s", mktime(date("H"),date("i")-10,date("s"),date("m"),date("d"),date("Y")));
|
||||
$stmt = "SELECT amd_status,amd_cause,text,total_detection_ms FROM vicidial_vca_log where call_id='$callerid' and analysis_date > \"$ten_min_ago\";";
|
||||
if ($DB) {echo "$stmt\n";}
|
||||
$rslt=mysql_to_mysqli($stmt, $link);
|
||||
if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00XXX',$user,$server_ip,$session_name,$one_mysql_log);}
|
||||
$VVCALd_ct = mysqli_num_rows($rslt);
|
||||
if ($VVCALd_ct > 0)
|
||||
{
|
||||
$row=mysqli_fetch_row($rslt);
|
||||
$VCAamd_status = $row[0];
|
||||
$VCAamd_cause = $row[1];
|
||||
$VCAtext = $row[2];
|
||||
$VCAlength_ms = $row[3];
|
||||
$VCAlength = ($VCAlength_ms / 1000);
|
||||
$VCAlength = sprintf("%.1f", $VCAlength);
|
||||
$VCAdata = "$VCAamd_status---$VCAamd_cause---$VCAlength---$VCAtext";
|
||||
# $fp = fopen ("./vicidial_VCA_debug.txt", 'a');
|
||||
# fwrite ($fp, "$NOW_TIME|$VCAdata\n");
|
||||
# fclose($fp);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
echo "$VDCL_group_web|$VDCL_group_name||||$VDCL_campaign_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|X|X||||$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number||||$VDCL_timer_action_destination|||||||$VDCL_group_web_three|$VDCL_ingroup_script_color|||$VDCL_campaign_script_two|$VDCL_ingroup_script_color_two|||$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs||$VCAdata|\n|\n";
|
||||
|
||||
if (preg_match('/X/',$dialed_label))
|
||||
{
|
||||
@@ -11829,8 +11870,8 @@ if ($ACTION == 'VDADcheckINCOMING')
|
||||
if ( ($SSrecording_dtmf_detection > 0) and ($SSrecording_dtmf_muting > 0) )
|
||||
{if ($SSrecording_dtmf_muting > 1) {$recording_dtmf_muting = $SSrecording_dtmf_muting;} }
|
||||
### if web form is set then send on to vicidial.php for override of WEB_FORM address
|
||||
if ( (strlen($VDCL_group_web)>5) or (strlen($VDCL_group_name)>0) ) {echo "$VDCL_group_web|$VDCL_group_name|$VDCL_group_color|$VDCL_fronter_display|$VDADchannel_group|$VDCL_ingroup_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|$VDCL_ingroup_recording_override|$VDCL_ingroup_rec_filename|$VDCL_default_group_alias|$VDCL_caller_id_number|$VDCL_group_web_vars|$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number|$VDCL_uniqueid_status_display|$custom_call_id|$VDCL_uniqueid_status_prefix|$VDCL_timer_action_destination|$DID_id|$DID_extension|$DID_pattern|$DID_description|$INclosecallid|$INxfercallid|$VDCL_group_web_three|$VDCL_ingroup_script_color|$VDCL_inbound_survey|$VDCL_survey_participate|$VDCL_ingroup_script_two|$VDCL_ingroup_script_color_two|$VDCL_browser_alert_sound|$VDCL_browser_alert_volume|$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs|$recording_dtmf_muting|\n";}
|
||||
else {echo "X|$VDCL_group_name|$VDCL_group_color|$VDCL_fronter_display|$VDADchannel_group|$VDCL_ingroup_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|$VDCL_ingroup_recording_override|$VDCL_ingroup_rec_filename|$VDCL_default_group_alias|$VDCL_caller_id_number|$VDCL_group_web_vars|$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number|$VDCL_uniqueid_status_display|$custom_call_id|$VDCL_uniqueid_status_prefix|$VDCL_timer_action_destination|$DID_id|$DID_extension|$DID_pattern|$DID_description|$INclosecallid|$INxfercallid|$VDCL_group_web_three|$VDCL_ingroup_script_color|$VDCL_inbound_survey|$VDCL_survey_participate|$VDCL_ingroup_script_two|$VDCL_ingroup_script_color_two|$VDCL_browser_alert_sound|$VDCL_browser_alert_volume|$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs|$recording_dtmf_muting|\n";}
|
||||
if ( (strlen($VDCL_group_web)>5) or (strlen($VDCL_group_name)>0) ) {echo "$VDCL_group_web|$VDCL_group_name|$VDCL_group_color|$VDCL_fronter_display|$VDADchannel_group|$VDCL_ingroup_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|$VDCL_ingroup_recording_override|$VDCL_ingroup_rec_filename|$VDCL_default_group_alias|$VDCL_caller_id_number|$VDCL_group_web_vars|$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number|$VDCL_uniqueid_status_display|$custom_call_id|$VDCL_uniqueid_status_prefix|$VDCL_timer_action_destination|$DID_id|$DID_extension|$DID_pattern|$DID_description|$INclosecallid|$INxfercallid|$VDCL_group_web_three|$VDCL_ingroup_script_color|$VDCL_inbound_survey|$VDCL_survey_participate|$VDCL_ingroup_script_two|$VDCL_ingroup_script_color_two|$VDCL_browser_alert_sound|$VDCL_browser_alert_volume|$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs|$recording_dtmf_muting|$VCAdata|\n";}
|
||||
else {echo "X|$VDCL_group_name|$VDCL_group_color|$VDCL_fronter_display|$VDADchannel_group|$VDCL_ingroup_script|$VDCL_get_call_launch|$VDCL_xferconf_a_dtmf|$VDCL_xferconf_a_number|$VDCL_xferconf_b_dtmf|$VDCL_xferconf_b_number|$VDCL_default_xfer_group|$VDCL_ingroup_recording_override|$VDCL_ingroup_rec_filename|$VDCL_default_group_alias|$VDCL_caller_id_number|$VDCL_group_web_vars|$VDCL_group_web_two|$VDCL_timer_action|$VDCL_timer_action_message|$VDCL_timer_action_seconds|$VDCL_xferconf_c_number|$VDCL_xferconf_d_number|$VDCL_xferconf_e_number|$VDCL_uniqueid_status_display|$custom_call_id|$VDCL_uniqueid_status_prefix|$VDCL_timer_action_destination|$DID_id|$DID_extension|$DID_pattern|$DID_description|$INclosecallid|$INxfercallid|$VDCL_group_web_three|$VDCL_ingroup_script_color|$VDCL_inbound_survey|$VDCL_survey_participate|$VDCL_ingroup_script_two|$VDCL_ingroup_script_color_two|$VDCL_browser_alert_sound|$VDCL_browser_alert_volume|$stereo_recording|$stereo_recording_agent|$talk_sec_urls_secs|$recording_dtmf_muting|$VCAdata|\n";}
|
||||
|
||||
if (strlen($fronter) < 2) {$fronter = $tsr;}
|
||||
$stmt = "SELECT full_name from vicidial_users where user='$fronter';";
|
||||
|
||||
+59
-3
@@ -758,10 +758,11 @@
|
||||
# 260302-0935 - Code updates for PHP8 compatibility
|
||||
# 260324-0857 - Added hangup_again_link campaign option
|
||||
# 260408-1850 - Added max_inbound_auto_reenable option
|
||||
# 260529-0914 - Added AMDnotesBox
|
||||
#
|
||||
|
||||
$version = '2.14-724c';
|
||||
$build = '260408-1850';
|
||||
$version = '2.14-725c';
|
||||
$build = '260529-0914';
|
||||
$php_script = 'vicidial.php';
|
||||
$mel=1; # Mysql Error Log enabled = 1
|
||||
$mysql_log_count=110;
|
||||
@@ -6880,6 +6881,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
||||
var previous_agent_log_id='<?php echo $agent_log_id ?>';
|
||||
var alert_box_close_counter=0;
|
||||
var dial_box_close_counter=0;
|
||||
var amd_box_close_counter=0;
|
||||
var api_switch_lead_triggered=0;
|
||||
var agent_xfer_validation='<?php echo $agent_xfer_validation ?>';
|
||||
var agent_xfer_group_selected='';
|
||||
@@ -7014,6 +7016,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";}
|
||||
var talk_sec_url_secs='';
|
||||
var redirectserverip='';
|
||||
var hangup_again_link_trigger=<?php echo $hangup_again_link_trigger ?>;
|
||||
var VCAdata='x';
|
||||
var DiaLControl_auto_HTML = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADready','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_paused.gif") ?>\" border=\"0\" alt=\"You are paused\" /></a>";
|
||||
var DiaLControl_auto_HTML_ready = "<a href=\"#\" onclick=\"AutoDial_ReSume_PauSe('VDADpause','','','','','','','YES');\"><img src=\"./images/<?php echo _QXZ("vdc_LB_active.gif") ?>\" border=\"0\" alt=\"You are active\" /></a>";
|
||||
var DiaLControl_auto_HTML_OFF = "<img src=\"./images/<?php echo _QXZ("vdc_LB_blank_OFF.gif") ?>\" border=\"0\" alt=\"pause button disabled\" />";
|
||||
@@ -13754,6 +13757,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
three_way_call_cid = orig_three_way_call_cid;
|
||||
APIskip=0;
|
||||
temp_XFmin_talk_sec=0;
|
||||
VCAdata='x';
|
||||
document.getElementById("BannerPanel").style.background = panel_bgcolor;
|
||||
document.getElementById("BannerPanel").innerHTML = '';
|
||||
if (manual_dial_preview < 1)
|
||||
@@ -14608,7 +14612,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
VDICstereo_recording_agent = VDIC_data_VDIG[43];
|
||||
talk_sec_url_secs = VDIC_data_VDIG[44];
|
||||
recording_dtmf_muting = VDIC_data_VDIG[45];
|
||||
// alert("talk_sec_url_secs: |" + talk_sec_url_secs + "|");
|
||||
VCAdata = VDIC_data_VDIG[46];
|
||||
// alert("VCAdata: |" + VCAdata + "|");
|
||||
var VDIC_data_VDFR=check_VDIC_array[3].split("|");
|
||||
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];}
|
||||
@@ -14763,6 +14768,17 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
gVD_statuses_ct = 0;
|
||||
gVARSELstatuses_ct = 0;
|
||||
|
||||
if (VCAdata.length > 12)
|
||||
{
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----AMDnotesDisplayed---|";
|
||||
var VCAdata_elements=VCAdata.split("---");
|
||||
document.getElementById("AMDnotesBoxA").innerHTML = "<b><?php echo _QXZ("Analysis Status:"); ?> </b>" + VCAdata_elements[0];
|
||||
document.getElementById("AMDnotesBoxB").innerHTML = "<b><?php echo _QXZ("Analysis Cause:"); ?> </b>" + VCAdata_elements[1];
|
||||
document.getElementById("AMDnotesBoxC").innerHTML = "<b><?php echo _QXZ("Greeting Length:"); ?> </b>" + VCAdata_elements[2];
|
||||
document.getElementById("AMDnotesBoxD").innerHTML = "<b><?php echo _QXZ("Detected Words:"); ?> </b><br />" + VCAdata_elements[3];
|
||||
showDiv('AMDnotesBox');
|
||||
amd_box_close_counter=15;
|
||||
}
|
||||
if (status_group_statuses_data.length > 7)
|
||||
{
|
||||
var gVARstatusesRAW=status_group_statuses_data.split(',');
|
||||
@@ -16780,6 +16796,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
MD_dial_timed_out=0;
|
||||
MDcheck_for_answer=0;
|
||||
VDRP_stage_seconds=0;
|
||||
VCAdata='x';
|
||||
|
||||
// UPDATE VICIDIAL_LOG ENTRY FOR THIS CALL PROCESS
|
||||
DialLog("end",nodeletevdac);
|
||||
@@ -18205,6 +18222,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
APIskip=0;
|
||||
talk_sec_url_secs='';
|
||||
temp_XFmin_talk_sec=0;
|
||||
VCAdata='x';
|
||||
document.getElementById("BannerPanel").style.background = panel_bgcolor;
|
||||
document.getElementById("BannerPanel").innerHTML = '';
|
||||
if (manual_auto_next > 0)
|
||||
@@ -18262,6 +18280,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection)
|
||||
{
|
||||
document.getElementById("NexTCalLPausE").innerHTML = "<a href=\"#\" onclick=\"next_call_pause_click();return false;\"><?php echo _QXZ("Next Call Pause"); ?></a>";
|
||||
}
|
||||
AMDnotesBoxhide();
|
||||
CBcommentsBoxhide();
|
||||
EAcommentsBoxhide();
|
||||
ContactSearchReset();
|
||||
@@ -21853,6 +21872,19 @@ function phone_number_format(formatphone) {
|
||||
}
|
||||
|
||||
|
||||
// ################################################################################
|
||||
// Hide the AMDnotesBox span upon click
|
||||
function AMDnotesBoxhide()
|
||||
{
|
||||
button_click_log = button_click_log + "" + SQLdate + "-----AMDnotesBoxhide---|";
|
||||
document.getElementById("AMDnotesBoxA").innerHTML = "";
|
||||
document.getElementById("AMDnotesBoxB").innerHTML = "";
|
||||
document.getElementById("AMDnotesBoxC").innerHTML = "";
|
||||
document.getElementById("AMDnotesBoxD").innerHTML = "";
|
||||
hideDiv('AMDnotesBox');
|
||||
}
|
||||
|
||||
|
||||
// ################################################################################
|
||||
// Hide the CBcommentsBox span upon click
|
||||
function CBcommentsBoxhide()
|
||||
@@ -22198,6 +22230,7 @@ function phone_number_format(formatphone) {
|
||||
// hideDiv('NothingBox2');
|
||||
hideDiv('ScriptTopBGspan');
|
||||
hideDiv('ManualValidateBox');
|
||||
hideDiv('AMDnotesBox');
|
||||
hideDiv('CBcommentsBox');
|
||||
hideDiv('EAcommentsBox');
|
||||
hideDiv('EAcommentsMinBox');
|
||||
@@ -23081,6 +23114,12 @@ function phone_number_format(formatphone) {
|
||||
if (dial_box_close_counter < 1)
|
||||
{hideDiv('TimerSpan');}
|
||||
}
|
||||
if (amd_box_close_counter > 0)
|
||||
{
|
||||
amd_box_close_counter = (amd_box_close_counter - 1);
|
||||
if (amd_box_close_counter < 1)
|
||||
{AMDnotesBoxhide();}
|
||||
}
|
||||
if (left_3way_timeout > 0)
|
||||
{left_3way_timeout = (left_3way_timeout - 1);}
|
||||
|
||||
@@ -25269,6 +25308,23 @@ if ($agent_display_dialable_leads > 0)
|
||||
</TABLE>
|
||||
</span>
|
||||
<?php //end AUDIT COMMENTS ADDED BY POUNDTEAM // ?>
|
||||
<span style="position:absolute;left:160px;top:<?php echo $HTheight ?>px;z-index:<?php $zi++; echo $zi ?>;" id="AMDnotesBox">
|
||||
<table border="0" bgcolor="#99FFCC" width="600px" height="70px">
|
||||
<tr bgcolor="#33FF99">
|
||||
<td align="left"><font class="sh_text"> <?php echo _QXZ("Outbound Call Greeting Analysis:"); ?> </font></td>
|
||||
<td align="right"><font class="sk_text"> <a href="#" onclick="AMDnotesBoxhide();return false;"><?php echo _QXZ("close"); ?></a> </font></td>
|
||||
</tr><tr>
|
||||
<td><font class="sh_text">
|
||||
<span id="AMDnotesBoxA"></span><br />
|
||||
<span id="AMDnotesBoxB"></span><br />
|
||||
<span id="AMDnotesBoxC"></span><br />
|
||||
</font></td>
|
||||
<td width="280px"><font class="sh_text">
|
||||
<span id="AMDnotesBoxD"></span>
|
||||
</font></td>
|
||||
</tr></table>
|
||||
</span>
|
||||
|
||||
<span style="position:absolute;left:5px;top:<?php echo $HTheight ?>px;z-index:<?php $zi++; echo $zi ?>;" id="CBcommentsBox">
|
||||
<table border="0" bgcolor="#FFFFCC" width="<?php echo $HCwidth ?>px" height="70px">
|
||||
<tr bgcolor="#FFFF66">
|
||||
|
||||
+41
-8
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
|
||||
# version: 20260515103901
|
||||
# version: 20260528124401
|
||||
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-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>
|
||||
@@ -202,7 +202,8 @@ campaigns-manual_vm_status_updates Manual VM Status Updates <QXZ>If enabled, thi
|
||||
campaigns-am_message_wildcards AM Message Wildcards <QXZ>This option, if enabled, allows you to go to the AM Message Wildcard administration page where you can define wildcards that can match data in a default lead field and can play a different message based upon the data in a specific lead. Default is N for disabled.</QXZ>
|
||||
campaigns-amd_type AMD Type <QXZ>This setting allows you to define the type of Answering Machine Detection that should be used when routing answered outbound calls. The default is AMD, for the built-in AMD application. You should only change this setting if you have one of the listed third-party AMD solutions installed on your system and you have confirmed the proper Routing Extension to use with your system administrator.</QXZ>
|
||||
campaigns-amd_send_to_vmx AMD send to Action <QXZ>This option allows you to define whether a call is sent to the Answering Machine Message or CPD AMD Action when an answering machine is detected, or if it is hung up. If this is set to N, then the call will be hung up as soon as it is determined to be an answering machine. Default is N.</QXZ>
|
||||
campaigns-amd_agent_route_options AMD Agent Route Options <QXZ>If enabled and you are using Asterisk AMD, this setting will allow you to define the AMD statuses and responses for calls going through AMD that will be sent to agents, overriding the default which sends all HUMAN and NOTSURE status calls to agents. To see the AMD statuses and responses for the calls that have been logged on your system, go to the AMD Log Report on the Admin Utilities page. The PENDING option for this setting will allow you to click on this option to go to the Modify Settings Container page to edit the settings without making them active yet. Default is DISABLED. There is also a special option you can enable in this settings container, NOAUDIODATA-Hangup-ENABLED, which will enable the immediate hangup of calls that have no audio data when they reach the AMD routing script. The Settings Container for these options allow for multiple lines of settings, with each line containing one AMD status-response pair each separated by a comma. For example:</QXZ><BR>HUMAN,HUMAN<BR>NOTSURE,TOOLONG<BR>
|
||||
campaigns-amd_agent_route_options AMD Agent Route Options <QXZ>If enabled and you are using Asterisk AMD, this setting will allow you to define the AMD statuses and responses for calls going through AMD that will be sent to agents, overriding the default which sends all HUMAN and NOTSURE status calls to agents. To see the AMD statuses and responses for the calls that have been logged on your system, go to the AMD Log Report on the Admin Utilities page. The PENDING option for this setting will allow you to click on this option to go to the Modify Settings Container page to edit the settings without making them active yet. Default is DISABLED. There is also a special option you can enable in this settings container, NOAUDIODATA-Hangup-ENABLED, which will enable the immediate hangup of calls that have no audio data when they reach the AMD routing script. There are also FAX-Hangup-ENABLED and FAS-Hangup-ENABLED options to perform immediate hangups for FAX and FAS detected calls. The Settings Container for these options allow for multiple lines of settings, with each line containing one AMD status-response pair each separated by a comma. For example:</QXZ><BR>HUMAN,HUMAN<BR>NOTSURE,TOOLONG<BR>
|
||||
campaigns-amd_agent_display ViciAMD Agent Display <QXZ>If enabled, and you are using the ViciAMD AMD-Type, then this feature will show the AMDSTATUS, AMDCAUSE and the transcribed customer side of the beginning of the outbound phone call to the agent on the agent screen as soon as the call is routed to the agent. Default is DISABLED.</QXZ>
|
||||
campaigns-cpd_amd_action CPD AMD Action <QXZ>If you are using the Sangoma ParaXip Call Progress Detection software then you will want to enable this setting either setting it to DISPO which will disposition the call as AA and hang it up if the call is being processed and has not been sent to an agent yet or MESSAGE which will send the call to the defined Answering Machine Message for this campaign. Default is DISABLED. Setting this to INGROUP will send an answering machine to an inbound group. Setting this to CALLMENU will send an answering machine to a Call Menu in the system.</QXZ>
|
||||
campaigns-cpd_unknown_action CPD Unknown Action <QXZ>If you are using the Sangoma ParaXip Call Progress Detection software and you want to send calls that have an Unknown result to a destination other than an agent, then you will want to enable this setting either setting it to DISPO which will disposition the call as AA and hang it up if the call is being processed and has not been sent to an agent yet or MESSAGE which will send the call to the defined Answering Machine Message for this campaign. Default is DISABLED. Setting this to INGROUP will send an answering machine to an inbound group. Setting this to CALLMENU will send an answering machine to a Call Menu in the system.</QXZ>
|
||||
campaigns-amd_inbound_group AMD Inbound Group <QXZ>If CPD AMD Action is set to INGROUP, then this is the Inbound Group that the call will be sent to if an answering machine is detected.</QXZ>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
# lead_tools_advanced.php - Various tools for lead basic lead management, advanced version.
|
||||
#
|
||||
# Copyright (C) 2025 Matt Florell,Michael Cargile <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
# Copyright (C) 2026 Matt Florell,Michael Cargile <vicidial@gmail.com> LICENSE: AGPLv2
|
||||
#
|
||||
# CHANGES
|
||||
# 131016-1948 - Initial Build based upon lead_tools.php
|
||||
@@ -19,10 +19,11 @@
|
||||
# 220228-1012 - Added allow_web_debug system setting
|
||||
# 241114-0813 - Raised max_count default to 60
|
||||
# 250321-1152 - Changed status selector from dropdown to multi-select on Move, Update, and Delete
|
||||
# 260529-0905 - Code updates for PHP8 compatibility
|
||||
|
||||
|
||||
$version = '2.14-15';
|
||||
$build = '250321-1152';
|
||||
$version = '2.14-16';
|
||||
$build = '260529-0905';
|
||||
|
||||
# This limit is to prevent data inconsistancies.
|
||||
# If there are too many leads in a list this
|
||||
@@ -35,12 +36,13 @@ $max_count = 60;
|
||||
require("dbconnect_mysqli.php");
|
||||
require("functions.php");
|
||||
|
||||
$PHP_AUTH_USER=$_SERVER['PHP_AUTH_USER'];
|
||||
$PHP_AUTH_PW=$_SERVER['PHP_AUTH_PW'];
|
||||
$PHP_AUTH_USER=(array_key_exists('PHP_AUTH_USER', $_SERVER) ? $_SERVER['PHP_AUTH_USER'] : "");
|
||||
$PHP_AUTH_PW=(array_key_exists('PHP_AUTH_PW', $_SERVER) ? $_SERVER['PHP_AUTH_PW'] : "");
|
||||
$PHP_SELF=$_SERVER['PHP_SELF'];
|
||||
$PHP_SELF = preg_replace('/\.php.*/i','.php',$PHP_SELF);
|
||||
$ip = getenv("REMOTE_ADDR");
|
||||
$SQLdate = date("Y-m-d H:i:s");
|
||||
$STARTtime=date("U");
|
||||
|
||||
$DB=0;
|
||||
$move_submit="";
|
||||
@@ -53,6 +55,8 @@ $confirm_update="";
|
||||
$confirm_delete="";
|
||||
$confirm_reset_called_count="";
|
||||
$confirm_callback="";
|
||||
$delete_status="";
|
||||
$reset_called_count_status="";
|
||||
|
||||
if (isset($_GET["DB"])) {$DB=$_GET["DB"];}
|
||||
elseif (isset($_POST["DB"])) {$DB=$_POST["DB"];}
|
||||
@@ -78,8 +82,6 @@ if (isset($_GET["confirm_callback"])) {$confirm_callback=$_GET["confirm_callback
|
||||
elseif (isset($_POST["confirm_callback"])) {$confirm_callback=$_POST["confirm_callback"];}
|
||||
# Several sets of variable inputs are further down in the code as well
|
||||
|
||||
$DB = preg_replace('/[^0-9]/','',$DB);
|
||||
|
||||
#############################################
|
||||
##### START SYSTEM_SETTINGS LOOKUP #####
|
||||
$sys_settings_stmt = "SELECT use_non_latin,outbound_autodial_active,sounds_central_control_active,enable_languages,language_method,admin_screen_colors,report_default_format,allow_manage_active_lists,allow_web_debug FROM system_settings;";
|
||||
@@ -104,7 +106,8 @@ else
|
||||
# there is something really weird if there are no system settings
|
||||
exit;
|
||||
}
|
||||
if ($SSallow_web_debug < 1) {$DB=0;}
|
||||
if ($SSallow_web_debug < 1 || !isset($DB)) {$DB=0;}
|
||||
$DB=preg_replace("/[^0-9a-zA-Z]/","",$DB);
|
||||
##### END SETTINGS LOOKUP #####
|
||||
###########################################
|
||||
|
||||
@@ -222,6 +225,7 @@ $SSstd_row5_background='A3C3D6';
|
||||
$SSalt_row1_background='BDFFBD';
|
||||
$SSalt_row2_background='99FF99';
|
||||
$SSalt_row3_background='CCFFCC';
|
||||
if (!isset($SSweb_logo)) {$SSweb_logo='default_new';}
|
||||
|
||||
if ($SSadmin_screen_colors != 'default')
|
||||
{
|
||||
@@ -4841,6 +4845,7 @@ if (
|
||||
echo "</body></html>\n";
|
||||
}
|
||||
|
||||
$ENDtime=date("U"); $RUNtime = ($ENDtime - $STARTtime);
|
||||
echo "</td></tr></table>\n";
|
||||
echo "<br><center><FONT STYLE=\"font-family:HELVETICA;font-size:9;color:black;\"><br><br><!-- RUNTIME: $RUNtime seconds<BR> -->";
|
||||
echo _QXZ("VERSION").": $version ";
|
||||
|
||||
Reference in New Issue
Block a user