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";