diff --git a/docs/NON-AGENT_API.txt b/docs/NON-AGENT_API.txt index e89ed099..367f5160 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: 2014-04-03 +NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2014-04-18 This document describes the functions of an API(Application Programming Interface) for all functions NOT directly relating to the VICIDIAL Agent screen. @@ -94,6 +94,7 @@ Changes: 140214-1540 - Added check_phone_number function 140331-2119 - Converted division calculations to use MathZDC function 140403-2024 - Added camp_rg_only option to update_user function +140418-1553 - Added preview_lead_id for agent_status API Functions use the 'function' variable @@ -433,8 +434,10 @@ 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,pause_code,real_time_sub_status INCALL,M4050908070000012345,12345,TESTCAMP,1,Test Agent,AGENTS,3,LOGIN, +INCALL|M4181606420000000104|104|TESTBLND|1|Admin|ADMIN|9|BRK2|DEAD +PAUSED||105|TESTBLND|1|Admin|ADMIN|9||PREVIEW -NOTE: real_time_sub_status field can consist of: DEAD, DISPO, 3-WAY, PARK, RING or it can be empty +NOTE: real_time_sub_status field can consist of: DEAD, DISPO, 3-WAY, PARK, RING, PREVIEW or it can be empty diff --git a/extras/MySQL_AST_CREATE_tables.sql b/extras/MySQL_AST_CREATE_tables.sql index af5e3a95..48234c84 100644 --- a/extras/MySQL_AST_CREATE_tables.sql +++ b/extras/MySQL_AST_CREATE_tables.sql @@ -413,6 +413,7 @@ campaign_grade TINYINT(2) UNSIGNED default '1', external_recording VARCHAR(20) default '', external_pause_code VARCHAR(6) default '', pause_code VARCHAR(6) default '', +preview_lead_id INT(9) UNSIGNED default '0', index (random_id), index (last_call_time), index (last_update_time), @@ -3260,4 +3261,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='1372',db_schema_update_date=NOW(),reload_timestamp=NOW(); +UPDATE system_settings SET db_schema_version='1373',db_schema_update_date=NOW(),reload_timestamp=NOW(); diff --git a/extras/upgrade_2.8.sql b/extras/upgrade_2.8.sql index 0eb1d548..8d8f3427 100644 --- a/extras/upgrade_2.8.sql +++ b/extras/upgrade_2.8.sql @@ -230,3 +230,7 @@ ALTER TABLE vicidial_campaigns ADD max_inbound_calls SMALLINT(5) UNSIGNED defaul ALTER TABLE vicidial_inbound_group_agents ADD group_type VARCHAR(1) default 'C'; UPDATE system_settings SET db_schema_version='1372',db_schema_update_date=NOW() where db_schema_version < 1372; + +ALTER TABLE vicidial_live_agents ADD preview_lead_id INT(9) UNSIGNED default '0'; + +UPDATE system_settings SET db_schema_version='1373',db_schema_update_date=NOW() where db_schema_version < 1373; diff --git a/www/agc/vdc_db_query.php b/www/agc/vdc_db_query.php index d0996cfe..1ef6099d 100644 --- a/www/agc/vdc_db_query.php +++ b/www/agc/vdc_db_query.php @@ -350,12 +350,13 @@ # 140402-1750 - Formatting cleanup and MySQL logging cleanup # 140407-1923 - Fixed call notes logging bug when call is not answered # 140417-0931 - Added max inbound calls feature +# 140418-1536 - Added flagging of preview dialing in vicidial_live_agents # -$version = '2.8-247'; -$build = '140417-0931'; +$version = '2.8-248'; +$build = '140418-1536'; $mel=1; # Mysql Error Log enabled = 1 -$mysql_log_count=589; +$mysql_log_count=591; $one_mysql_log=0; require_once("dbconnect_mysqli.php"); @@ -2630,6 +2631,15 @@ if ($ACTION == 'manDiaLnextCaLL') } ##### BEGIN if preview dialing, do not send the call ##### + if ($preview == 'YES') + { + ### update the agent record with the preview_lead_id in vicidial_live_agents + $stmt = "UPDATE vicidial_live_agents set preview_lead_id='$lead_id' where user='$user' and server_ip='$server_ip';"; + if ($DB) {echo "$stmt\n";} + $rslt=mysql_to_mysqli($stmt, $link); + if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00590',$user,$server_ip,$session_name,$one_mysql_log);} + } + ##### BEGIN if NOT preview dialing, do not send the call ##### if ( (strlen($preview)<1) or ($preview == 'NO') or (strlen($dial_ingroup) > 1) ) { ### prepare variables to place manual call from VICIDiaL @@ -2949,7 +2959,7 @@ if ($ACTION == 'manDiaLnextCaLL') fclose($fp); } } - ##### END if preview dialing, do not send the call ##### + ##### END if NOT preview dialing, send the call ##### ##### find if script contains recording fields @@ -3215,6 +3225,12 @@ if ($ACTION == 'manDiaLskip') $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00538',$user,$server_ip,$session_name,$one_mysql_log);} + ### clear the preview dial flag of the lead_id being previewed + $stmt = "UPDATE vicidial_live_agents set preview_lead_id='0' 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,'00591',$user,$server_ip,$session_name,$one_mysql_log);} + $called_count = ($called_count - 1); ### set the lead back to previous status and called_count $stmt = "UPDATE vicidial_list set status='$stage', called_count='$called_count',user='$user' where lead_id='$lead_id';"; @@ -3266,7 +3282,7 @@ if ($ACTION == 'manDiaLonly') } ### set the api dial action to blank if used - $stmt = "UPDATE vicidial_live_agents set external_dial='' where user='$user' and external_dial IN('DIALONLY','ALTDIAL','ADR3DIAL');"; + $stmt = "UPDATE vicidial_live_agents set external_dial='',preview_lead_id='0' where user='$user' and external_dial IN('DIALONLY','ALTDIAL','ADR3DIAL');"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00539',$user,$server_ip,$session_name,$one_mysql_log);} @@ -3531,7 +3547,7 @@ if ($ACTION == 'manDiaLonly') if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00045',$user,$server_ip,$session_name,$one_mysql_log);} ### update the agent status to INCALL in vicidial_live_agents - $stmt = "UPDATE vicidial_live_agents set status='INCALL',last_call_time='$NOW_TIME',callerid='$MqueryCID',lead_id='$lead_id',comments='MANUAL',calls_today='$calls_today',external_hangup=0,external_status='',external_pause='',external_dial='',last_state_change='$NOW_TIME',pause_code='' where user='$user' and server_ip='$server_ip';"; + $stmt = "UPDATE vicidial_live_agents set status='INCALL',last_call_time='$NOW_TIME',callerid='$MqueryCID',lead_id='$lead_id',comments='MANUAL',calls_today='$calls_today',external_hangup=0,external_status='',external_pause='',external_dial='',last_state_change='$NOW_TIME',pause_code='',preview_lead_id='0' where user='$user' and server_ip='$server_ip';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {$errno = mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00046',$user,$server_ip,$session_name,$one_mysql_log);} @@ -4566,7 +4582,7 @@ if ($stage == "end") $licf_SQL = ''; if ($VLA_inOUT == 'INBOUND') {$licf_SQL = ",last_inbound_call_finish='$NOW_TIME'";} - $stmt = "UPDATE vicidial_live_agents set status='PAUSED',uniqueid=0,callerid='',channel='',call_server_ip='',last_call_finish='$NOW_TIME',comments='',last_state_change='$NOW_TIME' $licf_SQL where user='$user' and server_ip='$server_ip';"; + $stmt = "UPDATE vicidial_live_agents set status='PAUSED',uniqueid=0,callerid='',channel='',call_server_ip='',last_call_finish='$NOW_TIME',comments='',last_state_change='$NOW_TIME',preview_lead_id='0' $licf_SQL where user='$user' and server_ip='$server_ip';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {$errno = mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00082',$user,$server_ip,$session_name,$one_mysql_log);} @@ -4716,7 +4732,7 @@ if ($stage == "end") if ($mel > 0) {mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00086',$user,$server_ip,$session_name,$one_mysql_log);} } - $stmt = "UPDATE vicidial_live_agents set status='PAUSED',uniqueid=0,callerid='',channel='',call_server_ip='',last_call_finish='$NOW_TIME',comments='',last_state_change='$NOW_TIME' where user='$user' and server_ip='$server_ip';"; + $stmt = "UPDATE vicidial_live_agents set status='PAUSED',uniqueid=0,callerid='',channel='',call_server_ip='',last_call_finish='$NOW_TIME',comments='',last_state_change='$NOW_TIME',preview_lead_id='0' where user='$user' and server_ip='$server_ip';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {$errno = mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00087',$user,$server_ip,$session_name,$one_mysql_log);} @@ -5342,7 +5358,7 @@ if ($ACTION == 'VDADcheckINCOMING') $calls_today++; ### update the agent status to INCALL in vicidial_live_agents - $stmt = "UPDATE vicidial_live_agents set status='INCALL',last_call_time='$NOW_TIME',calls_today='$calls_today',external_hangup=0,external_status='',external_pause='',external_dial='',last_state_change='$NOW_TIME',pause_code='' where user='$user' and server_ip='$server_ip';"; + $stmt = "UPDATE vicidial_live_agents set status='INCALL',last_call_time='$NOW_TIME',calls_today='$calls_today',external_hangup=0,external_status='',external_pause='',external_dial='',last_state_change='$NOW_TIME',pause_code='',preview_lead_id='0' where user='$user' and server_ip='$server_ip';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {$errno = mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00106',$user,$server_ip,$session_name,$one_mysql_log);} @@ -8453,7 +8469,7 @@ if ($ACTION == 'updateDISPO') } ### reset the API fields in vicidial_live_agents record - $stmt = "UPDATE vicidial_live_agents set lead_id=0,external_hangup=0,external_status='',external_update_fields='0',external_update_fields_data='',external_timer_action_seconds='-1',external_dtmf='',external_transferconf='',external_park='',external_recording='',last_state_change='$NOW_TIME' where user='$user' and server_ip='$server_ip';"; + $stmt = "UPDATE vicidial_live_agents set lead_id=0,external_hangup=0,external_status='',external_update_fields='0',external_update_fields_data='',external_timer_action_seconds='-1',external_dtmf='',external_transferconf='',external_park='',external_recording='',last_state_change='$NOW_TIME',preview_lead_id='0' where user='$user' and server_ip='$server_ip';"; if ($DB) {echo "$stmt\n";} $rslt=mysql_to_mysqli($stmt, $link); if ($mel > 0) {$errno = mysql_error_logging($NOW_TIME,$link,$mel,$stmt,'00141',$user,$server_ip,$session_name,$one_mysql_log);} diff --git a/www/vicidial/non_agent_api.php b/www/vicidial/non_agent_api.php index eeacc15b..b6f20079 100644 --- a/www/vicidial/non_agent_api.php +++ b/www/vicidial/non_agent_api.php @@ -88,10 +88,11 @@ # 140214-1540 - Added check_phone_number function # 140331-2119 - Converted division calculations to use MathZDC function # 140403-2024 - Added camp_rg_only option to update_user function +# 140418-1553 - Added preview_lead_id for agent_status # -$version = '2.8-64'; -$build = '140403-2024'; +$version = '2.8-65'; +$build = '140418-1553'; $api_url_log = 0; $startMS = microtime(); @@ -5035,7 +5036,7 @@ if ($function == 'agent_status') $user_group = $row[1]; $user_level = $row[2]; - $stmt="SELECT status,callerid,lead_id,campaign_id,calls_today,agent_log_id,on_hook_agent,ring_callerid from vicidial_live_agents $agent_search_SQL;"; + $stmt="SELECT status,callerid,lead_id,campaign_id,calls_today,agent_log_id,on_hook_agent,ring_callerid,preview_lead_id from vicidial_live_agents $agent_search_SQL;"; $rslt=mysql_to_mysqli($stmt, $link); if ($DB) {echo "$stmt\n";} $agent_to_list = mysqli_num_rows($rslt); @@ -5050,6 +5051,7 @@ if ($function == 'agent_status') $agent_log_id = $row[5]; $on_hook_agent = $row[6]; $ring_callerid = $row[7]; + $preview_lead_id = $row[8]; $pause_code = ''; $rtr_status = ''; @@ -5069,6 +5071,12 @@ if ($function == 'agent_status') if ( ($status == 'PAUSED') and ($lead_id > 0) ) {$rtr_status = 'DISPO';} + if ( ($status == 'PAUSED') and ($preview_lead_id > 0) ) + { + $rtr_status = 'PREVIEW'; + $lead_id = $preview_lead_id; + } + if ($status == 'INCALL') { if ($lead_id > 0)