From 02449098f87f0aa87c123fb98405373c4cb25f07 Mon Sep 17 00:00:00 2001 From: mattf Date: Sun, 2 Mar 2014 12:50:07 +0000 Subject: [PATCH] Added Agent API options to dial next number and search for lead phone number within a lead_id git-svn-id: svn://192.168.202.10@2078 3d104415-ff17-0410-8863-d5cf3c621b8a --- docs/AGENT_API.txt | 9 ++++-- www/agc/api.php | 41 ++++++++++++++++++++++++-- www/agc/vdc_db_query.php | 19 +++++++++--- www/agc/vicidial.php | 62 ++++++++++++++++++++++++---------------- 4 files changed, 96 insertions(+), 35 deletions(-) diff --git a/docs/AGENT_API.txt b/docs/AGENT_API.txt index f31d47d6..99388ae7 100644 --- a/docs/AGENT_API.txt +++ b/docs/AGENT_API.txt @@ -1,4 +1,4 @@ -AGENT API DOCUMENT Started: 2008-07-03 Updated: 2014-01-26 +AGENT API DOCUMENT Started: 2008-07-03 Updated: 2014-03-01 This document describes the functions of an API(Application Programming Interface) for the VICIDIAL Agent screen. This functionality will be rather limited at first @@ -221,7 +221,7 @@ Places a manual dial phone call on the agent screen, you can define whether to s VALUES: value - - Any valid phone number (7275551212) + Any valid phone number (7275551212), or "MANUALNEXT" to mimic the Dial Next Number button lead_id - Any valid lead_id from the system(either value or lead_id are required) if both are defined, lead_id will override value phone_code - @@ -246,7 +246,9 @@ vtiger_callback - alt_user - OPTIONAL, instead of agent_user, this is to lookup the agent_user using the vicidial_users.custom_three field alt_dial - - OPTIONAL, if using lead_id you can set this flag to dial the ALT number or the ADDR3 number + OPTIONAL, if using lead_id you can set this flag to dial the ALT number or the ADDR3 number or SEARCH a phone_number within the lead + if SEARCH is used and the phone_number is not matched with the lead's phone_number, alt_phone or address3 field + an ERROR will be returned EXAMPLE URLS: http://server/agc/api.php?source=test&user=6666&pass=1234&agent_user=1000&function=external_dial&value=7275551212&phone_code=1&search=YES&preview=NO&focus=YES @@ -263,6 +265,7 @@ ERROR: vtiger callback activity does not exist in vtiger system - 12345 ERROR: phone_number is already in this agents manual dial queue - 6666|7275551211 ERROR: lead_id is not valid - 6666|1234567 ERROR: phone number is not valid - 6666||1234567| +ERROR: phone number lead_id search not found - 6666|7275551212|1234567| SUCCESS: external_dial function set - 7275551212|6666|1|YES|NO|YES|123456|1232020456|9|TESTING|7275551211| diff --git a/www/agc/api.php b/www/agc/api.php index b5786284..62e8b155 100644 --- a/www/agc/api.php +++ b/www/agc/api.php @@ -71,10 +71,11 @@ # 140107-2140 - Added webserver and url logging # 140126-0701 - Added pause_code function # 140214-1736 - Added preview_dial_action function +# 140301-2046 - Added options to dial next number and search for lead phone number # -$version = '2.8-37'; -$build = '140214-1736'; +$version = '2.8-38'; +$build = '140301-2046'; $startMS = microtime(); @@ -1109,7 +1110,10 @@ if ($function == 'call_agent') ################################################################################ if ($function == 'external_dial') { - $value = preg_replace("/[^0-9]/","",$value); + if ($value == 'MANUALNEXT') + {$value = preg_replace("/[^0-9a-zA-Z]/","",$value);} + else + {$value = preg_replace("/[^0-9]/","",$value);} if ( ( (strlen($value)<2) and (strlen($lead_id)<1) ) or ( (strlen($agent_user)<2) and (strlen($alt_user)<2) ) or (strlen($search)<2) or (strlen($preview)<2) or (strlen($focus)<2) ) { @@ -1316,8 +1320,39 @@ if ($function == 'external_dial') ### If lead_id is populated, check for it and adjust variables accordingly if (strlen($lead_id) > 0) { + $phone_search = $value; $value=''; $phone_code=''; + if ($alt_dial=='SEARCH') + { + $alt_dial=''; + $stmt = "SELECT phone_number,alt_phone,address3 FROM vicidial_list where lead_id='$lead_id';"; + $rslt=mysql_to_mysqli($stmt, $link); + $paa_ct = mysqli_num_rows($rslt); + if ($paa_ct > 0) + { + $row=mysqli_fetch_row($rslt); + $P_main = $row[0]; + $P_alt = $row[1]; + $P_adr3 = $row[2]; + + if ($P_adr3 == "$phone_search") + {$alt_dial='ADDR3';} + if ($P_alt == "$phone_search") + {$alt_dial='ALT';} + if ($P_main == "$phone_search") + {$alt_dial='MAIN';} + if ($alt_dial=='') + { + $result = 'ERROR'; + $result_reason = "phone number lead_id search not found"; + $data = "$value|$lead_id|$alt_dial"; + echo "$result: $result_reason - $agent_user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + } + } if ($alt_dial=='ALT') {$stmtPF = "select alt_phone,phone_code from vicidial_list where lead_id='$lead_id';";} if ($alt_dial=='ADDR3') diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php index 77684bab..d9230a65 100644 --- a/www/agc/vdc_db_query.php +++ b/www/agc/vdc_db_query.php @@ -346,12 +346,13 @@ # 140214-1852 - Added preview_dial_action API function # 140215-2051 - Added several variable options for QM socket URL # 140217-0803 - Small fix for campaigns with no lists +# 140301-2348 - Small change for new API MANUALNEXT option # -$version = '2.8-243'; -$build = '140217-0803'; +$version = '2.8-244'; +$build = '140301-2348'; $mel=1; # Mysql Error Log enabled = 1 -$mysql_log_count=543; +$mysql_log_count=544; $one_mysql_log=0; require_once("dbconnect_mysqli.php"); @@ -1447,7 +1448,7 @@ if ($ACTION == 'manDiaLnextCaLL') { ##### grab number of calls today in this campaign and increment $eac_phone=''; - $stmt="SELECT calls_today,extension FROM vicidial_live_agents WHERE user='$user' and campaign_id='$campaign';"; + $stmt="SELECT calls_today,extension,external_dial FROM vicidial_live_agents WHERE user='$user' and campaign_id='$campaign';"; $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00015',$user,$server_ip,$session_name,$one_mysql_log);} if ($DB) {echo "$stmt\n";} @@ -1457,11 +1458,21 @@ if ($ACTION == 'manDiaLnextCaLL') $row=mysqli_fetch_row($rslt); $calls_today = $row[0]; $eac_phone = $row[1]; + $ed_vla = $row[2]; } else {$calls_today ='0';} $calls_today++; + if (preg_match("/^MANUALNEXT/",$ed_vla)) + { + $stmt = "UPDATE vicidial_live_agents set external_dial='' where user='$user';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00544',$user,$server_ip,$session_name,$one_mysql_log);} + $VLAEDXaffected_rows = mysqli_affected_rows($link); + } + $script_recording_delay=0; ##### find if script contains recording fields $stmt="SELECT count(*) FROM vicidial_scripts vs,vicidial_campaigns vc WHERE campaign_id='$campaign' and vs.script_id=vc.campaign_script and script_text LIKE \"%--A--recording_%\";"; diff --git a/www/agc/vicidial.php b/www/agc/vicidial.php index 7c554ed3..2732e97e 100644 --- a/www/agc/vicidial.php +++ b/www/agc/vicidial.php @@ -420,10 +420,11 @@ # 140126-0741 - Added pause code API function # 140204-1230 - Added check for valid date in call log view # 140214-1851 - Added preview_dial_action API function +# 140301-2059 - Added API functions options for SEARCH for phone within lead_id and Dial Next Number # -$version = '2.8-389c'; -$build = '140214-1851'; +$version = '2.8-390c'; +$build = '140301-2059'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=79; $one_mysql_log=0; @@ -4899,30 +4900,41 @@ function set_length(SLnumber,SLlength_goal,SLdirection) } else { - APIDiaL_ID = APIDiaL_array_detail[6]; - document.vicidial_form.MDDiaLCodE.value = APIDiaL_array_detail[1]; - document.vicidial_form.phone_code.value = APIDiaL_array_detail[1]; - document.vicidial_form.MDPhonENumbeR.value = APIDiaL_array_detail[0]; - document.vicidial_form.vendor_lead_code.value = APIDiaL_array_detail[5]; - prefix_choice = APIDiaL_array_detail[7]; - active_group_alias = APIDiaL_array_detail[8]; - cid_choice = APIDiaL_array_detail[9]; - vtiger_callback_id = APIDiaL_array_detail[10]; - document.vicidial_form.MDLeadID.value = APIDiaL_array_detail[11]; - document.vicidial_form.MDType.value = APIDiaL_array_detail[12]; - - // alert(APIDiaL_array_detail[1] + "-----" + APIDiaL + "-----" + document.vicidial_form.MDDiaLCodE.value + "-----" + document.vicidial_form.phone_code.value); - - if (APIDiaL_array_detail[2] == 'YES') // lookup lead in system - {document.vicidial_form.LeadLookuP.checked=true;} + if (APIDiaL_array_detail[0] == 'MANUALNEXT') // trigger Dial Next Number button + { + if (APIDiaL_array_detail[4] == 'YES') // focus on vicidial agent screen + {window.focus(); alert_box("Placing call to next number");} + if (APIDiaL_array_detail[3] == 'YES') + {document.vicidial_form.LeadPreview.checked=true;} + ManualDialNext('','','','','','0'); + } else - {document.vicidial_form.LeadLookuP.checked=false;} - if (APIDiaL_array_detail[4] == 'YES') // focus on vicidial agent screen - {window.focus(); alert_box("Placing call to:" + APIDiaL_array_detail[1] + " " + APIDiaL_array_detail[0]);} - if (APIDiaL_array_detail[3] == 'YES') // call preview - {NeWManuaLDiaLCalLSubmiT('PREVIEW');} - else - {NeWManuaLDiaLCalLSubmiT('NOW');} + { + APIDiaL_ID = APIDiaL_array_detail[6]; + document.vicidial_form.MDDiaLCodE.value = APIDiaL_array_detail[1]; + document.vicidial_form.phone_code.value = APIDiaL_array_detail[1]; + document.vicidial_form.MDPhonENumbeR.value = APIDiaL_array_detail[0]; + document.vicidial_form.vendor_lead_code.value = APIDiaL_array_detail[5]; + prefix_choice = APIDiaL_array_detail[7]; + active_group_alias = APIDiaL_array_detail[8]; + cid_choice = APIDiaL_array_detail[9]; + vtiger_callback_id = APIDiaL_array_detail[10]; + document.vicidial_form.MDLeadID.value = APIDiaL_array_detail[11]; + document.vicidial_form.MDType.value = APIDiaL_array_detail[12]; + + // alert(APIDiaL_array_detail[1] + "-----" + APIDiaL + "-----" + document.vicidial_form.MDDiaLCodE.value + "-----" + document.vicidial_form.phone_code.value); + + if (APIDiaL_array_detail[2] == 'YES') // lookup lead in system + {document.vicidial_form.LeadLookuP.checked=true;} + else + {document.vicidial_form.LeadLookuP.checked=false;} + if (APIDiaL_array_detail[4] == 'YES') // focus on vicidial agent screen + {window.focus(); alert_box("Placing call to:" + APIDiaL_array_detail[1] + " " + APIDiaL_array_detail[0]);} + if (APIDiaL_array_detail[3] == 'YES') // call preview + {NeWManuaLDiaLCalLSubmiT('PREVIEW');} + else + {NeWManuaLDiaLCalLSubmiT('NOW');} + } } } if ( (in_lead_preview_state==1) || (alt_dial_status_display==1) )