diff --git a/UPGRADE b/UPGRADE index 786deb38..d166828f 100644 --- a/UPGRADE +++ b/UPGRADE @@ -196,6 +196,11 @@ OTHER CHANGES: 36. Added MathZDC function to prevent division math with zero as one of the 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. + diff --git a/agi/agi-DID_route.agi b/agi/agi-DID_route.agi index 6de16cdb..619db7e3 100644 --- a/agi/agi-DID_route.agi +++ b/agi/agi-DID_route.agi @@ -33,6 +33,7 @@ # 130925-1819 - Added variable filter to prevent DID SQL injection attack # 130926-1549 - Added new queue_log IVR entries for QM # 140126-1138 - Added VMAIL_NO_INST options +# 140404-0738 - Added DNC filter options and URL filter DID redirect option # $script = 'agi-DID_route.agi'; @@ -199,7 +200,7 @@ $extension =~ s/\'|\"|\\\\|\\\|\\|\\;|\\\;|\;|;//gi; ### Grab DID values from the database $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->execute or die "executing: $stmtA ", $dbhA->errstr; $sthArows=$sthA->rows; @@ -242,6 +243,8 @@ if ($sthArows > 0) $filter_menu_id = $aryA[33]; $filter_clean_cid_number = $aryA[34]; $group_id = $aryA[35]; + $filter_dnc_campaign = $aryA[36]; + $filter_url_did_redirect = $aryA[37]; $DIDs_in_system++; } @@ -250,7 +253,7 @@ $sthA->finish(); if ($sthArows < 1) { ### 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->execute or die "executing: $stmtA ", $dbhA->errstr; $DIDs_in_system=$sthA->rows; @@ -293,6 +296,8 @@ if ($sthArows < 1) $filter_menu_id = $aryA[33]; $filter_clean_cid_number = $aryA[34]; $group_id = $aryA[35]; + $filter_dnc_campaign = $aryA[36]; + $filter_url_did_redirect = $aryA[37]; } $sthA->finish(); } @@ -440,7 +445,7 @@ if (length($filter_clean_cid_number) > 1) ##### BEGIN filtering process ##### -if ($filter_inbound_number =~ /GROUP|URL/) +if ($filter_inbound_number =~ /GROUP|URL|DNC_INTERNAL|DNC_CAMPAIGN/) { $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;} @@ -457,6 +462,32 @@ if ($filter_inbound_number =~ /GROUP|URL/) } $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 { ### first, find curl binary @@ -495,13 +526,19 @@ if ($filter_inbound_number =~ /GROUP|URL/) if ($full_output > 0) { $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 ($filter_match_found > 0) { - $did_route = $filter_action; + if ($did_route !~ /DID/) + {$did_route = $filter_action;} $did_extension = $filter_extension; $exten_context = $filter_exten_context; $voicemail_ext = $filter_voicemail_ext; @@ -513,7 +550,13 @@ if ($filter_inbound_number =~ /GROUP|URL/) $menu_id = $filter_menu_id; $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 ##### @@ -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 = ; + checkresult($result); + print "SET EXTENSION $filter_match_found\n"; + $result = ; + checkresult($result); + print "SET PRIORITY 1\n"; + $result = ; + checkresult($result); + + exit; + } + + ### Route call to a call menu on the system if ($did_route =~ /CALLMENU/) { diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index 9debf113..26330d00 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -1819,7 +1819,7 @@ campaign_id VARCHAR(8), phone_code VARCHAR(10) default '1', menu_id VARCHAR(50) default '', 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_url VARCHAR(1000) default '', 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_five VARCHAR(100) default '', 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), index (group_id) ) ENGINE=MyISAM; @@ -1858,7 +1860,7 @@ caller_id_name VARCHAR(20), extension VARCHAR(100), call_date DATETIME, did_id VARCHAR(9) default '', -did_route VARCHAR(9) default '', +did_route VARCHAR(20) default '', index (uniqueid), index (caller_id_number), index (extension), @@ -2615,7 +2617,7 @@ extension VARCHAR(100), call_date DATETIME, did_id VARCHAR(9) default '', did_description VARCHAR(50) default '', -did_route VARCHAR(9) default '', +did_route VARCHAR(20) default '', group_id VARCHAR(20) default '', user VARCHAR(20) default 'VDCL', 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 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(); diff --git a/extras/upgrade_2.8.sql b/extras/upgrade_2.8.sql index 55307453..e3625be7 100644 --- a/extras/upgrade_2.8.sql +++ b/extras/upgrade_2.8.sql @@ -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'; 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; diff --git a/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt b/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt index c8442236..3287fe4f 100644 --- a/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt +++ b/translations/raw_translation_files/TO_BE_TRANSLATED_2.8.txt @@ -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|| optional, possibly slow|| 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 diff --git a/www/vicidial/admin.php b/www/vicidial/admin.php index 7960b14e..a96b5ec8 100644 --- a/www/vicidial/admin.php +++ b/www/vicidial/admin.php @@ -1826,6 +1826,10 @@ if (isset($_GET["voicemail_instructions"])) {$voicemail_instructions=$_GET["v 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"];} 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);} @@ -2254,6 +2258,7 @@ if ($non_latin < 1) $auto_restart_asterisk = preg_replace('/[^NY]/','',$auto_restart_asterisk); $asterisk_temp_no_restart = preg_replace('/[^NY]/','',$asterisk_temp_no_restart); $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); $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); $queuemetrics_loginout = preg_replace('/[^0-9a-zA-Z]/','',$queuemetrics_loginout); $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); $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); @@ -2558,6 +2562,8 @@ if ($non_latin < 1) $expiration_date = preg_replace('/[^-_0-9a-zA-Z]/','',$expiration_date); $amd_inbound_group = preg_replace('/[^-_0-9a-zA-Z]/','',$amd_inbound_group); $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 $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-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 +# 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 -$admin_version = '2.8-431a'; -$build = '140314-1134'; +$admin_version = '2.8-432a'; +$build = '140404-1007'; $STARTtime = date("U"); $SQLdate = date("Y-m-d H:i:s"); @@ -8952,7 +8959,7 @@ if ($ADD==2411) } 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); $stmt="SELECT did_id from vicidial_inbound_dids where did_pattern='$did_pattern';"; @@ -12828,7 +12835,7 @@ if ($ADD==4311) { echo "
DID MODIFIED: $did_pattern\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); ### LOG INSERTION Admin Log Table ### @@ -24078,7 +24085,7 @@ if ($ADD==3311) $didSQL = "did_id='$did_id'"; if ( (strlen($did_id)<1) and (strlen($did_pattern)>0) ) {$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";} $rslt=mysql_to_mysqli($stmt, $link); $row=mysqli_fetch_row($rslt); @@ -24129,6 +24136,8 @@ if ($ADD==3311) $custom_four = $row[44]; $custom_five = $row[45]; $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;"; @@ -24277,7 +24286,7 @@ if ($ADD==3311) echo "Clean CID Number: $NWB#inbound_dids-filter_clean_cid_number$NWE\n"; - echo "Filter Inbound Number: $NWB#inbound_dids-filter_inbound_number$NWE\n"; + echo "Filter Inbound Number: $NWB#inbound_dids-filter_inbound_number$NWE\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;"; $rslt=mysql_to_mysqli($stmt, $link); @@ -24294,6 +24303,11 @@ if ($ADD==3311) echo "Filter Phone Group ID: $NWB#inbound_dids-filter_phone_group_id$NWE\n"; echo "Filter URL: $NWB#inbound_dids-filter_url$NWE\n"; + + echo "Filter URL DID Redirect: $NWB#inbound_dids-filter_url_did_redirect$NWE\n"; + + echo "Filter DNC Campaign: $NWB#inbound_dids-filter_dnc_campaign$NWE\n"; + echo "Filter Action: $NWB#inbound_dids-filter_action$NWE\n"; echo "Filter Extension: $NWB#inbound_dids-extension$NWE\n"; diff --git a/www/vicidial/help.php b/www/vicidial/help.php index 1c17d55f..fca7a79c 100644 --- a/www/vicidial/help.php +++ b/www/vicidial/help.php @@ -10,6 +10,7 @@ # 131208-1635 - Added help for max dead, dispo and pause time campaign options # 140126-1023 - Added VMAIL_NO_INST options # 140126-2254 - Added voicemail_instructions option for phones +# 140404-1104 - Added new DID filter options # @@ -2450,7 +2451,7 @@ if ($SSqc_features_active > 0)

-Filter Inbound Number - 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. +Filter Inbound Number - 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.
@@ -2462,6 +2463,18 @@ if ($SSqc_features_active > 0)
Filter URL - 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. +
+
+
+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. + +
+
+
+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. + + +