From 550f4fb44bfe73ce5751e2ad77053803ba2ea9e0 Mon Sep 17 00:00:00 2001 From: mattf Date: Tue, 23 Jun 2020 21:00:14 +0000 Subject: [PATCH] Added several more options to add_phone and update_phone functions in the Non-Agent API git-svn-id: svn://192.168.202.10@3258 3d104415-ff17-0410-8863-d5cf3c621b8a --- bin/ADMIN_timeclock_auto_logout.pl | 1 + docs/NON-AGENT_API.txt | 15 ++++- www/vicidial/non_agent_api.php | 100 +++++++++++++++++++++++++++-- 3 files changed, 109 insertions(+), 7 deletions(-) diff --git a/bin/ADMIN_timeclock_auto_logout.pl b/bin/ADMIN_timeclock_auto_logout.pl index b0ce102e..82fb0017 100644 --- a/bin/ADMIN_timeclock_auto_logout.pl +++ b/bin/ADMIN_timeclock_auto_logout.pl @@ -140,6 +140,7 @@ if (!$VARDB_port) {$VARDB_port='3306';} if ($run_check > 0) { my $grepout = `/bin/ps ax | grep timeclock | grep -v grep | grep -v '/bin/sh' | grep -v 'Timeclock'`; +# my $grepout = `/bin/ps ax | grep timeclock | grep -v grep | grep -v '/bin/sh' | grep -v 'SCREEN' | grep -v 'screen'`; my $grepnum=0; $grepnum++ while ($grepout =~ m/\n/g); if ($DBX) {print "CONCURRENCY CHECK: |$grepnum|\n$grepout\n";} diff --git a/docs/NON-AGENT_API.txt b/docs/NON-AGENT_API.txt index 360ded20..a79072a6 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: 2020-06-10 +NON-AGENT API DOCUMENT Started: 2008-07-24 Updated: 2020-06-22 This document describes the functions of an API(Application Programming Interface) for all functions NOT directly relating to the VICIDIAL Agent screen. @@ -158,6 +158,7 @@ Changes: 200418-0837 - Added custom_copy_method option for the add_list function 200606-0938 - Added more settings to add_list & update_list 200610-1447 - Added duration option to recording_lookup function +200622-1609 - Added more options to add_phone and update_phone functions API Functions use the 'function' variable @@ -1291,6 +1292,11 @@ OPTIONAL FIELDS- phone_context - a phone context, default is 'default' email - 1-100 characters admin_user_group - a valid user group or '---ALL---' +is_webphone - Y, N or Y_API_LAUNCH: whether this phone should be treated as a webphone, default is N. +webphone_auto_answer - Y or N: whether this phone should answer as soon as the call to the agent is placed, default is N. +use_external_server_ip - Y or N: whether this phone should use the server's external IP for registration, default is N. +template_id - 1-15 characters, if defined it must be a valid template in the system +on_hook_agent - Y or N: should this phone be treated as on-hook when an agent logs in with it, default is N. Example URL strings for API calls: http://server/vicidial/non_agent_api.php?source=test&function=add_phone&user=6666&pass=1234&extension=55000&dialplan_number=55000&voicemail_id=55000&phone_login=55000&phone_pass=test&server_ip=192.168.198.5&protocol=SIP®istration_password=test&phone_full_name=Extension+55000&local_gmt=-5.00&outbound_cid=7275551212 @@ -1303,6 +1309,7 @@ ERROR: add_phone SERVER DOES NOT EXIST - 6666|10.0.9.9 ERROR: add_phone PHONE ALREADY EXISTS ON THIS SERVER - 6666|10.0.9.8|cc101 ERROR: add_phone PHONE LOGIN ALREADY EXISTS - 6666|cc100 ERROR: add_phone YOU MUST USE A VALID TIMEZONE - 6666|-5 +ERROR: add_phone TEMPLATE ID DOES NOT EXIST, THIS IS AN OPTIONAL FIELD - 6666|cc100|batch SUCCESS: add_phone PHONE HAS BEEN ADDED - 6666|cc100|10.0.9.8|SIP|100 @@ -1337,6 +1344,11 @@ email - 5-100 characters, email address for voicemail, to clear this field sen admin_user_group - a valid user group or '---ALL---' phone_ring_timeout - 1-3 digits, default '60' delete_vm_after_email - Y or N, default 'N' +is_webphone - Y, N or Y_API_LAUNCH: whether this phone should be treated as a webphone, default is N. +webphone_auto_answer - Y or N: whether this phone should answer as soon as the call to the agent is placed, default is N. +use_external_server_ip - Y or N: whether this phone should use the server's external IP for registration, default is N. +template_id - 1-15 characters, if defined it must be a valid template in the system +on_hook_agent - Y or N: should this phone be treated as on-hook when an agent logs in with it, default is N. Example URL strings for API calls: http://server/vicidial/non_agent_api.php?source=test&function=update_phone&user=6666&pass=1234&extension=55000&dialplan_number=55000&voicemail_id=55000&phone_login=55000&phone_pass=test&server_ip=192.168.198.5&protocol=SIP®istration_password=test&phone_full_name=Extension+55000&local_gmt=-5.00&outbound_cid=7275551212 @@ -1365,6 +1377,7 @@ ERROR: update_phone OUTBOUND ALT CID MUST BE FROM 6 TO 18 DIGITS, THIS IS AN OPT ERROR: update_phone USER GROUP MUST BE FROM 2 TO 20 CHARACTERS, THIS IS AN OPTIONAL FIELD - 6666|0 ERROR: update_phone PHONE RING TIMEOUT MUST BE FROM 2 TO 180 SECONDS, THIS IS AN OPTIONAL FIELD - 6666|0 ERROR: update_phone DELETE VOICEMAIL AFTER EMAIL MUST BE Y OR N, THIS IS AN OPTIONAL FIELD - 6666|0 +ERROR: update_phone TEMPLATE ID DOES NOT EXIST, THIS IS AN OPTIONAL FIELD - 6666|cc100|batch SUCCESS: update_phone PHONE HAS BEEN UPDATED - 6666|cc100|10.0.9.8|SIP|100 SUCCESS: update_phone PHONE HAS BEEN DELETED - 6666|cc100|10.0.9.8| NOTICE: update_phone USER DOES NOT HAVE PERMISSION TO DELETE PHONES - 6666|7878 diff --git a/www/vicidial/non_agent_api.php b/www/vicidial/non_agent_api.php index b62236ec..7c2e4749 100644 --- a/www/vicidial/non_agent_api.php +++ b/www/vicidial/non_agent_api.php @@ -150,10 +150,11 @@ # 200525-0118 - Fix for middle_initial --BLANK-- # 200606-0938 - Added more settings to add_list & update_list # 200610-1447 - Added duration option to recording_lookup function +# 200622-1609 - Added more options to add_phone and update_phone functions # -$version = '2.14-127'; -$build = '200610-1447'; +$version = '2.14-128'; +$build = '200622-1609'; $api_url_log = 0; $startMS = microtime(); @@ -536,6 +537,16 @@ if (isset($_GET["custom_copy_method"])) {$custom_copy_method=$_GET["custom_co elseif (isset($_POST["custom_copy_method"])) {$custom_copy_method=$_POST["custom_copy_method"];} if (isset($_GET["duration"])) {$duration=$_GET["duration"];} elseif (isset($_POST["duration"])) {$duration=$_POST["duration"];} +if (isset($_GET["is_webphone"])) {$is_webphone=$_GET["is_webphone"];} + elseif (isset($_POST["is_webphone"])) {$is_webphone=$_POST["is_webphone"];} +if (isset($_GET["webphone_auto_answer"])) {$webphone_auto_answer=$_GET["webphone_auto_answer"];} + elseif (isset($_POST["webphone_auto_answer"])) {$webphone_auto_answer=$_POST["webphone_auto_answer"];} +if (isset($_GET["use_external_server_ip"])) {$use_external_server_ip=$_GET["use_external_server_ip"];} + elseif (isset($_POST["use_external_server_ip"])) {$use_external_server_ip=$_POST["use_external_server_ip"];} +if (isset($_GET["template_id"])) {$template_id=$_GET["template_id"];} + elseif (isset($_POST["template_id"])) {$template_id=$_POST["template_id"];} +if (isset($_GET["on_hook_agent"])) {$on_hook_agent=$_GET["on_hook_agent"];} + elseif (isset($_POST["on_hook_agent"])) {$on_hook_agent=$_POST["on_hook_agent"];} header ("Content-type: text/html; charset=utf-8"); @@ -765,6 +776,11 @@ if ($non_latin < 1) $custom_order = preg_replace('/[^-_0-9a-zA-Z]/','',$custom_order); $custom_copy_method = preg_replace('/[^-_0-9a-zA-Z]/','',$custom_copy_method); $duration = preg_replace('/[^-_0-9a-zA-Z]/','',$duration); + $is_webphone = preg_replace('/[^-_0-9a-zA-Z]/','',$is_webphone); + $webphone_auto_answer = preg_replace('/[^-_0-9a-zA-Z]/','',$webphone_auto_answer); + $use_external_server_ip = preg_replace('/[^-_0-9a-zA-Z]/','',$use_external_server_ip); + $template_id = preg_replace('/[^-_0-9a-zA-Z]/','',$template_id); + $on_hook_agent = preg_replace('/[^-_0-9a-zA-Z]/','',$on_hook_agent); } else { @@ -3428,10 +3444,47 @@ if ($function == 'add_phone') } else { + $is_webphone_SQL=''; + $webphone_auto_answer_SQL=''; + $use_external_server_ip_SQL=''; + $template_id_SQL=''; + $on_hook_agent_SQL=''; + if (preg_match("/^Y$|^N$|^Y_API_LAUNCH$/i",$is_webphone)) + {$is_webphone_SQL = ",is_webphone='$is_webphone'";} + if (preg_match("/^Y$|^N$/i",$webphone_auto_answer)) + {$webphone_auto_answer_SQL = ",webphone_auto_answer='$webphone_auto_answer'";} + if (preg_match("/^Y$|^N$/i",$use_external_server_ip)) + {$use_external_server_ip_SQL = ",use_external_server_ip='$use_external_server_ip'";} + if (preg_match("/^Y$|^N$/i",$on_hook_agent)) + {$on_hook_agent_SQL = ",on_hook_agent='$on_hook_agent'";} + if (strlen($template_id) > 1) + { + if (preg_match("/^--BLANK--$/i",$template_id)) + {$template_id_SQL = ",template_id=''";} + else + { + $stmt="SELECT count(*) from vicidial_conf_templates where template_id='$template_id';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $template_id_exists=$row[0]; + if ($template_id_exists > 0) + {$template_id_SQL = ",template_id='$template_id'";} + else + { + $result = 'ERROR'; + $result_reason = "add_phone TEMPLATE ID DOES NOT EXIST, THIS IS AN OPTIONAL FIELD"; + $data = "$phone_login|$template_id"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + } + } + if (strlen($phone_context)<1) {$phone_context='default';} if (strlen($admin_user_group)<1) {$admin_user_group='---ALL---';} - $stmt="INSERT INTO phones SET extension='$extension', dialplan_number='$dialplan_number', voicemail_id='$voicemail_id', login='$phone_login', pass='$phone_pass', server_ip='$server_ip', protocol='$protocol', conf_secret='$registration_password', fullname='$phone_full_name', local_gmt='$local_gmt', outbound_cid='$outbound_cid', phone_context='$phone_context', email='$email', active='Y', status='ACTIVE', user_group='$admin_user_group';"; + $stmt="INSERT INTO phones SET extension='$extension', dialplan_number='$dialplan_number', voicemail_id='$voicemail_id', login='$phone_login', pass='$phone_pass', server_ip='$server_ip', protocol='$protocol', conf_secret='$registration_password', fullname='$phone_full_name', local_gmt='$local_gmt', outbound_cid='$outbound_cid', phone_context='$phone_context', email='$email', active='Y', status='ACTIVE', user_group='$admin_user_group' $is_webphone_SQL $webphone_auto_answer_SQL $use_external_server_ip_SQL $template_id_SQL $on_hook_agent_SQL;"; $rslt=mysql_to_mysqli($stmt, $link); ### LOG INSERTION Admin Log Table ### @@ -3624,6 +3677,11 @@ if ($function == 'update_phone') $outbound_alt_cidSQL=''; $phone_ring_timeoutSQL=''; $delete_vm_after_emailSQL=''; + $is_webphone_SQL=''; + $webphone_auto_answer_SQL=''; + $use_external_server_ip_SQL=''; + $template_id_SQL=''; + $on_hook_agent_SQL=''; if (strlen($local_gmt) > 0) { @@ -3883,9 +3941,39 @@ if ($function == 'update_phone') else {$delete_vm_after_emailSQL = " ,delete_vm_after_email='$delete_vm_after_email'";} } - - - $updateSQL = "$dialplan_numberSQL$activeSQL$outboundcidSQL$voicemail_idSQL$phone_loginSQL$phone_passSQL$protocolSQL$registration_passwordSQL$phone_full_nameSQL$phone_contextSQL$emailSQL$local_gmtSQL$admin_user_groupSQL$outbound_alt_cidSQL$phone_ring_timeoutSQL$delete_vm_after_emailSQL"; + if (preg_match("/^Y$|^N$|^Y_API_LAUNCH$/i",$is_webphone)) + {$is_webphone_SQL = ",is_webphone='$is_webphone'";} + if (preg_match("/^Y$|^N$/i",$webphone_auto_answer)) + {$webphone_auto_answer_SQL = ",webphone_auto_answer='$webphone_auto_answer'";} + if (preg_match("/^Y$|^N$/i",$use_external_server_ip)) + {$use_external_server_ip_SQL = ",use_external_server_ip='$use_external_server_ip'";} + if (preg_match("/^Y$|^N$/i",$on_hook_agent)) + {$on_hook_agent_SQL = ",on_hook_agent='$on_hook_agent'";} + if (strlen($template_id) > 1) + { + if (preg_match("/^--BLANK--$/i",$template_id)) + {$template_id_SQL = ",template_id=''";} + else + { + $stmt="SELECT count(*) from vicidial_conf_templates where template_id='$template_id';"; + $rslt=mysql_to_mysqli($stmt, $link); + $row=mysqli_fetch_row($rslt); + $template_id_exists=$row[0]; + if ($template_id_exists > 0) + {$template_id_SQL = ",template_id='$template_id'";} + else + { + $result = 'ERROR'; + $result_reason = "update_phone TEMPLATE ID DOES NOT EXIST, THIS IS AN OPTIONAL FIELD"; + $data = "$phone_login|$template_id"; + echo "$result: $result_reason: |$user|$data\n"; + api_log($link,$api_logging,$api_script,$user,$agent_user,$function,$value,$result,$result_reason,$source,$data); + exit; + } + } + } + + $updateSQL = "$dialplan_numberSQL$activeSQL$outboundcidSQL$voicemail_idSQL$phone_loginSQL$phone_passSQL$protocolSQL$registration_passwordSQL$phone_full_nameSQL$phone_contextSQL$emailSQL$local_gmtSQL$admin_user_groupSQL$outbound_alt_cidSQL$phone_ring_timeoutSQL$delete_vm_after_emailSQL $is_webphone_SQL $webphone_auto_answer_SQL $use_external_server_ip_SQL $template_id_SQL $on_hook_agent_SQL"; if (strlen($updateSQL)< 3)