From a807133d73236bd25a3c01199b43196af3aa65fc Mon Sep 17 00:00:00 2001 From: mattf Date: Fri, 5 Apr 2013 21:11:09 +0000 Subject: [PATCH] Added agent_status function to the non-agent API git-svn-id: svn://192.168.202.10@1953 3d104415-ff17-0410-8863-d5cf3c621b8a --- UPGRADE | 2 + docs/NON-AGENT_API.txt | 36 +++++++- www/vicidial/non_agent_api.php | 159 ++++++++++++++++++++++++++++++++- 3 files changed, 194 insertions(+), 3 deletions(-) diff --git a/UPGRADE b/UPGRADE index 298f20e4..6a702513 100644 --- a/UPGRADE +++ b/UPGRADE @@ -230,6 +230,8 @@ OTHER CHANGES: 39. Added user_group as a script, form, webform, start_call_url and dispo_call_url variable. +40. Added agent_status function to the non-agent API + diff --git a/docs/NON-AGENT_API.txt b/docs/NON-AGENT_API.txt index fb9a988b..884c7067 100644 --- a/docs/NON-AGENT_API.txt +++ b/docs/NON-AGENT_API.txt @@ -1,4 +1,4 @@ -NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2013-03-28 +NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2013-04-05 This document describes the functions of an API(Application Programming Interface) for all functions NOT directly relating to the VICIDIAL Agent screen. @@ -33,6 +33,7 @@ update_list - updates list settings in the system, reset leads in list, delete l add_group_alias - adds group alias to the system user_group_status - real-time status of one or more user groups in_group_status - real-time status of one or more in groups +agent_status - real-time status of one user New scripts: @@ -79,6 +80,7 @@ Changes: 121116-1938 - Added state call time restrictions to add_lead hopper insert function 121125-2210 - Added Other Campaign DNC option and list expiration date option 130328-0949 - Added update_phone_number option to update_lead function +130405-1538 - Added agent_status function @@ -394,6 +396,38 @@ SALESLINE SUPPORT,31,0,75,54,0,20,1 +-------------------------------------------------------------------------------- +agent_status - real-time status of one agent user + +NOTE: api user for this function must have user_level set to 7 or higher and "view reports" enabled + +REQUIRED FIELDS- +source - description of what originated the API call (maximum 20 characters) +agent_user - 2-20 characters, use only for one agent status + +SETTINGS FIELDS- +stage - the format of the exported data: csv, tab, pipe(default) +header - include a header(YES) or not(NO). This is optional, default is not to include a header + +NOTES- +There is a hard limit of 10000000 records analyzed + +Example URL strings for API calls: +http://server/vicidial/non_agent_api.php?source=test&user=6666&pass=1234&function=agent_status&agent_user=1234&stage=csv&header=YES + +Example responses: +ERROR: agent_status USER DOES NOT HAVE PERMISSION TO GET AGENT INFO - 6666|0 +ERROR: agent_status INVALID SEARCH PARAMETERS - 6666|| +ERROR: agent_status AGENT NOT FOUND - 6666|| +ERROR: agent_status AGENT NOT LOGGED IN - 6666|| + +A SUCCESS response will not show "SUCCESS", but instead will just print the results in the following format: +status,call_id,lead_id,campaign_id,calls_today,full_name,user_group,user_level +INCALL,M4050908070000012345,12345,TESTCAMP,12,Test Agent,AGENTS,3 + + + + -------------------------------------------------------------------------------- update_log_entry - updates the status of a vicidial_log or vicidial_closer_log entry diff --git a/www/vicidial/non_agent_api.php b/www/vicidial/non_agent_api.php index 04fa9cc1..eb70a9bf 100644 --- a/www/vicidial/non_agent_api.php +++ b/www/vicidial/non_agent_api.php @@ -72,10 +72,11 @@ # 121116-1938 - Added state call time restrictions to add_lead hopper insert function # 121125-2210 - Added Other Campaign DNC option and list expiration date option # 130328-0949 - Added update_phone_number option to update_lead function, issue #653 +# 130405-1539 - Added agent_status function # -$version = '2.6-50'; -$build = '130328-0949'; +$version = '2.6-51'; +$build = '130405-1539'; $api_url_log = 0; $startMS = microtime(); @@ -4240,6 +4241,160 @@ if ($function == 'in_group_status') +################################################################################ +### agent_status - exports agent user real-time stats +################################################################################ +if ($function == 'agent_status') + { + if(strlen($source)<2) + { + $result = 'ERROR'; + $result_reason = "Invalid Source"; + echo "$result: $result_reason - $source\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + echo "ERROR: Invalid Source: |$source|\n"; + exit; + } + else + { + $stmt="SELECT count(*) from vicidial_users where user='$user' and pass='$pass' and vdc_agent_api_access='1' and view_reports='1' and user_level > 6 and active='Y';"; + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $allowed_user=$row[0]; + if ($allowed_user < 1) + { + $result = 'ERROR'; + $result_reason = "agent_status USER DOES NOT HAVE PERMISSION TO GET AGENT INFO"; + echo "$result: $result_reason: |$user|$allowed_user|\n"; + $data = "$allowed_user"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $agent_search_SQL=''; + $search_ready=0; + + require_once("functions.php"); + + if ( (strlen($agent_user)>0) and (strlen($agent_user)<100) ) + { + $agent_search_SQL .= "where user='$agent_user'"; + $search_ready++; + } + if ($search_ready < 1) + { + $result = 'ERROR'; + $result_reason = "agent_status INVALID SEARCH PARAMETERS"; + $data = "$user|$agent_user"; + echo "$result: $result_reason: $data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + else + { + $stmt="SELECT user_group from vicidial_users where user='$user' and pass='$pass' and user_level > 6 and view_reports='1' and active='Y';"; + if ($DB) {$MAIN.="|$stmt|\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $LOGuser_group = $row[0]; + + $stmt="SELECT admin_viewable_groups from vicidial_user_groups where user_group='$LOGuser_group';"; + if ($DB) {$MAIN.="|$stmt|\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $LOGadmin_viewable_groups = $row[0]; + + $LOGadmin_viewable_groupsSQL=''; + $whereLOGadmin_viewable_groupsSQL=''; + if ( (!eregi("--ALL--",$LOGadmin_viewable_groups)) and (strlen($LOGadmin_viewable_groups) > 3) ) + { + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ -/",'',$LOGadmin_viewable_groups); + $rawLOGadmin_viewable_groupsSQL = preg_replace("/ /","','",$rawLOGadmin_viewable_groupsSQL); + $LOGadmin_viewable_groupsSQL = "and user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + $whereLOGadmin_viewable_groupsSQL = "where user_group IN('---ALL---','$rawLOGadmin_viewable_groupsSQL')"; + } + + $k=0; + $output=''; + $DLset=0; + if ($stage == 'csv') + {$DL = ','; $DLset++;} + if ($stage == 'tab') + {$DL = "\t"; $DLset++;} + if ($stage == 'pipe') + {$DL = '|'; $DLset++;} + if ($DLset < 1) + {$DL='|'; $stage='pipe';} + if (strlen($time_format) < 1) + {$time_format = 'HF';} + if ($header == 'YES') + {$output .= 'status' . $DL . 'callerid' . $DL . 'lead_id' . $DL . 'campaign_id' . $DL . 'calls_today' . $DL . 'full_name' . $DL . 'user_group' . $DL . 'user_level' . "\n";} + + $stmt="select full_name,user_group,user_level from vicidial_users $agent_search_SQL $LOGadmin_viewable_groupsSQL;"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $user_to_list = mysql_num_rows($rslt); + if ($user_to_list > 0) + { + $row=mysql_fetch_row($rslt); + $full_name = $row[0]; + $user_group = $row[1]; + $user_level = $row[2]; + + $stmt="select status,callerid,lead_id,campaign_id,calls_today from vicidial_live_agents $agent_search_SQL;"; + $rslt=mysql_query($stmt, $link); + if ($DB) {echo "$stmt\n";} + $agent_to_list = mysql_num_rows($rslt); + if ($agent_to_list > 0) + { + $row=mysql_fetch_row($rslt); + $status = $row[0]; + $callerid = $row[1]; + $lead_id = $row[2]; + $campaign_id = $row[3]; + $calls_today = $row[4]; + + $output .= "$status$DL$callerid$DL$lead_id$DL$campaign_id$DL$calls_today$DL$full_name$DL$user_group$DL$user_level\n"; + + echo "$output"; + + $result = 'SUCCESS'; + $data = "$user|$agent_user|$stage"; + $result_reason = "agent_status $output"; + + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + else + { + $result = 'ERROR'; + $result_reason = "agent_status AGENT NOT LOGGED IN"; + $data = "$user|$agent_user"; + echo "$result: $result_reason: $data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + } + else + { + $result = 'ERROR'; + $result_reason = "agent_status AGENT NOT FOUND"; + $data = "$user|$agent_user"; + echo "$result: $result_reason: $data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + } + } + } + exit; + } +################################################################################ +### END agent_status +################################################################################ + + + ################################################################################ ### update_log_entry - updates the status of a log entry ################################################################################