diff --git a/agi/VD_amd.agi b/agi/VD_amd.agi
index 7f50b3d2..56f3b5a1 100644
--- a/agi/VD_amd.agi
+++ b/agi/VD_amd.agi
@@ -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();
diff --git a/docs/VICIDIAL_statuses.txt b/docs/VICIDIAL_statuses.txt
index 61145abf..668cb3ee 100644
--- a/docs/VICIDIAL_statuses.txt
+++ b/docs/VICIDIAL_statuses.txt
@@ -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
diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql
index fb5f5f77..6c40b82c 100644
--- a/extras/MySQL_AST_CREATE_tables.sql
+++ b/extras/MySQL_AST_CREATE_tables.sql
@@ -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();
diff --git a/extras/upgrade_2.14.sql b/extras/upgrade_2.14.sql
index 533d1ac9..8805b157 100644
--- a/extras/upgrade_2.14.sql
+++ b/extras/upgrade_2.14.sql
@@ -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;
diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php
index a1d3c7a5..ea477f42 100644
--- a/www/agc/vdc_db_query.php
+++ b/www/agc/vdc_db_query.php
@@ -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';";
diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php
index 16b1dd00..e8a86010 100644
--- a/www/agc/vicidial.php
+++ b/www/agc/vicidial.php
@@ -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='';
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='';
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=;
+ var VCAdata='x';
var DiaLControl_auto_HTML = "
\" border=\"0\" alt=\"You are paused\" />";
var DiaLControl_auto_HTML_ready = "
\" border=\"0\" alt=\"You are active\" />";
var DiaLControl_auto_HTML_OFF = "
\" 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 = " " + 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 = " " + VCAdata_elements[0];
+ document.getElementById("AMDnotesBoxB").innerHTML = " " + VCAdata_elements[1];
+ document.getElementById("AMDnotesBoxC").innerHTML = " " + VCAdata_elements[2];
+ document.getElementById("AMDnotesBoxD").innerHTML = "
" + 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 = "";
}
+ 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)
+
+
+
+ | |
+ |
+
+
+
+
+
+ |
+
+
+ |
+
+
+