150 lines
5.7 KiB
PHP
150 lines
5.7 KiB
PHP
|
|
<?
|
||
|
|
function get_call_activity() {
|
||
|
|
global $db;
|
||
|
|
|
||
|
|
//get the extensions
|
||
|
|
$sql = "select extension, number_alias, effective_caller_id_name, effective_caller_id_number, call_group, description from v_extensions ";
|
||
|
|
$sql .= "where domain_uuid = '".$_SESSION['domain_uuid']."' ";
|
||
|
|
$sql .= "order by extension asc ";
|
||
|
|
$prep_statement = $db->prepare($sql);
|
||
|
|
$prep_statement->execute();
|
||
|
|
$extensions = $prep_statement->fetchAll(PDO::FETCH_NAMED);
|
||
|
|
unset ($prep_statement, $sql);
|
||
|
|
|
||
|
|
//send the command
|
||
|
|
$fp = event_socket_create($_SESSION['event_socket_ip_address'], $_SESSION['event_socket_port'], $_SESSION['event_socket_password']);
|
||
|
|
if ($fp) {
|
||
|
|
$switch_cmd = 'show channels as json';
|
||
|
|
$switch_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||
|
|
$json_array = json_decode($switch_result, true);
|
||
|
|
}
|
||
|
|
|
||
|
|
//build the response
|
||
|
|
$x = 0;
|
||
|
|
foreach($extensions as &$row) {
|
||
|
|
//add the extension details
|
||
|
|
$array[$x] = $row;
|
||
|
|
|
||
|
|
//set the call detail defaults
|
||
|
|
$array[$x]["uuid"] = null;
|
||
|
|
$array[$x]["direction"] = null;
|
||
|
|
$array[$x]["created"] = null;
|
||
|
|
$array[$x]["created_epoch"] = null;
|
||
|
|
$array[$x]["name"] = null;
|
||
|
|
$array[$x]["state"] = null;
|
||
|
|
$array[$x]["cid_name"] = null;
|
||
|
|
$array[$x]["cid_num"] = null;
|
||
|
|
$array[$x]["ip_addr"] = null;
|
||
|
|
$array[$x]["dest"] = null;
|
||
|
|
$array[$x]["application"] = null;
|
||
|
|
$array[$x]["application_data"] = null;
|
||
|
|
$array[$x]["dialplan"] = null;
|
||
|
|
$array[$x]["context"] = null;
|
||
|
|
$array[$x]["read_codec"] = null;
|
||
|
|
$array[$x]["read_rate"] = null;
|
||
|
|
$array[$x]["read_bit_rate"] = null;
|
||
|
|
$array[$x]["write_codec"] = null;
|
||
|
|
$array[$x]["write_rate"] = null;
|
||
|
|
$array[$x]["write_bit_rate"] = null;
|
||
|
|
$array[$x]["secure"] = null;
|
||
|
|
$array[$x]["hostname"] = null;
|
||
|
|
$array[$x]["presence_id"] = null;
|
||
|
|
$array[$x]["presence_data"] = null;
|
||
|
|
$array[$x]["callstate"] = null;
|
||
|
|
$array[$x]["callee_name"] = null;
|
||
|
|
$array[$x]["callee_num"] = null;
|
||
|
|
$array[$x]["callee_direction"] = null;
|
||
|
|
$array[$x]["call_uuid"] = null;
|
||
|
|
$array[$x]["sent_callee_name"] = null;
|
||
|
|
$array[$x]["sent_callee_num"] = null;
|
||
|
|
|
||
|
|
//add the active call details
|
||
|
|
$found = false;
|
||
|
|
foreach($json_array['rows'] as &$field) {
|
||
|
|
$presence_id = $field['presence_id'];
|
||
|
|
$presence = explode("@", $presence_id);
|
||
|
|
$presence_id = $presence[0];
|
||
|
|
$presence_domain = $presence[1];
|
||
|
|
if ($row['extension'] == $presence_id) {
|
||
|
|
if ($presence_domain == $_SESSION['domain_name']) {
|
||
|
|
$found = true;
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
//normalize the array
|
||
|
|
if ($found) {
|
||
|
|
$array[$x]["uuid"] = $field['uuid'];
|
||
|
|
$array[$x]["direction"] = $field['direction'];
|
||
|
|
$array[$x]["created"] = $field['created'];
|
||
|
|
$array[$x]["created_epoch"] = $field['created_epoch'];
|
||
|
|
$array[$x]["name"] = $field['name'];
|
||
|
|
$array[$x]["state"] = $field['state'];
|
||
|
|
$array[$x]["cid_name"] = $field['cid_name'];
|
||
|
|
$array[$x]["cid_num"] = $field['cid_num'];
|
||
|
|
$array[$x]["ip_addr"] = $field['ip_addr'];
|
||
|
|
$array[$x]["dest"] = $field['dest'];
|
||
|
|
$array[$x]["application"] = $field['application'];
|
||
|
|
$array[$x]["application_data"] = $field['application_data'];
|
||
|
|
$array[$x]["dialplan"] = $field['dialplan'];
|
||
|
|
$array[$x]["context"] = $field['context'];
|
||
|
|
$array[$x]["read_codec"] = $field['read_codec'];
|
||
|
|
$array[$x]["read_rate"] = $field['read_rate'];
|
||
|
|
$array[$x]["read_bit_rate"] = $field['read_bit_rate'];
|
||
|
|
$array[$x]["write_codec"] = $field['write_codec'];
|
||
|
|
$array[$x]["write_rate"] = $field['write_rate'];
|
||
|
|
$array[$x]["write_bit_rate"] = $field['write_bit_rate'];
|
||
|
|
$array[$x]["secure"] = $field['secure'];
|
||
|
|
$array[$x]["hostname"] = $field['hostname'];
|
||
|
|
$array[$x]["presence_id"] = $field['presence_id'];
|
||
|
|
$array[$x]["presence_data"] = $field['presence_data'];
|
||
|
|
$array[$x]["callstate"] = $field['callstate'];
|
||
|
|
$array[$x]["callee_name"] = $field['callee_name'];
|
||
|
|
$array[$x]["callee_num"] = $field['callee_num'];
|
||
|
|
$array[$x]["callee_direction"] = $field['callee_direction'];
|
||
|
|
$array[$x]["call_uuid"] = $field['call_uuid'];
|
||
|
|
$array[$x]["sent_callee_name"] = $field['sent_callee_name'];
|
||
|
|
$array[$x]["sent_callee_num"] = $field['sent_callee_num'];
|
||
|
|
|
||
|
|
//calculate and set the call length
|
||
|
|
$call_length_seconds = time() - $array[$x]["created_epoch"];
|
||
|
|
$call_length_hour = floor($call_length_seconds/3600);
|
||
|
|
$call_length_min = floor($call_length_seconds/60 - ($call_length_hour * 60));
|
||
|
|
$call_length_sec = $call_length_seconds - (($call_length_hour * 3600) + ($call_length_min * 60));
|
||
|
|
$call_length_min = sprintf("%02d", $call_length_min);
|
||
|
|
$call_length_sec = sprintf("%02d", $call_length_sec);
|
||
|
|
$call_length = $call_length_hour.':'.$call_length_min.':'.$call_length_sec;
|
||
|
|
$array[$x]['call_length'] = $call_length;
|
||
|
|
|
||
|
|
//send the command
|
||
|
|
if ($field['state'] != '') {
|
||
|
|
if ($fp) {
|
||
|
|
$switch_cmd = 'uuid_dump '.$field['uuid'].' json';
|
||
|
|
$dump_result = event_socket_request($fp, 'api '.$switch_cmd);
|
||
|
|
$dump_array = json_decode($dump_result, true);
|
||
|
|
foreach ($dump_array as $dump_var_name => $dump_var_value) {
|
||
|
|
$array[$x][$dump_var_name] = trim($dump_var_value);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
//increment the row
|
||
|
|
$x++;
|
||
|
|
}
|
||
|
|
|
||
|
|
//reindex array using extension instead of auto-incremented value
|
||
|
|
foreach ($array as $index => $subarray) {
|
||
|
|
foreach ($subarray as $field => $value) {
|
||
|
|
$array[$subarray['extension']][$field] = $array[$index][$field];
|
||
|
|
unset($array[$index][$field]);
|
||
|
|
}
|
||
|
|
unset($array[$subarray['extension']]['extension']);
|
||
|
|
unset($array[$index]);
|
||
|
|
}
|
||
|
|
|
||
|
|
//return array
|
||
|
|
return $array;
|
||
|
|
}
|