Added ability to play multiple audio prompts for outbound survey campaigns and to use DYN for lead field wildcards defined as audio prompts.

git-svn-id: svn://192.168.202.10@3178 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2019-11-22 04:42:45 +00:00
parent 4bc5d64da3
commit e9e2d442dc
6 changed files with 182 additions and 117 deletions
+3
View File
@@ -458,6 +458,9 @@ OTHER CHANGES:
This includes different wording, different sizes and removing the blank
space below the recording buttons.
128. Added ability to play multiple audio prompts for outbound survey campaigns
and to use DYN for lead field wildcards defined as audio prompts.
+146 -95
View File
@@ -122,6 +122,7 @@
# 190713-1045 - Added Call Quota logging
# 190925-1348 - Added campaign SIP Actions processing
# 191104-2026 - Added code for Khomp version compatibility
# 191120-2235 - Added DYN multi-prompt survey prompts functionality
#
$script = 'agi-VDAD_ALL_outbound.agi';
@@ -1014,43 +1015,58 @@ if ($VDACaffected_rows > 0)
}
### pre-generate Cepstral first and last name as an audio file
##### BEGIN TTS or DYN audio prompt processing, pre-generate Cepstral first and last name as an audio file #####
if ($call_handle_method =~ /SURVEYCAMPCEP/)
{
$t=0;
if ($survey_first_audio_file =~ /^TTS/)
if ($survey_first_audio_file =~ /^TTS|^DYN/)
{
$TTS_prompt[$t] = 'survey_first_audio_file';
$TTS_filename[$t] = $survey_first_audio_file;
$TTS_filename[$t]=~s/^TTS//gi;
$TTS_DYN[$t]=0;
if ($survey_first_audio_file =~ /^DYN/)
{$TTS_DYN[$t]++;}
$TTS_filename[$t]=~s/^TTS|^DYN//gi;
$t++;
}
if ($survey_opt_in_audio_file =~ /^TTS/)
if ($survey_opt_in_audio_file =~ /^TTS|^DYN/)
{
$TTS_prompt[$t] = 'survey_opt_in_audio_file';
$TTS_filename[$t] = $survey_opt_in_audio_file;
$TTS_filename[$t]=~s/^TTS//gi;
$TTS_DYN[$t]=0;
if ($survey_opt_in_audio_file =~ /^DYN/)
{$TTS_DYN[$t]++;}
$TTS_filename[$t]=~s/^TTS|^DYN//gi;
$t++;
}
if ($survey_ni_audio_file =~ /^TTS/)
if ($survey_ni_audio_file =~ /^TTS|^DYN/)
{
$TTS_prompt[$t] = 'survey_ni_audio_file';
$TTS_filename[$t] = $survey_ni_audio_file;
$TTS_filename[$t]=~s/^TTS//gi;
$TTS_DYN[$t]=0;
if ($survey_ni_audio_file =~ /^DYN/)
{$TTS_DYN[$t]++;}
$TTS_filename[$t]=~s/^TTS|^DYN//gi;
$t++;
}
if ($survey_third_audio_file =~ /^TTS/)
if ($survey_third_audio_file =~ /^TTS|^DYN/)
{
$TTS_prompt[$t] = 'survey_third_audio_file';
$TTS_filename[$t] = $survey_third_audio_file;
$TTS_filename[$t]=~s/^TTS//gi;
$TTS_DYN[$t]=0;
if ($survey_third_audio_file =~ /^DYN/)
{$TTS_DYN[$t]++;}
$TTS_filename[$t]=~s/^TTS|^DYN//gi;
$t++;
}
if ($survey_fourth_audio_file =~ /^TTS/)
if ($survey_fourth_audio_file =~ /^TTS|^DYN/)
{
$TTS_prompt[$t] = 'survey_fourth_audio_file';
$TTS_filename[$t] = $survey_fourth_audio_file;
$TTS_filename[$t]=~s/^TTS//gi;
$TTS_DYN[$t]=0;
if ($survey_fourth_audio_file =~ /^DYN/)
{$TTS_DYN[$t]++;}
$TTS_filename[$t]=~s/^TTS|^DYN//gi;
$t++;
}
@@ -1104,105 +1120,115 @@ if ($VDACaffected_rows > 0)
$s=0;
while ($s < $t)
{
$stmtA = "SELECT tts_text,tts_voice FROM vicidial_tts_prompts where tts_id='$TTS_filename[$s]';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$dbhP=$dbhA; $mysql_count='01057'; $MEL_aff_rows=$sthArows; &mysql_error_logging;
if ($s < 1) {$hideCLI = '';}
else {$hideCLI = '&';}
if ($sthArows > 0)
if ($TTS_DYN[$s] < 1)
{
@aryA = $sthA->fetchrow_array;
$TTS_voice = $aryA[1];
$TTS_text[$s] = $aryA[0];
### BEGIN replace variables with record values ###
$TTS_text[$s] =~ s/--A--lead_id--B--/$TTS_lead_id/gi;
$TTS_text[$s] =~ s/--A--entry_date--B--/$TTS_entry_date/gi;
$TTS_text[$s] =~ s/--A--modify_date--B--/$TTS_modify_date/gi;
$TTS_text[$s] =~ s/--A--status--B--/$TTS_status/gi;
$TTS_text[$s] =~ s/--A--user--B--/$TTS_user/gi;
$TTS_text[$s] =~ s/--A--vendor_lead_code--B--/$TTS_vendor_lead_code/gi;
$TTS_text[$s] =~ s/--A--source_id--B--/$TTS_source_id/gi;
$TTS_text[$s] =~ s/--A--list_id--B--/$TTS_list_id/gi;
$TTS_text[$s] =~ s/--A--phone_number--B--/$TTS_phone_number/gi;
$TTS_text[$s] =~ s/--A--title--B--/$TTS_title/gi;
$TTS_text[$s] =~ s/--A--first_name--B--/$TTS_first_name/gi;
$TTS_text[$s] =~ s/--A--middle_initial--B--/$TTS_middle_initial/gi;
$TTS_text[$s] =~ s/--A--last_name--B--/$TTS_last_name/gi;
$TTS_text[$s] =~ s/--A--address1--B--/$TTS_address1/gi;
$TTS_text[$s] =~ s/--A--address2--B--/$TTS_address2/gi;
$TTS_text[$s] =~ s/--A--address3--B--/$TTS_address3/gi;
$TTS_text[$s] =~ s/--A--city--B--/$TTS_city/gi;
$TTS_text[$s] =~ s/--A--state--B--/$TTS_state/gi;
$TTS_text[$s] =~ s/--A--province--B--/$TTS_province/gi;
$TTS_text[$s] =~ s/--A--postal_code--B--/$TTS_postal_code/gi;
$TTS_text[$s] =~ s/--A--country_code--B--/$TTS_country_code/gi;
$TTS_text[$s] =~ s/--A--gender--B--/$TTS_gender/gi;
$TTS_text[$s] =~ s/--A--date_of_birth--B--/$TTS_date_of_birth/gi;
$TTS_text[$s] =~ s/--A--alt_phone--B--/$TTS_alt_phone/gi;
$TTS_text[$s] =~ s/--A--email--B--/$TTS_email/gi;
$TTS_text[$s] =~ s/--A--security_phrase--B--/$TTS_security_phrase/gi;
$TTS_text[$s] =~ s/--A--comments--B--/$TTS_comments/gi;
$TTS_text[$s] =~ s/--A--called_count--B--/$TTS_called_count/gi;
$TTS_text[$s] =~ s/--A--last_local_call_time--B--/$TTS_last_local_call_time/gi;
$TTS_text[$s] =~ s/--A--rank--B--/$TTS_rank/gi;
$TTS_text[$s] =~ s/--A--owner--B--/$TTS_owner/gi;
### END replace variables with record values ###
### BEGIN check for --C-- and --D-- tags for static file replacement
if ( ($TTS_text[$s] =~ /--C--/) || ($TTS_text[$s] =~ /--D--/) )
$stmtA = "SELECT tts_text,tts_voice FROM vicidial_tts_prompts where tts_id='$TTS_filename[$s]';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
$dbhP=$dbhA; $mysql_count='01057'; $MEL_aff_rows=$sthArows; &mysql_error_logging;
if ($s < 1) {$hideCLI = '';}
else {$hideCLI = '&';}
if ($sthArows > 0)
{
$Cdash='--C--';
$Ddash='--D--';
@static_check = split(/--C--/,$TTS_text[$s]);
$sc=0;
$sr=0;
foreach(@static_check)
@aryA = $sthA->fetchrow_array;
$TTS_voice = $aryA[1];
$TTS_text[$s] = $aryA[0];
}
$sthA->finish();
}
else
{$TTS_text[$s] = $TTS_filename[$s];}
### BEGIN replace variables with record values ###
$TTS_text[$s] =~ s/--A--lead_id--B--/$TTS_lead_id/gi;
$TTS_text[$s] =~ s/--A--entry_date--B--/$TTS_entry_date/gi;
$TTS_text[$s] =~ s/--A--modify_date--B--/$TTS_modify_date/gi;
$TTS_text[$s] =~ s/--A--status--B--/$TTS_status/gi;
$TTS_text[$s] =~ s/--A--user--B--/$TTS_user/gi;
$TTS_text[$s] =~ s/--A--vendor_lead_code--B--/$TTS_vendor_lead_code/gi;
$TTS_text[$s] =~ s/--A--source_id--B--/$TTS_source_id/gi;
$TTS_text[$s] =~ s/--A--list_id--B--/$TTS_list_id/gi;
$TTS_text[$s] =~ s/--A--phone_number--B--/$TTS_phone_number/gi;
$TTS_text[$s] =~ s/--A--title--B--/$TTS_title/gi;
$TTS_text[$s] =~ s/--A--first_name--B--/$TTS_first_name/gi;
$TTS_text[$s] =~ s/--A--middle_initial--B--/$TTS_middle_initial/gi;
$TTS_text[$s] =~ s/--A--last_name--B--/$TTS_last_name/gi;
$TTS_text[$s] =~ s/--A--address1--B--/$TTS_address1/gi;
$TTS_text[$s] =~ s/--A--address2--B--/$TTS_address2/gi;
$TTS_text[$s] =~ s/--A--address3--B--/$TTS_address3/gi;
$TTS_text[$s] =~ s/--A--city--B--/$TTS_city/gi;
$TTS_text[$s] =~ s/--A--state--B--/$TTS_state/gi;
$TTS_text[$s] =~ s/--A--province--B--/$TTS_province/gi;
$TTS_text[$s] =~ s/--A--postal_code--B--/$TTS_postal_code/gi;
$TTS_text[$s] =~ s/--A--country_code--B--/$TTS_country_code/gi;
$TTS_text[$s] =~ s/--A--gender--B--/$TTS_gender/gi;
$TTS_text[$s] =~ s/--A--date_of_birth--B--/$TTS_date_of_birth/gi;
$TTS_text[$s] =~ s/--A--alt_phone--B--/$TTS_alt_phone/gi;
$TTS_text[$s] =~ s/--A--email--B--/$TTS_email/gi;
$TTS_text[$s] =~ s/--A--security_phrase--B--/$TTS_security_phrase/gi;
$TTS_text[$s] =~ s/--A--comments--B--/$TTS_comments/gi;
$TTS_text[$s] =~ s/--A--called_count--B--/$TTS_called_count/gi;
$TTS_text[$s] =~ s/--A--last_local_call_time--B--/$TTS_last_local_call_time/gi;
$TTS_text[$s] =~ s/--A--rank--B--/$TTS_rank/gi;
$TTS_text[$s] =~ s/--A--owner--B--/$TTS_owner/gi;
### END replace variables with record values ###
### BEGIN check for --C-- and --D-- tags for static file replacement
if ( ($TTS_text[$s] =~ /--C--/) || ($TTS_text[$s] =~ /--D--/) )
{
$Cdash='--C--';
$Ddash='--D--';
@static_check = split(/--C--/,$TTS_text[$s]);
$sc=0;
$sr=0;
foreach(@static_check)
{
if ($sc > 0)
{
if ($sc > 0)
$static_check[$sc] =~ s/--D-.*//gi;
$static_check_lc = lc($static_check[$sc]);
print STDERR " Checking For Static Replacement: $static_check[$sc]|$static_check_lc$wav\n";
$static_found=0;
if (-e "/var/lib/asterisk/sounds/tts_static/$static_check_lc$wav")
{
$static_check[$sc] =~ s/--D-.*//gi;
$static_check_lc = lc($static_check[$sc]);
print STDERR " Checking For Static Replacement: $static_check[$sc]|$static_check_lc$wav\n";
$static_found=0;
if (-e "/var/lib/asterisk/sounds/tts_static/$static_check_lc$wav")
$CDstatic = "<audio src='/var/lib/asterisk/sounds/tts_static/$static_check_lc$wav' /> ";
$static_found++;
}
else
{
if (-e "/var/lib/asterisk/sounds/$static_check_lc$wav")
{
$CDstatic = "<audio src='/var/lib/asterisk/sounds/tts_static/$static_check_lc$wav' /> ";
$CDstatic = "<audio src='/var/lib/asterisk/sounds/$static_check_lc$wav' /> ";
$static_found++;
}
else
{
if (-e "/var/lib/asterisk/sounds/$static_check_lc$wav")
$firsttwo = substr($static_check_lc, 0, 2);
if (-e "/var/lib/asterisk/sounds/tts_static/$firsttwo/$static_check_lc$wav")
{
$CDstatic = "<audio src='/var/lib/asterisk/sounds/$static_check_lc$wav' /> ";
$CDstatic = "<audio src='/var/lib/asterisk/sounds/tts_static/$firsttwo/$static_check_lc$wav' /> ";
$static_found++;
}
else
{
$firsttwo = substr($static_check_lc, 0, 2);
if (-e "/var/lib/asterisk/sounds/tts_static/$firsttwo/$static_check_lc$wav")
{
$CDstatic = "<audio src='/var/lib/asterisk/sounds/tts_static/$firsttwo/$static_check_lc$wav' /> ";
$static_found++;
}
}
}
if ($static_found > 0)
{
$CDmatch = "$Cdash$static_check[$sc]$Ddash";
$TTS_text[$s] =~ s/$CDmatch/$CDstatic/gi;
print STDERR " Static Replacement Found: $CDmatch|$CDstatic\n";
$sr++;
}
}
$sc++;
if ($static_found > 0)
{
$CDmatch = "$Cdash$static_check[$sc]$Ddash";
$TTS_text[$s] =~ s/$CDmatch/$CDstatic/gi;
print STDERR " Static Replacement Found: $CDmatch|$CDstatic\n";
$sr++;
}
}
$TTS_text[$s] =~ s/--C--|--D--//gi;
print STDERR "\nStatic Replacements Found: $sc|$sr\n";
$sc++;
}
### END check for --C-- and --D-- tags for static file replacement
$TTS_text[$s] =~ s/--C--|--D--//gi;
print STDERR "\nStatic Replacements Found: $sc|$sr\n";
}
### END check for --C-- and --D-- tags for static file replacement
if ($TTS_DYN[$s] < 1)
{
### filter input for CLI-safe characters
$TTS_text[$s] =~ s/[^,\.\<\>\'\/\=\_\-\: 0-9a-zA-Z]//gi;
$TTS_textRAW[$s] = $TTS_text[$s];
@@ -1231,7 +1257,8 @@ if ($VDACaffected_rows > 0)
$TTS_filename_path[$s] = $PATHsounds . "/tts/" . $enc_ftl . "/tts-" . $enc;
print STDERR "\nfilename: $TTS_filename_path[$s]\n";
}
$sthA->finish();
else
{$TTS_filename_path[$s] = $TTS_text[$s];}
$s++;
}
@@ -1253,6 +1280,8 @@ if ($VDACaffected_rows > 0)
}
}
}
##### END TTS or DYN audio prompt processing, pre-generate Cepstral first and last name as an audio file #####
$xCLlist_id=0;
$called_count=0;
@@ -4197,7 +4226,29 @@ sub enter_pin_number
$interrupt_digit='';
undef $interrupt_digit;
$interrupt_digit = $AGI->stream_file("$sound","$survey_dtmf_digits");
if ( $sound ne "")
{
if ($sound =~ /\|/)
{
@sound_array = split(/\|/,$sound);
$w=0;
foreach(@sound_array)
{
if (length($sound_array[$w])>0)
{
if ($interrupt_digit < 2)
{
$interrupt_digit = $AGI->stream_file("$sound_array[$w]","$survey_dtmf_digits");
}
}
$w++;
}
}
else
{$interrupt_digit = $AGI->stream_file("$sound","$survey_dtmf_digits");}
}
if ($AGILOG) {$agi_string = "interrupt_digit |$interrupt_digit| timeout |$survey_wait_sec|$survey_wait_msec|"; &agi_output;}
+6 -6
View File
@@ -825,11 +825,11 @@ qc_get_record_launch ENUM('NONE','SCRIPT','WEBFORM','QCSCRIPT','QCWEBFORM') defa
qc_show_recording ENUM('Y','N') default 'Y',
qc_web_form_address VARCHAR(255),
qc_script VARCHAR(20),
survey_first_audio_file VARCHAR(50) default 'US_pol_survey_hello',
survey_first_audio_file TEXT,
survey_dtmf_digits VARCHAR(16) default '1238',
survey_ni_digit VARCHAR(1) default '8',
survey_opt_in_audio_file VARCHAR(50) default 'US_pol_survey_transfer',
survey_ni_audio_file VARCHAR(50) default 'US_thanks_no_contact',
survey_opt_in_audio_file TEXT,
survey_ni_audio_file TEXT,
survey_method ENUM('AGENT_XFER','VOICEMAIL','EXTENSION','HANGUP','CAMPREC_60_WAV','CALLMENU','VMAIL_NO_INST') default 'AGENT_XFER',
survey_no_response_action ENUM('OPTIN','OPTOUT','DROP') default 'OPTIN',
survey_ni_status VARCHAR(6) default 'NI',
@@ -855,11 +855,11 @@ default_group_alias VARCHAR(30) default '',
vtiger_search_dead ENUM('DISABLED','ASK','RESURRECT') default 'ASK',
vtiger_status_call ENUM('Y','N') default 'N',
survey_third_digit VARCHAR(1) default '',
survey_third_audio_file VARCHAR(50) default 'US_thanks_no_contact',
survey_third_audio_file TEXT,
survey_third_status VARCHAR(6) default 'NI',
survey_third_exten VARCHAR(20) default '8300',
survey_fourth_digit VARCHAR(1) default '',
survey_fourth_audio_file VARCHAR(50) default 'US_thanks_no_contact',
survey_fourth_audio_file TEXT,
survey_fourth_status VARCHAR(6) default 'NI',
survey_fourth_exten VARCHAR(20) default '8300',
drop_lockout_time VARCHAR(6) default '0',
@@ -4570,4 +4570,4 @@ INSERT INTO vicidial_settings_containers(container_id,container_notes,container_
UPDATE system_settings set vdc_agent_api_active='1';
UPDATE system_settings SET db_schema_version='1581',db_schema_update_date=NOW(),reload_timestamp=NOW();
UPDATE system_settings SET db_schema_version='1582',db_schema_update_date=NOW(),reload_timestamp=NOW();
+8
View File
@@ -1123,3 +1123,11 @@ ALTER TABLE system_settings ADD enable_first_webform ENUM('0','1') default '1';
ALTER TABLE system_settings ADD recording_buttons VARCHAR(30) default 'START_STOP';
UPDATE system_settings SET db_schema_version='1581',db_schema_update_date=NOW() where db_schema_version < 1581;
ALTER TABLE vicidial_campaigns MODIFY survey_first_audio_file TEXT;
ALTER TABLE vicidial_campaigns MODIFY survey_opt_in_audio_file TEXT;
ALTER TABLE vicidial_campaigns MODIFY survey_ni_audio_file TEXT;
ALTER TABLE vicidial_campaigns MODIFY survey_third_audio_file TEXT;
ALTER TABLE vicidial_campaigns MODIFY survey_fourth_audio_file TEXT;
UPDATE system_settings SET db_schema_version='1582',db_schema_update_date=NOW() where db_schema_version < 1582;
+13 -10
View File
@@ -4595,12 +4595,13 @@ else
# 191111-1601 - Added additional user status group setting(status_group_id)
# 191113-1751 - Added add_dnc_phone add_fpg_phone API functions
# 191114-0923 - Added enable_first_webform and recording_buttons system settings
# 191121-2256 - Extended survey audio file lengths
#
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 9 to access this page the first time
$admin_version = '2.14-729a';
$build = '191114-0923';
$admin_version = '2.14-730a';
$build = '191121-2256';
$STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s");
@@ -10314,7 +10315,7 @@ if ($ADD==21)
$rslt=mysql_to_mysqli($stmt, $link);
}
$stmt="INSERT INTO vicidial_campaigns (campaign_id,campaign_name,campaign_description,active,dial_status_a,lead_order,park_ext,park_file_name,web_form_address,allow_closers,hopper_level,auto_dial_level,next_agent_call,local_call_time,voicemail_ext,campaign_script,get_call_launch,campaign_changedate,campaign_stats_refresh,list_order_mix,web_form_address_two,start_call_url,dispo_call_url,na_call_url,user_group,web_form_address_three,campaign_script_two) values('$campaign_id','$campaign_name','$campaign_description','$active','NEW','DOWN','$park_ext','$park_file_name','" . mysqli_real_escape_string($link, $web_form_address) . "','$allow_closers','$hopper_level','$auto_dial_level','$next_agent_call','$local_call_time','$voicemail_ext','$script_id','$get_call_launch','$SQLdate','Y','DISABLED','','','','','$user_group','','$campaign_script_two');";
$stmt="INSERT INTO vicidial_campaigns (campaign_id,campaign_name,campaign_description,active,dial_status_a,lead_order,park_ext,park_file_name,web_form_address,allow_closers,hopper_level,auto_dial_level,next_agent_call,local_call_time,voicemail_ext,campaign_script,get_call_launch,campaign_changedate,campaign_stats_refresh,list_order_mix,web_form_address_two,start_call_url,dispo_call_url,na_call_url,user_group,web_form_address_three,campaign_script_two,survey_first_audio_file,survey_ni_audio_file,survey_opt_in_audio_file,survey_third_audio_file,survey_fourth_audio_file) values('$campaign_id','$campaign_name','$campaign_description','$active','NEW','DOWN','$park_ext','$park_file_name','" . mysqli_real_escape_string($link, $web_form_address) . "','$allow_closers','$hopper_level','$auto_dial_level','$next_agent_call','$local_call_time','$voicemail_ext','$script_id','$get_call_launch','$SQLdate','Y','DISABLED','','','','','$user_group','','$campaign_script_two','US_pol_survey_hello','US_thanks_no_contact','US_pol_survey_transfer','US_thanks_no_contact','US_thanks_no_contact');";
$rslt=mysql_to_mysqli($stmt, $link);
$stmtA="INSERT INTO vicidial_campaign_stats (campaign_id) values('$campaign_id');";
@@ -14571,13 +14572,15 @@ if ($ADD==41)
$survey_wait_sec = '10';
$survey_first_audio_file = 'US_pol_survey_hello';
$survey_method = 'AGENT_XFER';
$survey_ni_audio_file = '';
$survey_ni_audio_file = 'US_thanks_no_contact';
$survey_ni_digit = '8';
$survey_ni_status = 'NI';
$survey_no_response_action = 'OPTIN';
$survey_opt_in_audio_file = 'US_pol_survey_transfer';
$survey_response_digit_map = '1-DEMOCRAT|2-REPUBLICAN|3-INDEPENDANT|8-OPTOUT|X-NO RESPONSE|';
$survey_xfer_exten = '8300';
$survey_third_audio_file = 'US_thanks_no_contact';
$survey_fourth_audio_file = 'US_thanks_no_contact';
$voicemail_ext = '';
$cpd_amd_action = 'DISABLED';
$cpd_unknown_action = 'DISABLED';
@@ -25624,27 +25627,27 @@ if ($ADD==31)
{
echo "<center><br><b>"._QXZ("SURVEY SETTINGS FOR THIS CAMPAIGN").":</b><br>\n";
echo "<form action=$PHP_SELF method=POST name=admin_form id=admin_form><center><TABLE width=750 cellspacing=3>\n";
echo "<form action=$PHP_SELF method=POST name=admin_form id=admin_form><center><TABLE width=850 cellspacing=3>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right><input type=hidden name=ADD value=40A>\n";
echo "<input type=hidden name=campaign_id value=\"$campaign_id\">\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey First Audio File").": </td><td><input type=text size=50 maxlength=50 name=survey_first_audio_file id=survey_first_audio_file value=\"$survey_first_audio_file\"> <a href=\"javascript:launch_chooser('survey_first_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_first_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey First Audio File").": </td><td nowrap><input type=text size=70 maxlength=1000 name=survey_first_audio_file id=survey_first_audio_file value=\"$survey_first_audio_file\"> <a href=\"javascript:launch_chooser('survey_first_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_first_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey DTMF Digits").": </td><td><input type=text size=16 maxlength=16 name=survey_dtmf_digits value=\"$survey_dtmf_digits\"> $NWB#campaigns-survey_dtmf_digits$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Not Interested Digit").": </td><td><input type=text size=5 maxlength=1 name=survey_ni_digit value=\"$survey_ni_digit\"> $NWB#campaigns-survey_ni_digit$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Wait Seconds").": </td><td><input type=text size=5 maxlength=2 name=survey_wait_sec value=\"$survey_wait_sec\"> $NWB#campaigns-survey_wait_sec$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Opt-in Audio File").": </td><td><input type=text size=50 maxlength=50 name=survey_opt_in_audio_file id=survey_opt_in_audio_file value=\"$survey_opt_in_audio_file\"> <a href=\"javascript:launch_chooser('survey_opt_in_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_opt_in_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Not Interested Audio File").": </td><td><input type=text size=50 maxlength=50 name=survey_ni_audio_file id=survey_ni_audio_file value=\"$survey_ni_audio_file\"> <a href=\"javascript:launch_chooser('survey_ni_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_ni_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Opt-in Audio File").": </td><td nowrap><input type=text size=70 maxlength=1000 name=survey_opt_in_audio_file id=survey_opt_in_audio_file value=\"$survey_opt_in_audio_file\"> <a href=\"javascript:launch_chooser('survey_opt_in_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_opt_in_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Not Interested Audio File").": </td><td nowrap><input type=text size=70 maxlength=1000 name=survey_ni_audio_file id=survey_ni_audio_file value=\"$survey_ni_audio_file\"> <a href=\"javascript:launch_chooser('survey_ni_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_ni_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Method").": </td><td><select size=1 name=survey_method><option value='AGENT_XFER'>"._QXZ("AGENT_XFER")."</option><option value='VOICEMAIL'>"._QXZ("VOICEMAIL")."</option><option value='VMAIL_NO_INST'>"._QXZ("VMAIL_NO_INST")."</option><option value='EXTENSION'>"._QXZ("EXTENSION")."</option><option value='HANGUP'>"._QXZ("HANGUP")."</option><option value='CAMPREC_60_WAV'>"._QXZ("CAMPREC_60_WAV")."</option><option value='CALLMENU'>"._QXZ("CALLMENU")."</option><option value='$survey_method' SELECTED>"._QXZ("$survey_method")."</option></select> $NWB#campaigns-survey_method$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey No-Response Action").": </td><td><select size=1 name=survey_no_response_action><option value='OPTIN'>"._QXZ("OPTIN")."</option><option value='OPTOUT'>"._QXZ("OPTOUT")."</option><option value='DROP'>"._QXZ("DROP")."</option><option value='$survey_no_response_action' SELECTED>"._QXZ("$survey_no_response_action")."</option></select> $NWB#campaigns-survey_no_response_action$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Not Interested Status").": </td><td><select name=survey_ni_status>$survey_ni_status_list</select> $NWB#campaigns-survey_ni_status$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Third Digit").": </td><td><input type=text size=5 maxlength=1 name=survey_third_digit id=survey_third_digit value=\"$survey_third_digit\"> $NWB#campaigns-survey_third_digit$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Third Audio File").": </td><td><input type=text size=50 maxlength=50 name=survey_third_audio_file id=survey_third_audio_file value=\"$survey_third_audio_file\"> <a href=\"javascript:launch_chooser('survey_third_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_third_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Third Audio File").": </td><td nowrap><input type=text size=70 maxlength=1000 name=survey_third_audio_file id=survey_third_audio_file value=\"$survey_third_audio_file\"> <a href=\"javascript:launch_chooser('survey_third_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_third_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Third Status").": </td><td><input type=text size=10 maxlength=6 name=survey_third_status value=\"$survey_third_status\"> $NWB#campaigns-survey_third_status$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Third Extension").": </td><td><input type=text size=20 maxlength=20 name=survey_third_exten value=\"$survey_third_exten\"> $NWB#campaigns-survey_third_exten$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Fourth Digit").": </td><td><input type=text size=5 maxlength=1 name=survey_fourth_digit value=\"$survey_fourth_digit\"> $NWB#campaigns-survey_fourth_digit$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Fourth Audio File").": </td><td><input type=text size=50 maxlength=50 name=survey_fourth_audio_file id=survey_fourth_audio_file value=\"$survey_fourth_audio_file\"> <a href=\"javascript:launch_chooser('survey_fourth_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_fourth_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Fourth Audio File").": </td><td nowrap><input type=text size=70 maxlength=1000 name=survey_fourth_audio_file id=survey_fourth_audio_file value=\"$survey_fourth_audio_file\"> <a href=\"javascript:launch_chooser('survey_fourth_audio_file','date');\">"._QXZ("audio chooser")."</a> $NWB#campaigns-survey_fourth_audio_file$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Fourth Status").": </td><td><input type=text size=10 maxlength=6 name=survey_fourth_status value=\"$survey_fourth_status\"> $NWB#campaigns-survey_fourth_status$NWE</td></tr>\n";
echo "<tr bgcolor=#$SSstd_row2_background><td align=right>"._QXZ("Survey Fourth Extension").": </td><td><input type=text size=20 maxlength=20 name=survey_fourth_exten value=\"$survey_fourth_exten\"> $NWB#campaigns-survey_fourth_exten$NWE</td></tr>\n";
+6 -6
View File
@@ -1,4 +1,4 @@
# version: 20191114094001
# version: 20191121225701
users-user User ID <QXZ>This field is where you put the users ID number, can be up to 8 digits in length, Must be at least 2 characters in length.</QXZ>
users-pass Password <QXZ>This field is where you put the users password. Must be at least 2 characters in length. A medium strength user password will be at least 10 characters in length, and a strong user password will be at least 20 characters in length and have letters as well as at least one number. It is recommended that you use a longer password if possible, stringing together several unrelated words with no spaces, and a number somewhere in the string. The maximum size of a password is 100 characters.</QXZ>
users-force_change_password Force Change Password <QXZ>If this option is set to Y then the user will be prompted to change their password the next time they log in to the administration webpage. Default is N.</QXZ>
@@ -198,13 +198,13 @@ campaigns-vcl_name List Mix Name <QXZ>Descriptive name of the list mix. Must be
campaigns-list_mix_container List Mix Detail <QXZ>The composition of the List Mix entry. Contains the List ID, mix order, percentages and statuses that make up this List Mix. The percentages always have to add up to 100, and the lists all have to be active and set to the campaign for the order mix entry to be Activated.</QXZ>
campaigns-mix_method List Mix Method <QXZ>The method of mixing all of the parts of the List Mix Detail together. EVEN_MIX will mix leads from each part interleaved with the other parts, like this 1,2,3,1,2,3,1,2,3. IN_ORDER will put the leads in the order in which they are listed in the List Mix Detail screen 1,1,1,2,2,2,3,3,3. RANDOM will put them in RANDOM order 1,3,2,1,1,3,2,1,3. Default is IN_ORDER.</QXZ><!--
campaigns-agent_extended_alt_dial Agent Screen Extended Alt Dial <QXZ>This feature allows for agents to access extended alternate phone numbers for leads beyond the standard Alt Phone and Address3 fields that can be used in the agent screen for phone numbers beyond the main phone number. The Extended phone numbers can be dialed automatically using the Auto-Alt-Dial feature in the Campaign settings, but enabling this Agent Screen feature will also allow for the agent to call these numbers from their agent screen as well as edit their information. This feature is in development and is not currently available.</QXZ>-->
campaigns-survey_first_audio_file Survey First Audio File <QXZ>This is the audio filename that is played as soon as the customer picks up the phone when running a survey campaign.</QXZ>
campaigns-survey_first_audio_file Survey First Audio File <QXZ>This is the audio filename that is played as soon as the customer picks up the phone when running a survey campaign. If Cepstral Text to Speech is installed on your system, then you can use a TTS prefix with a TTS ID that you have defined to have an audio file generated on the fly when a survey call is answered. You can also use a DYN prefix for this field to use lead field variables such as --A--province--B-- to refer to audio files that can be played. If you want to have more than one audio prompt played to the customer, you can separate them with the pipe character.</QXZ>
campaigns-survey_dtmf_digits Survey DTMF Digits <QXZ>This field is where you define the digits that a customer can press as an option on a survey campaign. valid dtmf digits are 0123456789*#. All options except for the Not Interested, Third and Fourth digit options will move on to the Survey Method call path.</QXZ>
campaigns-survey_wait_sec Survey Wait Seconds <QXZ>This is the number of seconds when in Survey mode the system will wait for input from the person called until the survey or drop action is triggered. Is not applied if the Survey Method is HANGUP. Default is 10 seconds.</QXZ>
campaigns-survey_ni_digit Survey Not Interested Digit <QXZ>This field is where you define the customer digit pressed that will show they are Not Interested.</QXZ>
campaigns-survey_ni_status Survey Not Interested Status <QXZ>This field is where you select the status to be used for Not Interested. If DNC is used and the campaign is set to use DNC then the phone number will be automatically added to the internal DNC list and possibly the campaign-specific DNC list if that is enabled in the campaign.</QXZ>
campaigns-survey_opt_in_audio_file Survey Opt-in Audio File <QXZ>This is the audio filename that is played when the customer has opted-in to the survey, not opted-out or not responded if the no-response-action is set to OPTOUT. After this audio file is played, the Survey Method action is taken.</QXZ>
campaigns-survey_ni_audio_file Survey Not Interested Audio File <QXZ>This is the audio filename that is played when the customer has opted-out of the survey, not opted-in or not responded if the no-response-action is set to OPTIN. After this audio file is played, the call will be hung up.</QXZ>
campaigns-survey_opt_in_audio_file Survey Opt-in Audio File <QXZ>This is the audio filename that is played when the customer has opted-in to the survey, not opted-out or not responded if the no-response-action is set to OPTOUT. After this audio file is played, the Survey Method action is taken. See the -Survey First Audio File- help for some more advanced options of what you can put into this field.</QXZ>
campaigns-survey_ni_audio_file Survey Not Interested Audio File <QXZ>This is the audio filename that is played when the customer has opted-out of the survey, not opted-in or not responded if the no-response-action is set to OPTIN. After this audio file is played, the call will be hung up. See the -Survey First Audio File- help for some more advanced options of what you can put into this field.</QXZ>
campaigns-survey_method Survey Method <QXZ>This option defines what happens to a call after the customer has opted-in. AGENT_XFER will send the call to the next available agent. VOICEMAIL will send the call to the voicemail box that is specified in the Voicemail field. EXTENSION will send the customer to the extension defined in the Survey Xfer Extension field. HANGUP will hang up the customer. CAMPREC_60_WAV will send the customer to have a recording made with their response, this recording will be placed in a folder named as the campaign inside of the Survey Campaign Recording Directory. CALLMENU will send the customer to the Call Menu defined in the select list below. VMAIL_NO_INST will send the call to the voicemail box that you have defined below and will not play instructions after the voicemail message.</QXZ>
campaigns-survey_no_response_action Survey No-Response Action <QXZ>This is where you define what will happen if there is no response to the survey question. OPTIN will only send the call on to the Survey Method if the customer presses a dtmf digit. OPTOUT will send the customer on to the Survey Method even if they do not press a dtmf digit. DROP will drop the call using the campaign drop method but still log the call as a PM played message status.</QXZ>
campaigns-survey_response_digit_map Survey Response Digit Map <QXZ>This is the section where you can define a description to go with each dtmf digit option that the customer may select.</QXZ>
@@ -212,7 +212,7 @@ campaigns-survey_xfer_exten Survey Xfer Extension <QXZ>If the Survey Method of E
campaigns-survey_camp_record_dir Survey Campaign Recording Directory <QXZ>If the Survey Method of CAMPREC_60_WAV is selected then the customer response will be recorded and placed in a directory named after the campaign inside of this directory.</QXZ>
campaigns-survey_third_digit Survey Third Digit <QXZ>This allows for a third call path if the Third digit as defined in this field is pressed by the customer.</QXZ>
campaigns-survey_fourth_digit Survey Fourth Digit <QXZ>This allows for a fourth call path if the Fourth digit as defined in this field is pressed by the customer.</QXZ>
campaigns-survey_third_audio_file Survey Third Audio File <QXZ>This is the third audio file to be played upon the selection by the customer of the Third Digit option.</QXZ>
campaigns-survey_third_audio_file Survey Third Audio File <QXZ>This is the third audio file to be played upon the selection by the customer of the Third Digit option. See the -Survey First Audio File- help for some more advanced options of what you can put into this field.</QXZ>
campaigns-survey_third_status Survey Third Status <QXZ>This is the third status used for the call upon the selection by the customer of the Third Digit option.</QXZ>
campaigns-survey_third_exten Survey Third Extension <QXZ>This is the third extension used for the call upon the selection by the customer of the Third Digit option. Default is 8300 which immediately hangs up the call after the Audio File message is played.</QXZ>
campaigns-agent_display_dialable_leads Agent Display Dialable Leads <QXZ>This option if enabled will show the number of dialable leads available in the campaign in the agent screen. This number is updated in the system once a minute and will be refreshed on the agent screen every few seconds.</QXZ>
@@ -684,7 +684,7 @@ campaign_hotkeys CAMPAIGN_HOTKEYS TABLE <B><QXZ>Through the use of custom campai
lead_recycle LEAD_RECYCLE TABLE <B><QXZ>Through the use of lead recycling, you can call specific statuses of leads again at a specified interval without resetting the entire list. Lead recycling is campaign-specific and does not have to be a selected dialable status in your campaign. The attempt delay field is the number of seconds until the lead can be placed back in the hopper, this number must be at least 120 seconds. The attempt maximum field is the maximum number of times that a lead of this status can be attempted before the list needs to be reset, this number can be from 1 to 10. You can activate and deactivate a lead recycle entry with the provided links.</QXZ></B>
pause_codes If the Agent Pause Codes Active field is set to active then the agents will be able to select from these pause codes when they click on the PAUSE button on their screens. This data is then stored in the agent log. The Pause code must contain only letters and numbers and be less than 7 characters long. The pause code name can be no longer than 30 characters.</QXZ> <QXZ>The Time Limit field, if enabled in System Settings, will change the color of the agent on the Real-Time Report if they are in that pause code for more than the defined amount of seconds.</QXZ> <QXZ>The Mgr Approval field, if enabled, will require a manager to go to the agent screen and enter their login credentials to allow the agent to enter that pause code. <QXZ>Time Report if they are in that pause code for more than the defined amount of seconds.</QXZ> <QXZ>The Mgr Approval field, if enabled, will require a manager to go to the agent screen and enter their login credentials to allow the agent to enter that pause code.</QXZ></B>
auto_alt_dial_statuses AUTO ALT DIAL STATUSES <B><QXZ>If the Auto Alt-Number Dialing field is set, then the leads that are dispositioned under these auto alt dial statuses will have their alt_phone and-or address3 fields dialed after any of these no-answer statuses are set.</QXZ></B>
campaigns-survey_fourth_audio_file Survey Fourth Audio File <QXZ>This is the fourth audio file to be played upon the selection by the customer of the Fourth Digit option.</QXZ>
campaigns-survey_fourth_audio_file Survey Fourth Audio File <QXZ>This is the fourth audio file to be played upon the selection by the customer of the Fourth Digit option. See the -Survey First Audio File- help for some more advanced options of what you can put into this field.</QXZ>
campaigns-survey_fourth_status Survey Fourth Status <QXZ>This is the fourth status used for the call upon the selection by the customer of the Fourth Digit option.</QXZ>
campaigns-survey_fourth_exten Survey Fourth Extension <QXZ>This is the fourth extension used for the call upon the selection by the customer of the Fourth Digit option. Default is 8300 which immediately hangs up the call after the Audio File message is played.</QXZ>
campaigns-script_top_dispo Script on top of Dispo <QXZ>If you are using an IFRAME in your SCRIPT tab contents, and the page you are using is sending statuses through the Agent API, you may want to use this feature to cover the Dispostion screen with the script tab after a call is hung up. Default is N for disabled.</QXZ>