diff --git a/agc_2-X/trunk/UPGRADE b/agc_2-X/trunk/UPGRADE index b673d698..035b0b1c 100644 --- a/agc_2-X/trunk/UPGRADE +++ b/agc_2-X/trunk/UPGRADE @@ -696,6 +696,7 @@ OTHER CHANGES: 159. Added ability to set custom callerID numbers per campaign for outbound calls by areacode. You can even set multiple callerIDs per areacode. +160. Added Agent API function logout to log an agent out of their session diff --git a/agc_2-X/trunk/docs/AGENT_API.txt b/agc_2-X/trunk/docs/AGENT_API.txt index bd7ade60..c7414c82 100644 --- a/agc_2-X/trunk/docs/AGENT_API.txt +++ b/agc_2-X/trunk/docs/AGENT_API.txt @@ -1,4 +1,4 @@ -AGENT API DOCUMENT Started: 2008-07-03 Updated: 2011-04-30 +AGENT API DOCUMENT Started: 2008-07-03 Updated: 2011-09-11 This document describes the functions of an API(Application Programming Interface) for the VICIDIAL Agent screen. This functionality will be rather limited at first @@ -25,6 +25,7 @@ ra_call_control - remote agent call control: hangup/transfer calls being handled send_dtmf - sends dtmf signal string to agent's session transfer_conference - sends several commands related to the agent transfer-conf frame park_call - sends command to park customer or grab customer from park or ivr +logout - logs the agent out of the agent interface New scripts: @@ -140,6 +141,27 @@ SUCCESS: external_pause function set - PAUSE|1232020456|6666 +-------------------------------------------------------------------------------- +logout - + +DESCRIPTION: +Logs the agent out of the agent interface. If the agent is on a live call, will logout after the live call is dispositioned + +VALUES: (value) +LOGOUT - Logout the agent session + + +EXAMPLE URLS: +http://server/agc/api.php?source=test&user=6666&pass=1234&agent_user=1000&function=logout&value=LOGOUT + +RESPONSES: +ERROR: logout not valid - PAUSE|6666 +ERROR: no user found - 6666 +ERROR: agent_user is not logged in - 6666 +SUCCESS: logout function set - LOGOUT|1232020456|6666 + + + -------------------------------------------------------------------------------- external_dial - diff --git a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt index bbb3f23e..627e18c2 100644 --- a/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt +++ b/agc_2-X/trunk/translations/raw_translation_files/TO_BE_TRANSLATED_2.4.txt @@ -781,6 +781,7 @@ Postal Code Outside Dialable Zone|| Custom Transfer|| System Delay, Please try again|| Disposition Status List Hidden|| +The system has received a command to log you out, you have been logged out of your session|| ############################################################ MANAGER Manual diff --git a/agc_2-X/trunk/www/agc/api.php b/agc_2-X/trunk/www/agc/api.php index be7d85dc..59c6799c 100644 --- a/agc_2-X/trunk/www/agc/api.php +++ b/agc_2-X/trunk/www/agc/api.php @@ -54,10 +54,11 @@ # 110224-1711 - Added compatibility with QM phone environment logging # 110409-0821 - Added run_time logging of API functions # 110430-0953 - Added option to external_dial by lead_id with alt_dial option +# 110911-1555 - Added logout function # -$version = '2.4-20'; -$build = '110430-0953'; +$version = '2.4-21'; +$build = '110911-1555'; $startMS = microtime(); @@ -583,6 +584,75 @@ if ($function == 'external_pause') +################################################################################ +### BEGIN - logout - log the agent out of the system +################################################################################ +if ($function == 'logout') + { + if ( (strlen($value)<1) or ( (strlen($agent_user)<1) and (strlen($alt_user)<1) ) or (!ereg("LOGOUT",$value)) ) + { + $result = 'ERROR'; + $result_reason = "logout not valid"; + echo "$result: $result_reason - $value|$agent_user\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + else + { + if (strlen($alt_user)>1) + { + $stmt = "select count(*) from vicidial_users where custom_three='$alt_user';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + if ($row[0] > 0) + { + $stmt = "select user from vicidial_users where custom_three='$alt_user' order by user;"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + $agent_user = $row[0]; + } + else + { + $result = 'ERROR'; + $result_reason = "no user found"; + echo "$result: $result_reason - $alt_user\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + } + $stmt = "select count(*) from vicidial_live_agents where user='$agent_user';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_query($stmt, $link); + $row=mysql_fetch_row($rslt); + if ($row[0] > 0) + { + $stmt="UPDATE vicidial_live_agents set external_pause='$value' where user='$agent_user';"; + if ($format=='debug') {echo "\n";} + $rslt=mysql_query($stmt, $link); + $result = 'SUCCESS'; + $result_reason = "logout function set"; + echo "$result: $result_reason - $value|$epoch|$agent_user\n"; + $data = "$epoch"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + else + { + $result = 'ERROR'; + $result_reason = "agent_user is not logged in"; + echo "$result: $result_reason - $agent_user\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + } + } + } +################################################################################ +### END - logout +################################################################################ + + + + + + ################################################################################ ### BEGIN - external_dial - place a manual dial phone call ################################################################################ diff --git a/agc_2-X/trunk/www/agc/conf_exten_check.php b/agc_2-X/trunk/www/agc/conf_exten_check.php index 90f9f1d9..78e24c0a 100644 --- a/agc_2-X/trunk/www/agc/conf_exten_check.php +++ b/agc_2-X/trunk/www/agc/conf_exten_check.php @@ -658,6 +658,11 @@ if ($ACTION == 'refresh') {$Alogin='DEAD_EXTERNAL';} if ($Ashift_logout > 0) {$Alogin='SHIFT_LOGOUT';} + if ($external_pause == 'LOGOUT') + { + $Alogin='API_LOGOUT'; + $external_pause=''; + } echo 'DateTime: ' . $NOW_TIME . '|UnixTime: ' . $StarTtime . '|Logged-in: ' . $Alogin . '|CampCalls: ' . $RingCalls . '|Status: ' . $Astatus . '|DiaLCalls: ' . $DiaLCalls . '|APIHanguP: ' . $external_hangup . '|APIStatuS: ' . $external_status . '|APIPausE: ' . $external_pause . '|APIDiaL: ' . $external_dial . '|DEADcall: ' . $DEADcustomer . '|InGroupChange: ' . $InGroupChangeDetails . '|APIFields: ' . $external_update_fields . '|APIFieldsData: ' . $external_update_fields_data . '|APITimerAction: ' . $timer_action . '|APITimerMessage: ' . $timer_action_message . '|APITimerSeconds: ' . $timer_action_seconds . '|APIdtmf: ' . $external_dtmf . '|APItransferconf: ' . $external_transferconf . '|APIpark: ' . $external_park . '|APITimerDestination: ' . $timer_action_destination . '|APIManualDialQueue: ' . $MDQ_count . "\n"; diff --git a/agc_2-X/trunk/www/agc/vicidial.php b/agc_2-X/trunk/www/agc/vicidial.php index b481c0f1..894b3470 100644 --- a/agc_2-X/trunk/www/agc/vicidial.php +++ b/agc_2-X/trunk/www/agc/vicidial.php @@ -363,10 +363,11 @@ # 110723-2308 - Complete hiding of phone numbers in logs when alter phone is set to HIDE # 110730-2240 - Added option to hide dispo statuses, only to be used with API # 110802-0122 - Added call_id variable +# 110911-1604 - Added API logout function # -$version = '2.4-330c'; -$build = '110802-0122'; +$version = '2.4-331c'; +$build = '110911-1604'; $mel=1; # Mysql Error Log enabled = 1 $mysql_log_count=73; $one_mysql_log=0; @@ -3300,6 +3301,7 @@ if ($enable_fast_refresh < 1) {echo "\tvar refresh_interval = 1000;\n";} var alert_enabled = ''; var allow_alerts = ''; var shift_logout_flag = 0; + var api_logout_flag = 0; var vtiger_callback_id = 0; var agent_status_view = ''; var agent_status_view_time = ''; @@ -4199,6 +4201,12 @@ function set_length(SLnumber,SLlength_goal,SLdirection) { shift_logout_flag=1; } + if (AGLogiN == 'API_LOGOUT') + { + api_logout_flag=1; + if ( (MD_channel_look < 1) && (VD_live_customer_call < 1) && (alt_dial_status_display < 1) ) + {LogouT('API');} + } } var VLAStatuS_array = check_time_array[4].split("Status: "); var VLAStatuS = VLAStatuS_array[1]; @@ -8911,7 +8919,7 @@ function set_length(SLnumber,SLlength_goal,SLdirection) AgentDispoing = 0; - if (shift_logout_flag < 1) + if ( (shift_logout_flag < 1) && (api_logout_flag < 1) ) { if (wrapup_waiting == 0) { @@ -8949,7 +8957,10 @@ function set_length(SLnumber,SLlength_goal,SLdirection) } else { - LogouT('SHIFT'); + if (shift_logout_flag > 0) + {LogouT('SHIFT');} + else + {LogouT('API');} } if (focus_blur_enabled==1) { @@ -9667,6 +9678,8 @@ function set_length(SLnumber,SLlength_goal,SLdirection) var logout_content=''; if (tempreason=='SHIFT') {logout_content='Your Shift is over or has changed, you have been logged out of your session

';} + if (tempreason=='API') + {logout_content='The system has received a command to log you out, you have been logged out of your session

';} document.getElementById("LogouTBoxLink").innerHTML = logout_content + "CLICK HERE TO LOG IN AGAIN\n";