From a2d68c8c6f9701376e123ed61c76691ee316e5e3 Mon Sep 17 00:00:00 2001 From: chansizzle <14916599+chansizzle@users.noreply.github.com> Date: Tue, 11 Mar 2025 10:39:07 -0600 Subject: [PATCH] add CDR Details and Call Recording to emergency logs --- app/emergency/emergency.php | 57 +++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/app/emergency/emergency.php b/app/emergency/emergency.php index a8e76ce843..7a68117310 100644 --- a/app/emergency/emergency.php +++ b/app/emergency/emergency.php @@ -30,6 +30,14 @@ $database = new database; $database->app_name = 'emergency_logs'; $database->app_uuid = 'de63b1ae-7750-11ee-b3a5-005056a27559'; +//set permissions for CDR details and call recordings +$permission = array(); +$permission['xml_cdr_hangup_cause'] = permission_exists('xml_cdr_hangup_cause'); +$permission['xml_cdr_status'] = permission_exists('xml_cdr_status'); +$permission['xml_cdr_recording'] = permission_exists('xml_cdr_recording'); +$permission['xml_cdr_recording_play'] = permission_exists('xml_cdr_recording_play'); +$permission['xml_cdr_recording_download'] = permission_exists('xml_cdr_recording_download'); + //process the http post data by action if (!empty($action) && !empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) { @@ -122,7 +130,10 @@ $sql .= "e.event, "; $sql .= "to_char(timezone(:time_zone, e.insert_date), 'DD Mon YYYY') as date_formatted, "; $sql .= "to_char(timezone(:time_zone, e.insert_date), 'HH12:MI:SS am') as time_formatted, "; $sql .= "e.insert_date, "; -$sql .= "c.status as status "; +$sql .= "c.status as status, "; +$sql .= "concat(c.record_path, '/', c.record_name) as recording, "; //temp +$sql .= "c.record_path as call_recording_path, "; +$sql .= "c.record_name as call_recording_name "; $sql .= "from v_emergency_logs e "; $sql .= "left join v_xml_cdr c "; $sql .= "on e.emergency_log_uuid = c.xml_cdr_uuid "; @@ -198,6 +209,12 @@ echo "".$text['label-emergency_time']."\n"; echo "".$text['label-emergency_extension']."\n"; echo "".$text['label-emergency_event']."\n"; echo "".$text['label-emergency_call_status']."\n"; +if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) { + echo "".$text['label-cdr_details']."\n"; +} +if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) { + echo "".$text['label-recording']."\n"; +} echo "\n"; if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) { @@ -211,7 +228,43 @@ if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_l echo " ".escape($row['time_formatted'])."\n"; echo " ".escape($row['extension'])."\n"; echo " ".escape($row['event'])."\n"; - echo " ".escape($row['status'])."\n"; + echo " " . (isset($row['status']) && $row['status'] !== '' ? escape($row['status']) : '') . "\n"; + $domain_name = $_SESSION['domains'][$row['domain_uuid']]['domain_name']; + if ($permission['xml_cdr_status'] || $permission['xml_cdr_hangup_cause']) { + if (!empty($_GET['show']) && $_GET['show'] == 'all' && permission_exists('emergency_logs_view_all')) { + echo " " . (isset($row['status']) && $row['status'] !== '' ? "CDR" : ' ') . "\n"; + } + else { + echo " " . (isset($row['status']) && $row['status'] !== '' ? "CDR" : ' ') . "\n"; + } + } + if (permission_exists('call_recording_play') || permission_exists('call_recording_download')) { + echo " "; + if ($row['recording'] !== '/') { + if (permission_exists('call_recording_play')) { + $recording_file_ext = pathinfo($row['call_recording_name'], PATHINFO_EXTENSION); + switch ($recording_file_ext) { + case "wav" : $recording_type = "audio/wav"; break; + case "mp3" : $recording_type = "audio/mpeg"; break; + case "ogg" : $recording_type = "audio/ogg"; break; + } + echo ""; + echo button::create(['type'=>'button','title'=>$text['label-play'].' / '.$text['label-pause'],'icon'=>$_SESSION['theme']['button_icon_play'],'id'=>'recording_button_'.escape($row['emergency_log_uuid']),'onclick'=>"recording_play('".escape($row['emergency_log_uuid'])."')"]); + } + if (permission_exists('call_recording_download')) { + echo button::create(['type'=>'button','title'=>$text['label-download'],'icon'=>$_SESSION['theme']['button_icon_download'],'link'=>'download.php?id='.urlencode($row['emergency_log_uuid']).'&binary']); + } + } + echo " \n"; + } +// debug: display file directory and filename of the call recording + /* + if ($permission['xml_cdr_recording'] && ($permission['xml_cdr_recording_play'] || $permission['xml_cdr_recording_download'])) { + if ($row['recording'] !== '/') { + echo "" . escape($row['recording']) . "\n"; + } + } + */ echo "\n"; $x++; }