Added tw_check option for transfer_conference API function

git-svn-id: svn://192.168.202.10@3832 3d104415-ff17-0410-8863-d5cf3c621b8a
This commit is contained in:
mattf
2024-04-27 12:57:44 +00:00
parent 7c830fd029
commit 42f98a2e69
2 changed files with 57 additions and 8 deletions
+5 -2
View File
@@ -1,4 +1,4 @@
AGENT API DOCUMENT Started: 2008-07-03 Updated: 2024-04-25 AGENT API DOCUMENT Started: 2008-07-03 Updated: 2024-04-27
This document describes the functions of an API(Application Programming Interface) This document describes the functions of an API(Application Programming Interface)
for the VICIDIAL Agent screen. This functionality will be rather limited at first for the VICIDIAL Agent screen. This functionality will be rather limited at first
@@ -718,7 +718,9 @@ VALUES:
multi_dial_phones - multi_dial_phones -
OPTIONAL, for use only with "Agent 3-way Press-1 Calls", contains up to 10 phone numbers separated by commas: "2125551212,4075551212,3125551212" (duplicates will be removed) OPTIONAL, for use only with "Agent 3-way Press-1 Calls", contains up to 10 phone numbers separated by commas: "2125551212,4075551212,3125551212" (duplicates will be removed)
md_check - md_check -
OPTIONAL, for use only with 'multi_dial_phones' option above, if this is set to 'YES' it will check for still-active previous 3-way calls and show an error if any are found OPTIONAL, for use only with 'multi_dial_phones' option above, if this is set to 'YES' it will check for still-active previous 3-way press-1 calls and show an error if any are found
tw_check -
OPTIONAL, for use only with the dialing 3-way call options above, if this is set to 'YES' it will check for still-active previous 3-way calls and show an error if any are found
EXAMPLE URLS: EXAMPLE URLS:
http://server/agc/api.php?source=test&user=6666&pass=1234&agent_user=1000&function=transfer_conference&value=HANGUP_XFER http://server/agc/api.php?source=test&user=6666&pass=1234&agent_user=1000&function=transfer_conference&value=HANGUP_XFER
@@ -746,6 +748,7 @@ ERROR: caller_id_number from group_alias is not valid - 6666|TESTING|123
ERROR: group_alias is not valid - 6666|TESTING ERROR: group_alias is not valid - 6666|TESTING
ERROR: cid_choice is not valid - 6666|TESTING ERROR: cid_choice is not valid - 6666|TESTING
ERROR: agent_user has previous active 3-way calls - 6666|1|0|YES ERROR: agent_user has previous active 3-way calls - 6666|1|0|YES
ERROR: agent_user has current active 3-way call - 6666|1|0|YES
SUCCESS: transfer_conference function set - LOCAL_CLOSER|SALESLINE||YES|6666|M2141842580000000044| SUCCESS: transfer_conference function set - LOCAL_CLOSER|SALESLINE||YES|6666|M2141842580000000044|
+50 -4
View File
@@ -114,10 +114,11 @@
# 231222-2105 - Added multi_dial_phones option to the transfer_conference function # 231222-2105 - Added multi_dial_phones option to the transfer_conference function
# 240219-1500 - Added daily_limit setting to change_ingroups function # 240219-1500 - Added daily_limit setting to change_ingroups function
# 240425-1901 - Added md_check option for transfer_conference function # 240425-1901 - Added md_check option for transfer_conference function
# 240427-0809 - Added tw_check option for transfer_conference function
# #
$version = '2.14-79'; $version = '2.14-80';
$build = '240425-1901'; $build = '240427-0809';
$php_script = 'api.php'; $php_script = 'api.php';
$startMS = microtime(); $startMS = microtime();
@@ -295,6 +296,8 @@ if (isset($_GET["multi_dial_phones"])) {$multi_dial_phones=$_GET["multi_dial_p
elseif (isset($_POST["multi_dial_phones"])) {$multi_dial_phones=$_POST["multi_dial_phones"];} elseif (isset($_POST["multi_dial_phones"])) {$multi_dial_phones=$_POST["multi_dial_phones"];}
if (isset($_GET["md_check"])) {$md_check=$_GET["md_check"];} if (isset($_GET["md_check"])) {$md_check=$_GET["md_check"];}
elseif (isset($_POST["md_check"])) {$md_check=$_POST["md_check"];} elseif (isset($_POST["md_check"])) {$md_check=$_POST["md_check"];}
if (isset($_GET["tw_check"])) {$tw_check=$_GET["tw_check"];}
elseif (isset($_POST["tw_check"])) {$tw_check=$_POST["tw_check"];}
$DB=preg_replace("/[^0-9a-zA-Z]/","",$DB); $DB=preg_replace("/[^0-9a-zA-Z]/","",$DB);
@@ -358,6 +361,7 @@ $campaign_dnc_check=preg_replace("/[^-_0-9a-zA-Z]/","",$campaign_dnc_check);
$notification_date = preg_replace('/[^- \:0-9]/','',$notification_date); $notification_date = preg_replace('/[^- \:0-9]/','',$notification_date);
$multi_dial_phones = preg_replace('/[^\,0-9]/','',$multi_dial_phones); $multi_dial_phones = preg_replace('/[^\,0-9]/','',$multi_dial_phones);
$md_check = preg_replace("/[^0-9a-zA-Z]/","",$md_check); $md_check = preg_replace("/[^0-9a-zA-Z]/","",$md_check);
$tw_check = preg_replace("/[^0-9a-zA-Z]/","",$tw_check);
if ($non_latin < 1) if ($non_latin < 1)
{ {
@@ -4030,12 +4034,15 @@ if ($function == 'transfer_conference')
$row=mysqli_fetch_row($rslt); $row=mysqli_fetch_row($rslt);
if ($row[0] > 0) if ($row[0] > 0)
{ {
$stmt = "select lead_id,callerid from vicidial_live_agents where user='$agent_user';"; $stmt = "select lead_id,callerid,server_ip,conf_exten,status from vicidial_live_agents where user='$agent_user';";
if ($DB) {echo "$stmt\n";} if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
$row=mysqli_fetch_row($rslt); $row=mysqli_fetch_row($rslt);
$lead_id = $row[0]; $lead_id = $row[0];
$callerid = $row[1]; $callerid = $row[1];
$AGENTserver_ip = $row[2];
$AGENTconf_exten = $row[3];
$AGENTstatus = $row[4];
if ( ($lead_id > 0) and (strlen($callerid)>15) ) if ( ($lead_id > 0) and (strlen($callerid)>15) )
{ {
### START In-group transfer or bridge ### ### START In-group transfer or bridge ###
@@ -4224,6 +4231,7 @@ if ($function == 'transfer_conference')
$multi_dial_phones_STRING=''; $multi_dial_phones_STRING='';
if (strlen($multi_dial_phones) > 4) if (strlen($multi_dial_phones) > 4)
{ {
### START 3-way press-1 multi-dial calls processing ###
$multi_dial_phonesARY=array(); $multi_dial_phonesARY=array();
$multi_dial_phones_ct=0; $multi_dial_phones_ct=0;
if (preg_match("/,/",$multi_dial_phones)) if (preg_match("/,/",$multi_dial_phones))
@@ -4256,8 +4264,9 @@ if ($function == 'transfer_conference')
$md_check_ct=0; $md_check_ct=0;
if (preg_match("/YES/i",$md_check)) if (preg_match("/YES/i",$md_check))
{ {
$half_hour_ago = date("Y-m-d H:i:s", mktime(date("H"),date("i")-30,date("s"),date("m"),date("d"),date("Y")));
# check for still-active previous 3-way calls from this agent and send error if any are found # check for still-active previous 3-way calls from this agent and send error if any are found
$stmt = "select count(*) from vicidial_3way_press_live where user='$agent_user' and status NOT IN('HUNGUP','DEFEATED','TRANSFER','TOOSLOW','DECLINED');"; $stmt = "select count(*) from vicidial_3way_press_live where user='$agent_user' and status NOT IN('HUNGUP','DEFEATED','TRANSFER','TOOSLOW','DECLINED') and call_date > \"$half_hour_ago\";";
if ($DB) {echo "$stmt\n";} if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link); $rslt=mysql_to_mysqli($stmt, $link);
$VDTW_live_ct = mysqli_num_rows($rslt); $VDTW_live_ct = mysqli_num_rows($rslt);
@@ -4285,8 +4294,45 @@ if ($function == 'transfer_conference')
} }
} }
$multi_dial_phones_OUTPUT = "|Multi-phones: $vp $mp $affected_rowsVP"; $multi_dial_phones_OUTPUT = "|Multi-phones: $vp $mp $affected_rowsVP";
### END 3-way press-1 multi-dial calls processing ###
} }
### START Check for already active 3-way calls in agent session, if enabled ###
if (preg_match("/YES/i",$tw_check))
{
$conf_engine='';
$conf_table = 'vicidial_conferences';
$tw_check_ct=0;
$stmt = "SELECT conf_engine from servers where server_ip='$AGENTserver_ip';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
$row=mysqli_fetch_row($rslt);
$conf_engine = $row[0];
if (preg_match("/CONFBRIDGE/i",$conf_engine)) {$conf_table = 'vicidial_confbridges';}
# check for active 3-way call from this agent and send error if any are found
$stmt = "SELECT count(*) from live_sip_channels where server_ip='$AGENTserver_ip' and channel_group LIKE \"DC%W\" and extension='$AGENTconf_exten';";
if ($DB) {echo "$stmt\n";}
$rslt=mysql_to_mysqli($stmt, $link);
$TW_live_ct = mysqli_num_rows($rslt);
if ($TW_live_ct > 0)
{
$row=mysqli_fetch_row($rslt);
$tw_check_ct = $row[0];
}
if ($tw_check_ct > 0)
{
$result = _QXZ("ERROR");
$result_reason = _QXZ("agent_user has current active 3-way call");
$data = "$tw_check_ct|0|$tw_check";
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;
}
}
### END Check for already active 3-way calls in agent session, if enabled ###
$stmt="UPDATE vicidial_live_agents set external_transferconf='$external_transferconf' where user='$agent_user';"; $stmt="UPDATE vicidial_live_agents set external_transferconf='$external_transferconf' where user='$agent_user';";
if ($format=='debug') {echo "\n<!-- $stmt -->";} if ($format=='debug') {echo "\n<!-- $stmt -->";}
if ($DB) {echo "$stmt\n";} if ($DB) {echo "$stmt\n";}