Added new DID filter features for DNC matching and URL DID Redirects

git-svn-id: svn://192.168.202.10@2099 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2014-04-04 17:09:56 +00:00
parent 19d4793c87
commit 6015caa58c
7 changed files with 128 additions and 17 deletions
+5
View File
@@ -196,6 +196,11 @@ OTHER CHANGES:
36. Added MathZDC function to prevent division math with zero as one of the 36. Added MathZDC function to prevent division math with zero as one of the
numbers. numbers.
37. Added DID Filter options to allow for filtering by the INTERNAL DNC list or
a Campaign DNC list. Also added a method to allow for URL filtering to
direct a call to a specific system DID instead of only going to the
Filter Action.
+66 -5
View File
@@ -33,6 +33,7 @@
# 130925-1819 - Added variable filter to prevent DID SQL injection attack # 130925-1819 - Added variable filter to prevent DID SQL injection attack
# 130926-1549 - Added new queue_log IVR entries for QM # 130926-1549 - Added new queue_log IVR entries for QM
# 140126-1138 - Added VMAIL_NO_INST options # 140126-1138 - Added VMAIL_NO_INST options
# 140404-0738 - Added DNC filter options and URL filter DID redirect option
# #
$script = 'agi-DID_route.agi'; $script = 'agi-DID_route.agi';
@@ -199,7 +200,7 @@ $extension =~ s/\'|\"|\\\\|\\\|\\|\\;|\\\;|\;|;//gi;
### Grab DID values from the database ### Grab DID values from the database
$DIDs_in_system=0; $DIDs_in_system=0;
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id FROM vicidial_inbound_dids where did_pattern = '$extension' and did_active='Y';"; $stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect FROM vicidial_inbound_dids where did_pattern = '$extension' and did_active='Y';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows; $sthArows=$sthA->rows;
@@ -242,6 +243,8 @@ if ($sthArows > 0)
$filter_menu_id = $aryA[33]; $filter_menu_id = $aryA[33];
$filter_clean_cid_number = $aryA[34]; $filter_clean_cid_number = $aryA[34];
$group_id = $aryA[35]; $group_id = $aryA[35];
$filter_dnc_campaign = $aryA[36];
$filter_url_did_redirect = $aryA[37];
$DIDs_in_system++; $DIDs_in_system++;
} }
@@ -250,7 +253,7 @@ $sthA->finish();
if ($sthArows < 1) if ($sthArows < 1)
{ {
### Grab DID values from the database for a default DID pattern if there is one ### Grab DID values from the database for a default DID pattern if there is one
$stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id FROM vicidial_inbound_dids where did_pattern = 'default' and did_active='Y';"; $stmtA = "SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,group_id,filter_dnc_campaign,filter_url_did_redirect FROM vicidial_inbound_dids where did_pattern = 'default' and did_active='Y';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr; $sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr; $sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$DIDs_in_system=$sthA->rows; $DIDs_in_system=$sthA->rows;
@@ -293,6 +296,8 @@ if ($sthArows < 1)
$filter_menu_id = $aryA[33]; $filter_menu_id = $aryA[33];
$filter_clean_cid_number = $aryA[34]; $filter_clean_cid_number = $aryA[34];
$group_id = $aryA[35]; $group_id = $aryA[35];
$filter_dnc_campaign = $aryA[36];
$filter_url_did_redirect = $aryA[37];
} }
$sthA->finish(); $sthA->finish();
} }
@@ -440,7 +445,7 @@ if (length($filter_clean_cid_number) > 1)
##### BEGIN filtering process ##### ##### BEGIN filtering process #####
if ($filter_inbound_number =~ /GROUP|URL/) if ($filter_inbound_number =~ /GROUP|URL|DNC_INTERNAL|DNC_CAMPAIGN/)
{ {
$filter_match_found=0; $filter_match_found=0;
if ($AGILOG) {$agi_string = "filtering active: |$extension|$filter_inbound_number|$filter_phone_group_id|$filter_url|$filter_action|$filter_clean_cid_number|"; &agi_output;} if ($AGILOG) {$agi_string = "filtering active: |$extension|$filter_inbound_number|$filter_phone_group_id|$filter_url|$filter_action|$filter_clean_cid_number|"; &agi_output;}
@@ -457,6 +462,32 @@ if ($filter_inbound_number =~ /GROUP|URL/)
} }
$sthA->finish(); $sthA->finish();
} }
elsif ($filter_inbound_number =~ /DNC_INTERNAL/)
{
$stmtA = "SELECT count(*) FROM vicidial_dnc where phone_number='$callerid';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$filter_match_found = $aryA[0];
}
$sthA->finish();
}
elsif ($filter_inbound_number =~ /DNC_CAMPAIGN/)
{
$stmtA = "SELECT count(*) FROM vicidial_campaign_dnc where campaign_id='$filter_dnc_campaign' and phone_number='$callerid';";
$sthA = $dbhA->prepare($stmtA) or die "preparing: ",$dbhA->errstr;
$sthA->execute or die "executing: $stmtA ", $dbhA->errstr;
$sthArows=$sthA->rows;
if ($sthArows > 0)
{
@aryA = $sthA->fetchrow_array;
$filter_match_found = $aryA[0];
}
$sthA->finish();
}
else else
{ {
### first, find curl binary ### first, find curl binary
@@ -495,13 +526,19 @@ if ($filter_inbound_number =~ /GROUP|URL/)
if ($full_output > 0) if ($full_output > 0)
{ {
$filter_match_found = $full_output; $filter_match_found = $full_output;
if ($filter_url_did_redirect =~ /Y/)
{
$did_route='DID';
if ($AGILOG) {$agi_string = "Filter URL DID Redirect found: |$filter_match_found|$filter_url_did_redirect|$did_route|"; &agi_output;}
}
} }
if ($AGILOG) {$agi_string = "URL filter search response: |$filter_match_found|$full_output|$filter_url|"; &agi_output;} if ($AGILOG) {$agi_string = "URL filter search response: |$filter_match_found|$full_output|$filter_url|"; &agi_output;}
} }
} }
if ($filter_match_found > 0) if ($filter_match_found > 0)
{ {
$did_route = $filter_action; if ($did_route !~ /DID/)
{$did_route = $filter_action;}
$did_extension = $filter_extension; $did_extension = $filter_extension;
$exten_context = $filter_exten_context; $exten_context = $filter_exten_context;
$voicemail_ext = $filter_voicemail_ext; $voicemail_ext = $filter_voicemail_ext;
@@ -513,7 +550,13 @@ if ($filter_inbound_number =~ /GROUP|URL/)
$menu_id = $filter_menu_id; $menu_id = $filter_menu_id;
$route_type = 'FILTER'; $route_type = 'FILTER';
if ($AGILOG) {$agi_string = "Filter match found: |$filter_match_found|$filter_action|$did_route|"; &agi_output;} if ($AGILOG) {$agi_string = "Filter match found: |$filter_match_found|$filter_inbound_number|$filter_action|$did_route|"; &agi_output;}
### Update the call in vicidial_did_log
$stmtA = "UPDATE vicidial_did_log SET did_route='F_$did_route' where uniqueid='$uniqueid' and channel='$channel' and server_ip='$VARserver_ip' and caller_id_number='$callerid' and call_date='$SQLdate';";
if ($AGILOG) {$agi_string = "|$stmtA|"; &agi_output;}
$affected_rowsL = $dbhA->do($stmtA);
if ($AGILOG) {$agi_string = "-- DID UPDATE LOG : |$affected_rowsL|$stmtA|"; &agi_output;}
} }
} }
##### END filtering process ##### ##### END filtering process #####
@@ -623,6 +666,24 @@ if ($did_route =~ /EXTEN/)
} }
### Route call to a DID in the trunkinbound context on the system
if ($did_route =~ /DID/)
{
if ($AGILOG) {$agi_string = "exiting the DID app, transferring call to $filter_match_found @ trunkinbound"; &agi_output;}
print "SET CONTEXT trunkinbound\n";
$result = <STDIN>;
checkresult($result);
print "SET EXTENSION $filter_match_found\n";
$result = <STDIN>;
checkresult($result);
print "SET PRIORITY 1\n";
$result = <STDIN>;
checkresult($result);
exit;
}
### Route call to a call menu on the system ### Route call to a call menu on the system
if ($did_route =~ /CALLMENU/) if ($did_route =~ /CALLMENU/)
{ {
@@ -1819,7 +1819,7 @@ campaign_id VARCHAR(8),
phone_code VARCHAR(10) default '1', phone_code VARCHAR(10) default '1',
menu_id VARCHAR(50) default '', menu_id VARCHAR(50) default '',
record_call ENUM('Y','N','Y_QUEUESTOP') default 'N', record_call ENUM('Y','N','Y_QUEUESTOP') default 'N',
filter_inbound_number ENUM('DISABLED','GROUP','URL') default 'DISABLED', filter_inbound_number ENUM('DISABLED','GROUP','URL','DNC_INTERNAL','DNC_CAMPAIGN') default 'DISABLED',
filter_phone_group_id VARCHAR(20) default '', filter_phone_group_id VARCHAR(20) default '',
filter_url VARCHAR(1000) default '', filter_url VARCHAR(1000) default '',
filter_action ENUM('EXTEN','VOICEMAIL','AGENT','PHONE','IN_GROUP','CALLMENU','VMAIL_NO_INST') default 'EXTEN', filter_action ENUM('EXTEN','VOICEMAIL','AGENT','PHONE','IN_GROUP','CALLMENU','VMAIL_NO_INST') default 'EXTEN',
@@ -1845,6 +1845,8 @@ custom_three VARCHAR(100) default '',
custom_four VARCHAR(100) default '', custom_four VARCHAR(100) default '',
custom_five VARCHAR(100) default '', custom_five VARCHAR(100) default '',
user_group VARCHAR(20) default '---ALL---', user_group VARCHAR(20) default '---ALL---',
filter_dnc_campaign VARCHAR(8) default '',
filter_url_did_redirect ENUM('Y','N') default 'N',
unique index (did_pattern), unique index (did_pattern),
index (group_id) index (group_id)
) ENGINE=MyISAM; ) ENGINE=MyISAM;
@@ -1858,7 +1860,7 @@ caller_id_name VARCHAR(20),
extension VARCHAR(100), extension VARCHAR(100),
call_date DATETIME, call_date DATETIME,
did_id VARCHAR(9) default '', did_id VARCHAR(9) default '',
did_route VARCHAR(9) default '', did_route VARCHAR(20) default '',
index (uniqueid), index (uniqueid),
index (caller_id_number), index (caller_id_number),
index (extension), index (extension),
@@ -2615,7 +2617,7 @@ extension VARCHAR(100),
call_date DATETIME, call_date DATETIME,
did_id VARCHAR(9) default '', did_id VARCHAR(9) default '',
did_description VARCHAR(50) default '', did_description VARCHAR(50) default '',
did_route VARCHAR(9) default '', did_route VARCHAR(20) default '',
group_id VARCHAR(20) default '', group_id VARCHAR(20) default '',
user VARCHAR(20) default 'VDCL', user VARCHAR(20) default 'VDCL',
index (uniqueid), index (uniqueid),
@@ -3255,4 +3257,4 @@ UPDATE vicidial_configuration set value='1766' where name='qc_database_version';
UPDATE system_settings set vdc_agent_api_active='1'; UPDATE system_settings set vdc_agent_api_active='1';
UPDATE system_settings SET db_schema_version='1370',db_schema_update_date=NOW(),reload_timestamp=NOW(); UPDATE system_settings SET db_schema_version='1371',db_schema_update_date=NOW(),reload_timestamp=NOW();
+10
View File
@@ -212,3 +212,13 @@ UPDATE system_settings SET db_schema_version='1369',db_schema_update_date=NOW(),
ALTER TABLE vicidial_users ADD alter_admin_interface_options ENUM('0','1') default '1'; ALTER TABLE vicidial_users ADD alter_admin_interface_options ENUM('0','1') default '1';
UPDATE system_settings SET db_schema_version='1370',db_schema_update_date=NOW() where db_schema_version < 1370; UPDATE system_settings SET db_schema_version='1370',db_schema_update_date=NOW() where db_schema_version < 1370;
ALTER TABLE vicidial_inbound_dids MODIFY filter_inbound_number ENUM('DISABLED','GROUP','URL','DNC_INTERNAL','DNC_CAMPAIGN') default 'DISABLED';
ALTER TABLE vicidial_inbound_dids ADD filter_dnc_campaign VARCHAR(8) default '';
ALTER TABLE vicidial_inbound_dids ADD filter_url_did_redirect ENUM('Y','N') default 'N';
ALTER TABLE vicidial_did_log MODIFY did_route VARCHAR(20) default '';
ALTER TABLE vicidial_did_agent_log MODIFY did_route VARCHAR(20) default '';
UPDATE system_settings SET db_schema_version='1371',db_schema_update_date=NOW() where db_schema_version < 1371;
@@ -268,6 +268,12 @@ Voicemail Instructions||
This setting allows you to define if the voicemail instructions will play after the voicemail greeting when a call rings on the agent extension and times out to voicemail. Default is Y|| This setting allows you to define if the voicemail instructions will play after the voicemail greeting when a call rings on the agent extension and times out to voicemail. Default is Y||
optional, possibly slow|| optional, possibly slow||
Not set as allowed in any campaigns|| Not set as allowed in any campaigns||
DNC_INTERNAL will search by the internal DNC list. DNC_CAMPAIGN will search by one specific campaign DNC list||
Filter DNC Campaign||
If the Filter Inbound Number field is set to DNC_CAMPAIGN then this is the specific campaign ID that the campaign DNC list belongs to||
Filter URL DID Redirect||
If the Filter Inbound Number field is set to URL then this setting allows the URL response to specify a system DID to redirect the call to insead of using the default action. If a 0 is returned then the default action is used. If anything other than a 0 is returned then the call will be redirected to the resulting URL response value||
########################## CHANGES TO EXISTING PHRASES IN ADMIN TRANSLATION ########################## CHANGES TO EXISTING PHRASES IN ADMIN TRANSLATION
+21 -7
View File
@@ -1826,6 +1826,10 @@ if (isset($_GET["voicemail_instructions"])) {$voicemail_instructions=$_GET["v
elseif (isset($_POST["voicemail_instructions"])) {$voicemail_instructions=$_POST["voicemail_instructions"];} elseif (isset($_POST["voicemail_instructions"])) {$voicemail_instructions=$_POST["voicemail_instructions"];}
if (isset($_GET["alter_admin_interface_options"])) {$alter_admin_interface_options=$_GET["alter_admin_interface_options"];} if (isset($_GET["alter_admin_interface_options"])) {$alter_admin_interface_options=$_GET["alter_admin_interface_options"];}
elseif (isset($_POST["alter_admin_interface_options"])) {$alter_admin_interface_options=$_POST["alter_admin_interface_options"];} elseif (isset($_POST["alter_admin_interface_options"])) {$alter_admin_interface_options=$_POST["alter_admin_interface_options"];}
if (isset($_GET["filter_dnc_campaign"])) {$filter_dnc_campaign=$_GET["filter_dnc_campaign"];}
elseif (isset($_POST["filter_dnc_campaign"])) {$filter_dnc_campaign=$_POST["filter_dnc_campaign"];}
if (isset($_GET["filter_url_did_redirect"])) {$filter_url_did_redirect=$_GET["filter_url_did_redirect"];}
elseif (isset($_POST["filter_url_did_redirect"])) {$filter_url_did_redirect=$_POST["filter_url_did_redirect"];}
if (isset($script_id)) {$script_id= strtoupper($script_id);} if (isset($script_id)) {$script_id= strtoupper($script_id);}
@@ -2254,6 +2258,7 @@ if ($non_latin < 1)
$auto_restart_asterisk = preg_replace('/[^NY]/','',$auto_restart_asterisk); $auto_restart_asterisk = preg_replace('/[^NY]/','',$auto_restart_asterisk);
$asterisk_temp_no_restart = preg_replace('/[^NY]/','',$asterisk_temp_no_restart); $asterisk_temp_no_restart = preg_replace('/[^NY]/','',$asterisk_temp_no_restart);
$voicemail_instructions = preg_replace('/[^NY]/','',$voicemail_instructions); $voicemail_instructions = preg_replace('/[^NY]/','',$voicemail_instructions);
$filter_url_did_redirect = preg_replace('/[^NY]/','',$filter_url_did_redirect);
$qc_enabled = preg_replace('/[^0-9NY]/','',$qc_enabled); $qc_enabled = preg_replace('/[^0-9NY]/','',$qc_enabled);
$active = preg_replace('/[^0-9NY]/','',$active); $active = preg_replace('/[^0-9NY]/','',$active);
@@ -2305,7 +2310,6 @@ if ($non_latin < 1)
$agent_call_log_view_override = preg_replace('/[^0-9a-zA-Z]/','',$agent_call_log_view_override); $agent_call_log_view_override = preg_replace('/[^0-9a-zA-Z]/','',$agent_call_log_view_override);
$queuemetrics_loginout = preg_replace('/[^0-9a-zA-Z]/','',$queuemetrics_loginout); $queuemetrics_loginout = preg_replace('/[^0-9a-zA-Z]/','',$queuemetrics_loginout);
$queuemetrics_callstatus = preg_replace('/[^0-9a-zA-Z]/','',$queuemetrics_callstatus); $queuemetrics_callstatus = preg_replace('/[^0-9a-zA-Z]/','',$queuemetrics_callstatus);
$filter_inbound_number = preg_replace('/[^0-9a-zA-Z]/','',$filter_inbound_number);
$enable_xfer_presets = preg_replace('/[^0-9a-zA-Z]/','',$enable_xfer_presets); $enable_xfer_presets = preg_replace('/[^0-9a-zA-Z]/','',$enable_xfer_presets);
$hide_xfer_number_to_dial = preg_replace('/[^0-9a-zA-Z]/','',$hide_xfer_number_to_dial); $hide_xfer_number_to_dial = preg_replace('/[^0-9a-zA-Z]/','',$hide_xfer_number_to_dial);
$manual_dial_prefix = preg_replace('/[^0-9a-zA-Z]/','',$manual_dial_prefix); $manual_dial_prefix = preg_replace('/[^0-9a-zA-Z]/','',$manual_dial_prefix);
@@ -2558,6 +2562,8 @@ if ($non_latin < 1)
$expiration_date = preg_replace('/[^-_0-9a-zA-Z]/','',$expiration_date); $expiration_date = preg_replace('/[^-_0-9a-zA-Z]/','',$expiration_date);
$amd_inbound_group = preg_replace('/[^-_0-9a-zA-Z]/','',$amd_inbound_group); $amd_inbound_group = preg_replace('/[^-_0-9a-zA-Z]/','',$amd_inbound_group);
$amd_callmenu = preg_replace('/[^-_0-9a-zA-Z]/','',$amd_callmenu); $amd_callmenu = preg_replace('/[^-_0-9a-zA-Z]/','',$amd_callmenu);
$filter_inbound_number = preg_replace('/[^-_0-9a-zA-Z]/','',$filter_inbound_number);
$filter_dnc_campaign = preg_replace('/[^-_0-9a-zA-Z]/','',$filter_dnc_campaign);
### ALPHA-NUMERIC and underscore and dash and slash and dot ### ALPHA-NUMERIC and underscore and dash and slash and dot
$menu_timeout_prompt = preg_replace('/[^-\/\|\._0-9a-zA-Z]/','',$menu_timeout_prompt); $menu_timeout_prompt = preg_replace('/[^-\/\|\._0-9a-zA-Z]/','',$menu_timeout_prompt);
@@ -3282,12 +3288,13 @@ else
# 140313-0727 - Added links to Called Counts List IDs Report # 140313-0727 - Added links to Called Counts List IDs Report
# 140313-1014 - Added warning to in-groups if they are not set as allowed in any campaigns # 140313-1014 - Added warning to in-groups if they are not set as allowed in any campaigns
# 140314-1134 - Added more strict enforcement of level 9 report and user permissions and definable max stats days # 140314-1134 - Added more strict enforcement of level 9 report and user permissions and definable max stats days
# 140404-1007 - Added new DID filter features for DNC matching and URL DID Redirects
# #
# make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time # make sure you have added a user to the vicidial_users MySQL table with at least user_level 8 to access this page the first time
$admin_version = '2.8-431a'; $admin_version = '2.8-432a';
$build = '140314-1134'; $build = '140404-1007';
$STARTtime = date("U"); $STARTtime = date("U");
$SQLdate = date("Y-m-d H:i:s"); $SQLdate = date("Y-m-d H:i:s");
@@ -8952,7 +8959,7 @@ if ($ADD==2411)
} }
else else
{ {
$stmt="INSERT INTO vicidial_inbound_dids (did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group) SELECT \"$did_pattern\",\"$did_description\",did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group from vicidial_inbound_dids where did_id=\"$source_did\";"; $stmt="INSERT INTO vicidial_inbound_dids (did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group,filter_dnc_campaign,filter_url_did_redirect) SELECT \"$did_pattern\",\"$did_description\",did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group,filter_dnc_campaign,filter_url_did_redirect from vicidial_inbound_dids where did_id=\"$source_did\";";
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
$stmt="SELECT did_id from vicidial_inbound_dids where did_pattern='$did_pattern';"; $stmt="SELECT did_id from vicidial_inbound_dids where did_pattern='$did_pattern';";
@@ -12828,7 +12835,7 @@ if ($ADD==4311)
{ {
echo "<br><B>DID MODIFIED: $did_pattern</B>\n"; echo "<br><B>DID MODIFIED: $did_pattern</B>\n";
$stmt="UPDATE vicidial_inbound_dids set did_pattern='$did_pattern',did_description='$did_description',did_active='$did_active',did_route='$did_route',extension='$extension',exten_context='$exten_context',voicemail_ext='$voicemail_ext',phone='$phone',server_ip='$server_ip',user='$user',user_unavailable_action='$user_unavailable_action',user_route_settings_ingroup='$user_route_settings_ingroup',group_id='$group_id',call_handle_method='$call_handle_method',agent_search_method='$agent_search_method',list_id='$list_id',campaign_id='$campaign_id',phone_code='$phone_code',menu_id='$menu_id',record_call='$record_call',filter_inbound_number='$filter_inbound_number',filter_phone_group_id='$filter_phone_group_id',filter_url='$filter_url',filter_action='$filter_action',filter_extension='$filter_extension',filter_exten_context='$filter_exten_context',filter_voicemail_ext='$filter_voicemail_ext',filter_phone='$filter_phone',filter_server_ip='$filter_server_ip',filter_user='$filter_user',filter_user_unavailable_action='$filter_user_unavailable_action',filter_user_route_settings_ingroup='$filter_user_route_settings_ingroup',filter_group_id='$filter_group_id',filter_call_handle_method='$filter_call_handle_method',filter_agent_search_method='$filter_agent_search_method',filter_list_id='$filter_list_id',filter_campaign_id='$filter_campaign_id',filter_phone_code='$filter_phone_code',filter_menu_id='$filter_menu_id',filter_clean_cid_number='$filter_clean_cid_number',custom_one='$custom_one',custom_two='$custom_two',custom_three='$custom_three',custom_four='$custom_four',custom_five='$custom_five',user_group='$user_group' where did_id='$did_id';"; $stmt="UPDATE vicidial_inbound_dids set did_pattern='$did_pattern',did_description='$did_description',did_active='$did_active',did_route='$did_route',extension='$extension',exten_context='$exten_context',voicemail_ext='$voicemail_ext',phone='$phone',server_ip='$server_ip',user='$user',user_unavailable_action='$user_unavailable_action',user_route_settings_ingroup='$user_route_settings_ingroup',group_id='$group_id',call_handle_method='$call_handle_method',agent_search_method='$agent_search_method',list_id='$list_id',campaign_id='$campaign_id',phone_code='$phone_code',menu_id='$menu_id',record_call='$record_call',filter_inbound_number='$filter_inbound_number',filter_phone_group_id='$filter_phone_group_id',filter_url='$filter_url',filter_action='$filter_action',filter_extension='$filter_extension',filter_exten_context='$filter_exten_context',filter_voicemail_ext='$filter_voicemail_ext',filter_phone='$filter_phone',filter_server_ip='$filter_server_ip',filter_user='$filter_user',filter_user_unavailable_action='$filter_user_unavailable_action',filter_user_route_settings_ingroup='$filter_user_route_settings_ingroup',filter_group_id='$filter_group_id',filter_call_handle_method='$filter_call_handle_method',filter_agent_search_method='$filter_agent_search_method',filter_list_id='$filter_list_id',filter_campaign_id='$filter_campaign_id',filter_phone_code='$filter_phone_code',filter_menu_id='$filter_menu_id',filter_clean_cid_number='$filter_clean_cid_number',custom_one='$custom_one',custom_two='$custom_two',custom_three='$custom_three',custom_four='$custom_four',custom_five='$custom_five',user_group='$user_group',filter_dnc_campaign='$filter_dnc_campaign',filter_url_did_redirect='$filter_url_did_redirect' where did_id='$did_id';";
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
### LOG INSERTION Admin Log Table ### ### LOG INSERTION Admin Log Table ###
@@ -24078,7 +24085,7 @@ if ($ADD==3311)
$didSQL = "did_id='$did_id'"; $didSQL = "did_id='$did_id'";
if ( (strlen($did_id)<1) and (strlen($did_pattern)>0) ) if ( (strlen($did_id)<1) and (strlen($did_pattern)>0) )
{$didSQL = "did_pattern='$did_pattern'";} {$didSQL = "did_pattern='$did_pattern'";}
$stmt="SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group from vicidial_inbound_dids where $didSQL $LOGadmin_viewable_groupsSQL;"; $stmt="SELECT did_id,did_pattern,did_description,did_active,did_route,extension,exten_context,voicemail_ext,phone,server_ip,user,user_unavailable_action,user_route_settings_ingroup,group_id,call_handle_method,agent_search_method,list_id,campaign_id,phone_code,menu_id,record_call,filter_inbound_number,filter_phone_group_id,filter_url,filter_action,filter_extension,filter_exten_context,filter_voicemail_ext,filter_phone,filter_server_ip,filter_user,filter_user_unavailable_action,filter_user_route_settings_ingroup,filter_group_id,filter_call_handle_method,filter_agent_search_method,filter_list_id,filter_campaign_id,filter_phone_code,filter_menu_id,filter_clean_cid_number,custom_one,custom_two,custom_three,custom_four,custom_five,user_group,filter_dnc_campaign,filter_url_did_redirect from vicidial_inbound_dids where $didSQL $LOGadmin_viewable_groupsSQL;";
if ($DB) {echo "$stmt\n";} if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
$row=mysqli_fetch_row($rslt); $row=mysqli_fetch_row($rslt);
@@ -24129,6 +24136,8 @@ if ($ADD==3311)
$custom_four = $row[44]; $custom_four = $row[44];
$custom_five = $row[45]; $custom_five = $row[45];
$user_group = $row[46]; $user_group = $row[46];
$filter_dnc_campaign = $row[47];
$filter_url_did_redirect = $row[48];
$stmt="SELECT campaign_id,campaign_name from vicidial_campaigns $whereLOGallowed_campaignsSQL order by campaign_id;"; $stmt="SELECT campaign_id,campaign_name from vicidial_campaigns $whereLOGallowed_campaignsSQL order by campaign_id;";
@@ -24277,7 +24286,7 @@ if ($ADD==3311)
echo "<tr bgcolor=#99FFCC><td align=right>Clean CID Number: </td><td align=left><input type=text name=filter_clean_cid_number size=20 maxlength=20 value=\"$filter_clean_cid_number\">$NWB#inbound_dids-filter_clean_cid_number$NWE</td></tr>\n"; echo "<tr bgcolor=#99FFCC><td align=right>Clean CID Number: </td><td align=left><input type=text name=filter_clean_cid_number size=20 maxlength=20 value=\"$filter_clean_cid_number\">$NWB#inbound_dids-filter_clean_cid_number$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter Inbound Number: </td><td align=left><select size=1 name=filter_inbound_number><option value=\"DISABLED\">DISABLED</option><option value=\"GROUP\">GROUP</option><option value=\"URL\">URL</option><option SELECTED>$filter_inbound_number</option></select>$NWB#inbound_dids-filter_inbound_number$NWE</td></tr>\n"; echo "<tr bgcolor=#CCFFFF><td align=right>Filter Inbound Number: </td><td align=left><select size=1 name=filter_inbound_number><option value=\"DISABLED\">DISABLED</option><option value=\"GROUP\">GROUP</option><option value=\"URL\">URL</option><option value=\"DNC_INTERNAL\">DNC_INTERNAL</option><option value=\"DNC_CAMPAIGN\">DNC_CAMPAIGN</option><option SELECTED>$filter_inbound_number</option></select>$NWB#inbound_dids-filter_inbound_number$NWE</td></tr>\n";
$stmt="SELECT filter_phone_group_id,filter_phone_group_name from vicidial_filter_phone_groups $whereLOGadmin_viewable_groupsSQL order by filter_phone_group_id;"; $stmt="SELECT filter_phone_group_id,filter_phone_group_name from vicidial_filter_phone_groups $whereLOGadmin_viewable_groupsSQL order by filter_phone_group_id;";
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
@@ -24294,6 +24303,11 @@ if ($ADD==3311)
echo "<tr bgcolor=#CCFFFF><td align=right><a href=\"$PHP_SELF?ADD=3711&filter_phone_group_id=$filter_phone_group_id\">Filter Phone Group ID:</a> </td><td align=left><select size=1 name=filter_phone_group_id>$Fgroups_list<option SELECTED>$filter_phone_group_id</option></select>$NWB#inbound_dids-filter_phone_group_id$NWE</td></tr>\n"; echo "<tr bgcolor=#CCFFFF><td align=right><a href=\"$PHP_SELF?ADD=3711&filter_phone_group_id=$filter_phone_group_id\">Filter Phone Group ID:</a> </td><td align=left><select size=1 name=filter_phone_group_id>$Fgroups_list<option SELECTED>$filter_phone_group_id</option></select>$NWB#inbound_dids-filter_phone_group_id$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter URL: </td><td align=left><input type=text name=filter_url size=80 maxlength=1000 value=\"$filter_url\">$NWB#inbound_dids-filter_url$NWE</td></tr>\n"; echo "<tr bgcolor=#CCFFFF><td align=right>Filter URL: </td><td align=left><input type=text name=filter_url size=80 maxlength=1000 value=\"$filter_url\">$NWB#inbound_dids-filter_url$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter URL DID Redirect: </td><td align=left><select size=1 name=filter_url_did_redirect><option>Y</option><option>N</option><option SELECTED>$filter_url_did_redirect</option></select>$NWB#inbound_dids-filter_url_did_redirect$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter DNC Campaign: </td><td align=left><input type=text name=filter_dnc_campaign size=10 maxlength=8 value=\"$filter_dnc_campaign\">$NWB#inbound_dids-filter_dnc_campaign$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter Action: </td><td align=left><select size=1 name=filter_action><option>AGENT</option><option>EXTEN</option><option>VOICEMAIL</option><option>VMAIL_NO_INST</option><option>PHONE</option><option>IN_GROUP</option><option>CALLMENU</option><option SELECTED>$filter_action</option></select>$NWB#inbound_dids-filter_action$NWE</td></tr>\n"; echo "<tr bgcolor=#CCFFFF><td align=right>Filter Action: </td><td align=left><select size=1 name=filter_action><option>AGENT</option><option>EXTEN</option><option>VOICEMAIL</option><option>VMAIL_NO_INST</option><option>PHONE</option><option>IN_GROUP</option><option>CALLMENU</option><option SELECTED>$filter_action</option></select>$NWB#inbound_dids-filter_action$NWE</td></tr>\n";
echo "<tr bgcolor=#CCFFFF><td align=right>Filter Extension: </td><td align=left><input type=text name=filter_extension size=40 maxlength=50 value=\"$filter_extension\">$NWB#inbound_dids-extension$NWE</td></tr>\n"; echo "<tr bgcolor=#CCFFFF><td align=right>Filter Extension: </td><td align=left><input type=text name=filter_extension size=40 maxlength=50 value=\"$filter_extension\">$NWB#inbound_dids-extension$NWE</td></tr>\n";
+14 -1
View File
@@ -10,6 +10,7 @@
# 131208-1635 - Added help for max dead, dispo and pause time campaign options # 131208-1635 - Added help for max dead, dispo and pause time campaign options
# 140126-1023 - Added VMAIL_NO_INST options # 140126-1023 - Added VMAIL_NO_INST options
# 140126-2254 - Added voicemail_instructions option for phones # 140126-2254 - Added voicemail_instructions option for phones
# 140404-1104 - Added new DID filter options
# #
@@ -2450,7 +2451,7 @@ if ($SSqc_features_active > 0)
<BR> <BR>
<A NAME="inbound_dids-filter_inbound_number"> <A NAME="inbound_dids-filter_inbound_number">
<BR> <BR>
<B>Filter Inbound Number -</B> This option if enabled allows you to filter calls coming into this DID and send them to an alternative action if they match a phone number that is in the filter phone group or a URL response if you have configured one. Default is DISABLED. GROUP will search in a Filter Phone Group. URL will send a URL and will match if a 1 is sent back. <B>Filter Inbound Number -</B> This option if enabled allows you to filter calls coming into this DID and send them to an alternative action if they match a phone number that is in the filter phone group or a URL response if you have configured one. Default is DISABLED. GROUP will search in a Filter Phone Group. URL will send a URL and will match if a 1 is sent back. DNC_INTERNAL will search by the internal DNC list. DNC_CAMPAIGN will search by one specific campaign DNC list.
<BR> <BR>
<A NAME="inbound_dids-filter_phone_group_id"> <A NAME="inbound_dids-filter_phone_group_id">
@@ -2462,6 +2463,18 @@ if ($SSqc_features_active > 0)
<BR> <BR>
<B>Filter URL -</B> If the Filter Inbound Number field is set to URL then this is the web address of a script that will search a remote system and return a 1 for a match and a 0 for no match. Only two variables are available in the address if you use the VAR prefix like with webform addresses in campaigns, --A--phone_number--B-- and --A--did_pattern--B-- can be used in the URL to indicate the caller ID of the caller and the DID that the customer called in on. <B>Filter URL -</B> If the Filter Inbound Number field is set to URL then this is the web address of a script that will search a remote system and return a 1 for a match and a 0 for no match. Only two variables are available in the address if you use the VAR prefix like with webform addresses in campaigns, --A--phone_number--B-- and --A--did_pattern--B-- can be used in the URL to indicate the caller ID of the caller and the DID that the customer called in on.
<BR>
<A NAME="inbound_dids-filter_url_did_redirect">
<BR>
<B>Filter URL DID Redirect -</B> If the Filter Inbound Number field is set to URL then this setting allows the URL response to specify a system DID to redirect the call to insead of using the default action. If a 0 is returned then the default action is used. If anything other than a 0 is returned then the call will be redirected to the resulting URL response value.
<BR>
<A NAME="inbound_dids-filter_dnc_campaign">
<BR>
<B>Filter DNC Campaign -</B> If the Filter Inbound Number field is set to DNC_CAMPAIGN then this is the specific campaign ID that the campaign DNC list belongs to.
<BR> <BR>
<A NAME="inbound_dids-filter_action"> <A NAME="inbound_dids-filter_action">
<BR> <BR>