Event socket bug fix and more docs (#6823)
* Add documentation to methods. Use is_resource for added type detection * Allow connect to specify timeout in microseconds with default 30,000 * Update calling mechanism for event sockets * Update project for new singleton event sockets * remove unused variable * catch errors on closing the socket
This commit is contained in:
@@ -238,37 +238,37 @@
|
||||
|
||||
//add the agent
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
//add the agent using event socket
|
||||
if ($fp) {
|
||||
if ($esl->connected()) {
|
||||
//add the agent
|
||||
$cmd = "api callcenter_config agent add ".$call_center_agent_uuid." ".$agent_type;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config agent add ".$call_center_agent_uuid." '".$agent_type."'";
|
||||
$response = event_socket::api($cmd);
|
||||
usleep(200);
|
||||
//agent set contact
|
||||
$cmd = "api callcenter_config agent set contact ".$call_center_agent_uuid." ".$agent_contact;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config agent set contact ".$call_center_agent_uuid." '".$agent_contact."'";
|
||||
$response = event_socket::api($cmd);
|
||||
usleep(200);
|
||||
//agent set status
|
||||
$cmd = "api callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config agent set status ".$call_center_agent_uuid." '".$agent_status."'";
|
||||
$response = event_socket::api($cmd);
|
||||
usleep(200);
|
||||
//agent set reject_delay_time
|
||||
$cmd = "api callcenter_config agent set reject_delay_time ".$call_center_agent_uuid." ".$agent_reject_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = 'callcenter_config agent set reject_delay_time '.$call_center_agent_uuid.' '. $agent_reject_delay_time;
|
||||
$response = event_socket::api($cmd);
|
||||
usleep(200);
|
||||
//agent set busy_delay_time
|
||||
$cmd = "api callcenter_config agent set busy_delay_time ".$call_center_agent_uuid." ".$agent_busy_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = 'callcenter_config agent set busy_delay_time '.$call_center_agent_uuid.' '.$agent_busy_delay_time;
|
||||
$response = event_socket::api($cmd);
|
||||
//agent set no_answer_delay_time
|
||||
$cmd = "api callcenter_config agent set no_answer_delay_time ".$call_center_agent_uuid." ".$agent_no_answer_delay_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = 'callcenter_config agent set no_answer_delay_time '.$call_center_agent_uuid.' '.$agent_no_answer_delay_time;
|
||||
$response = event_socket::api($cmd);
|
||||
//agent set max_no_answer
|
||||
$cmd = "api callcenter_config agent set max_no_answer ".$call_center_agent_uuid." ".$agent_max_no_answer;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = 'callcenter_config agent set max_no_answer '.$call_center_agent_uuid.' '.$agent_max_no_answer;
|
||||
$response = event_socket::api($cmd);
|
||||
//agent set wrap_up_time
|
||||
$cmd = "api callcenter_config agent set wrap_up_time ".$call_center_agent_uuid." ".$agent_wrap_up_time;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = 'callcenter_config agent set wrap_up_time '.$call_center_agent_uuid.' '.$agent_wrap_up_time;
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
|
||||
//redirect the user
|
||||
|
||||
@@ -57,7 +57,7 @@
|
||||
unset($sql, $parameters);
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
|
||||
//get the agents from the database
|
||||
$sql = "select * from v_call_center_agents ";
|
||||
@@ -70,12 +70,12 @@
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config agent list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$event_socket_str = trim(event_socket::api($switch_cmd));
|
||||
$agent_list = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config tier list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$event_socket_str = trim(event_socket::api($switch_cmd));
|
||||
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the call center queues from the database
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
//get the queue list from event socket
|
||||
$switch_cmd = "callcenter_config queue list agents ".$queue_id;
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$event_socket_str = trim(event_socket::api($switch_cmd));
|
||||
$queue_list = csv_to_named_array($event_socket_str, '|');
|
||||
$call_center_queues[$x]['queue_list'] = $queue_list;
|
||||
$x++;
|
||||
@@ -165,7 +165,7 @@
|
||||
foreach($_POST['agents'] as $row) {
|
||||
if (!empty($row['agent_status'])) {
|
||||
//agent set status
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
//set the user_status
|
||||
if (!isset($row['queue_name'])) {
|
||||
$array['users'][0]['user_uuid'] = $row['user_uuid'] ?? null;
|
||||
@@ -211,20 +211,20 @@
|
||||
|
||||
//set the call center status to Logged Out
|
||||
if (is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
|
||||
$response = event_socket_request($fp, $command);
|
||||
$command = "callcenter_config agent set status ".$row['agent_uuid']." 'Logged Out' ";
|
||||
$response = event_socket::api($command);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (is_uuid($row['agent_uuid'])) {
|
||||
//set the agent status
|
||||
$command = "api callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
|
||||
$response = event_socket_request($fp, $command);
|
||||
$command = "callcenter_config agent set status ".$row['agent_uuid']." '".$agent_status."'";
|
||||
$response = event_socket::api($command);
|
||||
|
||||
//set the agent state
|
||||
if ($agent_status == 'Available' || $agent_status == 'Logged Out') {
|
||||
$command = "api callcenter_config agent set state ".$row['agent_uuid']." 'Waiting'";
|
||||
$response = event_socket_request($fp, $command);
|
||||
$command = "callcenter_config agent set state ".$row['agent_uuid']." 'Waiting'";
|
||||
$response = event_socket::api($command);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,22 +247,21 @@
|
||||
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Available') {
|
||||
//set the call center status
|
||||
//$command = "api callcenter_config agent set status ".$row['agent_name']."@".$_SESSION['domain_name']." '".$row['agent_status']."'";
|
||||
//$response = event_socket_request($fp, $command);
|
||||
//$response = event_socket::command($command);
|
||||
|
||||
//assign the agent to the queue
|
||||
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
|
||||
//echo $command."<br />\n";
|
||||
$response = event_socket_request($fp, $command);
|
||||
$command = "callcenter_config tier add ".$queue_id." ".$row['agent_uuid']." 1 1";
|
||||
$response = event_socket::api($command);
|
||||
}
|
||||
}
|
||||
|
||||
//un-assign the agent from the queue
|
||||
if (isset($row['queue_uuid']) && $row['agent_status'] == 'Logged Out') {
|
||||
if (is_uuid($row['queue_uuid']) && is_uuid($row['agent_uuid'])) {
|
||||
$command = "api callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
|
||||
$command = "callcenter_config tier del ".$queue_id." ".$row['agent_uuid'];
|
||||
//echo $command."<br />\n";
|
||||
$response = event_socket_request($fp, $command);
|
||||
$response = event_socket::api($command);
|
||||
}
|
||||
}
|
||||
usleep(200);
|
||||
|
||||
@@ -160,13 +160,13 @@
|
||||
|
||||
//delete the agent from freeswitch
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
//delete the agent over event socket
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
//callcenter_config tier del [queue_name] [agent_name]
|
||||
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid)) {
|
||||
$cmd = "api callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier del ".$queue_extension."@".$_SESSION['domain_name']." ".$call_center_agent_uuid;
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -468,9 +468,9 @@
|
||||
|
||||
if (!empty($agent_name)) {
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
//add the agent using event socket
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
/* syntax:
|
||||
callcenter_config tier add [queue_name] [agent_name] [level] [position]
|
||||
callcenter_config tier set state [queue_name] [agent_name] [state]
|
||||
@@ -479,20 +479,20 @@
|
||||
*/
|
||||
//add the agent
|
||||
if (is_numeric($queue_extension) && is_uuid($call_center_agent_uuid) && is_numeric($tier_level) && is_numeric($tier_position)) {
|
||||
$cmd = "api callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier add ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level." ".$tier_position;
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
usleep(200);
|
||||
//agent set level
|
||||
if (is_numeric($queue_extension) && is_numeric($tier_level)) {
|
||||
$cmd = "api callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier set level ".$queue_extension."@".$_SESSION["domain_name"]." ".$call_center_agent_uuid." ".$tier_level;
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
usleep(200);
|
||||
//agent set position
|
||||
if (is_numeric($queue_extension) && is_numeric($tier_position)) {
|
||||
$cmd = "api callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier set position ".$queue_extension."@".$_SESSION["domain_name"]." ".$tier_position;
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
usleep(200);
|
||||
}
|
||||
|
||||
@@ -70,11 +70,10 @@
|
||||
|
||||
//connect to event socket
|
||||
if (isset($queue_extension) && isset($cmd)) {
|
||||
$fp = event_socket_create();
|
||||
if ($fp) {
|
||||
$response = event_socket_request($fp, 'api reloadxml');
|
||||
$response = event_socket_request($fp, 'api callcenter_config queue '.$cmd. ' '.$queue_extension."@".$_SESSION["domain_name"]);
|
||||
fclose($fp);
|
||||
$esl = event_socket::create();
|
||||
if ($esl->is_connected()) {
|
||||
$response = event_socket::api('reloadxml');
|
||||
$response = event_socket::api('callcenter_config queue '.$cmd.' '.$queue_extension.'@'.$_SESSION['domain_name']);
|
||||
}
|
||||
else {
|
||||
$response = '';
|
||||
@@ -85,4 +84,4 @@
|
||||
$_SESSION["message"] = $response;
|
||||
header("Location: call_center_queues.php?savemsg=".urlencode($response));
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -338,13 +338,13 @@
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
|
||||
//delete the queue in the switch
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
foreach ($uuids as $uuid) {
|
||||
$cmd = "api callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION["domain_name"];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config queue unload ".$call_center_queues[$uuid]['queue_extension']."@".$_SESSION['domain_name'];
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -436,13 +436,12 @@
|
||||
if (is_array($array) && @sizeof($array) != 0) {
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
|
||||
//delete the agent in the switch
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
foreach ($uuids as $uuid) {
|
||||
$cmd = "api callcenter_config agent del ".$uuid;
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
event_socket::async("callcenter_config agent del $uuid");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -627,4 +626,4 @@ $c->queue_cc_exit_keys = "";
|
||||
$c->dialplan();
|
||||
*/
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
}
|
||||
|
||||
//setup the event socket connection
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
|
||||
//get the http post values and set them as php variables
|
||||
if (!empty($_POST['agents'])) {
|
||||
@@ -91,8 +91,8 @@
|
||||
$result = $database->save($array);
|
||||
|
||||
//send the agent status status to mod_call_center
|
||||
$cmd = "api callcenter_config agent set status ".$agent_uuid." '".$agent_status."'";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config agent set status ".$agent_uuid." '".$agent_status."'";
|
||||
$response = event_socket::api($cmd);
|
||||
|
||||
//add or delete agents from the queue assigned by the tier
|
||||
foreach ($_POST['agents'] as $row) {
|
||||
@@ -103,21 +103,21 @@
|
||||
//set the agent status to available and assign the agent to the queue with the tier
|
||||
if ($row['agent_status'] == 'Available') {
|
||||
//assign the agent to the queue
|
||||
$cmd = "api callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
|
||||
//set the agent status to available and assign the agent to the queue with the tier
|
||||
if ($row['agent_status'] == 'On Break') {
|
||||
//assign the agent to the queue
|
||||
$cmd = "api callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier add ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id']." 1 1";
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
|
||||
//un-assign the agent from the queue
|
||||
if ($row['agent_status'] == 'Logged Out') {
|
||||
$cmd = "api callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
|
||||
$response = event_socket_request($fp, $cmd);
|
||||
$cmd = "callcenter_config tier del ".$row['queue_extension']."@".$_SESSION['domain_name']." ".$row['id'];
|
||||
$response = event_socket::api($cmd);
|
||||
}
|
||||
|
||||
//small sleep
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config tier list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$event_socket_str = trim(event_socket::api($switch_cmd));
|
||||
$call_center_tiers = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agents from the database
|
||||
|
||||
@@ -31,11 +31,11 @@
|
||||
}
|
||||
|
||||
//connect to event socket
|
||||
$fp = event_socket_create();
|
||||
$esl = event_socket::create();
|
||||
|
||||
//get the agent list from event socket
|
||||
$switch_cmd = 'callcenter_config agent list';
|
||||
$event_socket_str = trim(event_socket_request($fp, 'api '.$switch_cmd));
|
||||
$event_socket_str = trim(event_socket::api($switch_cmd));
|
||||
$agent_list = csv_to_named_array($event_socket_str, '|');
|
||||
|
||||
//get the agents from the database
|
||||
@@ -69,7 +69,7 @@
|
||||
}
|
||||
|
||||
//build the event
|
||||
if ($fp) {
|
||||
if ($esl->is_connected()) {
|
||||
$event = "sendevent PRESENCE_IN\n";
|
||||
$event .= "proto: agent\n";
|
||||
$event .= "from: ".$row['agent_name']."@".$row['domain_name']."\n";
|
||||
@@ -104,16 +104,13 @@
|
||||
}
|
||||
|
||||
//send the event
|
||||
$result = event_socket_request($fp, $event);
|
||||
$result = event_socket::command($event);
|
||||
if (isset($debug)) {
|
||||
print_r($result, false);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//close event socket connection
|
||||
fclose($fp);
|
||||
|
||||
/*
|
||||
* * * * * cd /var/www/fusionpbx && php /var/www/fusionpbx/app/call_centers/resources/jobs/call_center_agents.php
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user