mirror of
https://github.com/fusionpbx/fusionpbx.git
synced 2025-12-30 00:53:50 +00:00
Add IVR Menu search to Call Detail Records
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
$apps[$x]['uuid'] = "4a085c51-7635-ff03-f67b-86e834422848";
|
||||
$apps[$x]['category'] = "Switch";
|
||||
$apps[$x]['subcategory'] = "";
|
||||
$apps[$x]['version'] = "1.2";
|
||||
$apps[$x]['version'] = "1.3";
|
||||
$apps[$x]['license'] = "Mozilla Public License 1.1";
|
||||
$apps[$x]['url'] = "http://www.fusionpbx.com";
|
||||
$apps[$x]['description']['en-us'] = "Call Detail Records with all information about the call.";
|
||||
@@ -132,6 +132,9 @@
|
||||
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_search_ring_groups";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_search_ivr_menus";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "xml_cdr_cc_side";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
@@ -835,6 +838,18 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Save who hung up or cancelled the leg.";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "ring_group_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "ivr_menu_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "call_flow";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "jsonb";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
@@ -875,12 +890,6 @@
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "ring_group_uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "uuid";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
|
||||
//xml cdr extensions
|
||||
$y++;
|
||||
|
||||
@@ -4148,3 +4148,30 @@ $text['label-ring_group']['tr-tr'] = "Yüzük Grubu";
|
||||
$text['label-ring_group']['zh-cn'] = "环组";
|
||||
$text['label-ring_group']['ja-jp'] = "リンググループ";
|
||||
$text['label-ring_group']['ko-kr'] = "링 그룹";
|
||||
|
||||
$text['label-ivr_menu']['en-us'] = "IVR Menu";
|
||||
$text['label-ivr_menu']['en-gb'] = "IVR Menu";
|
||||
$text['label-ivr_menu']['ar-eg'] = "قائمة العاج";
|
||||
$text['label-ivr_menu']['de-at'] = "Automatische Vermittlung";
|
||||
$text['label-ivr_menu']['de-ch'] = "Automatische Vermittlung";
|
||||
$text['label-ivr_menu']['de-de'] = "Automatische Vermittlung";
|
||||
$text['label-ivr_menu']['el-gr'] = "Μενού IVR";
|
||||
$text['label-ivr_menu']['es-cl'] = "Menú IVR";
|
||||
$text['label-ivr_menu']['es-mx'] = "Menú IVR";
|
||||
$text['label-ivr_menu']['fr-ca'] = "Menu RVI";
|
||||
$text['label-ivr_menu']['fr-fr'] = "Menu SVI";
|
||||
$text['label-ivr_menu']['he-il'] = "תפריט IVR";
|
||||
$text['label-ivr_menu']['it-it'] = "Menu IVR";
|
||||
$text['label-ivr_menu']['ka-ge'] = "IVR მენიუ";
|
||||
$text['label-ivr_menu']['nl-nl'] = "IVR Menu";
|
||||
$text['label-ivr_menu']['pl-pl'] = "Menu zapowiedzi głosowej (IVR)";
|
||||
$text['label-ivr_menu']['pt-br'] = "Menus de IVR";
|
||||
$text['label-ivr_menu']['pt-pt'] = "Menu de IVR";
|
||||
$text['label-ivr_menu']['ro-ro'] = "Meniul IVR";
|
||||
$text['label-ivr_menu']['ru-ru'] = "Голосовое Меню (IVR)";
|
||||
$text['label-ivr_menu']['sv-se'] = "IVR Meny";
|
||||
$text['label-ivr_menu']['uk-ua'] = "IVR меню";
|
||||
$text['label-ivr_menu']['tr-tr'] = "IVR Menüsü";
|
||||
$text['label-ivr_menu']['zh-cn'] = "IVR 菜单";
|
||||
$text['label-ivr_menu']['ja-jp'] = "IVRメニュー";
|
||||
$text['label-ivr_menu']['ko-kr'] = "IVR 메뉴";
|
||||
|
||||
@@ -231,6 +231,8 @@
|
||||
$this->fields[] = "hangup_cause";
|
||||
$this->fields[] = "hangup_cause_q850";
|
||||
$this->fields[] = "sip_hangup_disposition";
|
||||
$this->fields[] = "ring_group_uuid";
|
||||
$this->fields[] = "ivr_menu_uuid";
|
||||
|
||||
if (!empty($this->settings->get('cdr', 'field'))) {
|
||||
foreach ($this->settings->get('cdr', 'field') as $field) {
|
||||
@@ -657,7 +659,6 @@
|
||||
$caller_id_number = preg_replace('#[^0-9\-\#\*]#', '', $caller_id_number);
|
||||
|
||||
//misc
|
||||
$this->array[$key][0]['ring_group_uuid'] = urldecode($xml->variables->ring_group_uuid);
|
||||
$this->array[$key][0]['xml_cdr_uuid'] = $uuid;
|
||||
$this->array[$key][0]['destination_number'] = $destination_number;
|
||||
$this->array[$key][0]['sip_call_id'] = urldecode($xml->variables->sip_call_id);
|
||||
@@ -674,6 +675,8 @@
|
||||
$this->array[$key][0]['sip_hangup_disposition'] = urldecode($xml->variables->sip_hangup_disposition);
|
||||
$this->array[$key][0]['pin_number'] = urldecode($xml->variables->pin_number);
|
||||
$this->array[$key][0]['status'] = $status;
|
||||
$this->array[$key][0]['ring_group_uuid'] = urldecode($xml->variables->ring_group_uuid);
|
||||
$this->array[$key][0]['ivr_menu_uuid'] = urldecode($xml->variables->ivr_menu_uuid);
|
||||
|
||||
//time
|
||||
//catch invalid call detail records
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
$permission['xml_cdr_domain'] = permission_exists('xml_cdr_domain');
|
||||
$permission['xml_cdr_search_call_center_queues'] = permission_exists('xml_cdr_search_call_center_queues');
|
||||
$permission['xml_cdr_search_ring_groups'] = permission_exists('xml_cdr_search_ring_groups');
|
||||
$permission['xml_cdr_search_ivr_menus'] = permission_exists('xml_cdr_search_ivr_menus');
|
||||
$permission['xml_cdr_statistics'] = permission_exists('xml_cdr_statistics');
|
||||
$permission['xml_cdr_archive'] = permission_exists('xml_cdr_archive');
|
||||
$permission['xml_cdr_all'] = permission_exists('xml_cdr_all');
|
||||
@@ -155,11 +156,22 @@
|
||||
if ($permission['xml_cdr_search_ring_groups']) {
|
||||
$sql = "select ring_group_uuid, ring_group_name, ring_group_extension from v_ring_groups ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and ring_group_enabled = 'true' ";
|
||||
$sql .= "order by ring_group_extension asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$ring_groups = $database->select($sql, $parameters, 'all');
|
||||
}
|
||||
|
||||
//get the ivr menus
|
||||
if ($permission['xml_cdr_search_ivr_menus']) {
|
||||
$sql = "select ivr_menu_uuid, ivr_menu_name, ivr_menu_extension from v_ivr_menus ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and ivr_menu_enabled = 'true' ";
|
||||
$sql .= "order by ivr_menu_extension asc ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$ivr_menus = $database->select($sql, $parameters, 'all');
|
||||
}
|
||||
|
||||
//get the call center queues
|
||||
if ($permission['xml_cdr_search_call_center_queues']) {
|
||||
$sql = "select call_center_queue_uuid, queue_name, queue_extension from v_call_center_queues ";
|
||||
@@ -595,7 +607,7 @@
|
||||
echo " </div>\n";
|
||||
echo " </div>\n";
|
||||
|
||||
if ($permission['xml_cdr_search_call_center_queues']) {
|
||||
if ($permission['xml_cdr_search_call_center_queues'] && is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
echo " <div class='form_set'>\n";
|
||||
echo " <div class='label'>\n";
|
||||
echo " ".$text['label-call_center_queue']."\n";
|
||||
@@ -603,19 +615,17 @@
|
||||
echo " <div class='field'>\n";
|
||||
echo " <select class='formfld' name='call_center_queue_uuid' id='call_center_queue_uuid'>\n";
|
||||
echo " <option value=''></option>";
|
||||
if (is_array($call_center_queues) && @sizeof($call_center_queues) != 0) {
|
||||
foreach ($call_center_queues as $row) {
|
||||
$selected = ($row['call_center_queue_uuid'] == $call_center_queue_uuid) ? "selected" : null;
|
||||
echo " <option value='".escape($row['call_center_queue_uuid'])."' ".escape($selected).">".((is_numeric($row['queue_extension'])) ? escape($row['queue_extension']." (".$row['queue_name'].")") : escape($row['queue_extension'])." (".escape($row['queue_extension']).")")."</option>";
|
||||
}
|
||||
foreach ($call_center_queues as $row) {
|
||||
$selected = ($row['call_center_queue_uuid'] == $call_center_queue_uuid) ? "selected" : null;
|
||||
echo " <option value='".escape($row['call_center_queue_uuid'])."' ".escape($selected).">".((is_numeric($row['queue_extension'])) ? escape($row['queue_extension']." (".$row['queue_name'].")") : escape($row['queue_extension'])." (".escape($row['queue_extension']).")")."</option>";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo " </div>\n";
|
||||
echo " </div>\n";
|
||||
unset($sql, $parameters, $call_center_queues, $row, $selected);
|
||||
unset($call_center_queues, $row, $selected);
|
||||
}
|
||||
|
||||
if ($permission['xml_cdr_search_ring_groups']) {
|
||||
if ($permission['xml_cdr_search_ring_groups'] && is_array($ring_groups) && @sizeof($ring_groups) != 0) {
|
||||
echo " <div class='form_set'>\n";
|
||||
echo " <div class='label'>\n";
|
||||
echo " ".$text['label-ring_group']."\n";
|
||||
@@ -623,19 +633,35 @@
|
||||
echo " <div class='field'>\n";
|
||||
echo " <select class='formfld' name='ring_group_uuid' id='ring_group_uuid'>\n";
|
||||
echo " <option value=''></option>";
|
||||
if (is_array($ring_groups) && @sizeof($ring_groups) != 0) {
|
||||
foreach ($ring_groups as $row) {
|
||||
$selected = ($row['ring_group_uuid'] == $ring_group_uuid) ? "selected" : null;
|
||||
echo " <option value='".escape($row['ring_group_uuid'])."' ".escape($selected).">".((is_numeric($row['ring_group_extension'])) ? escape($row['ring_group_extension']." (".$row['ring_group_name'].")") : escape($row['ring_group_extension'])." (".escape($row['ring_group_extension']).")")."</option>";
|
||||
}
|
||||
foreach ($ring_groups as $row) {
|
||||
$selected = ($row['ring_group_uuid'] == $ring_group_uuid) ? "selected" : null;
|
||||
echo " <option value='".escape($row['ring_group_uuid'])."' ".escape($selected).">".((is_numeric($row['ring_group_extension'])) ? escape($row['ring_group_extension']." (".$row['ring_group_name'].")") : escape($row['ring_group_extension'])." (".escape($row['ring_group_extension']).")")."</option>";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo " </div>\n";
|
||||
echo " </div>\n";
|
||||
unset($sql, $parameters, $ring_groups, $row, $selected);
|
||||
unset($ring_groups, $row, $selected);
|
||||
}
|
||||
}
|
||||
|
||||
if ($permission['xml_cdr_search_ivr_menus'] && is_array($ivr_menus) && @sizeof($ivr_menus) != 0) {
|
||||
echo " <div class='form_set'>\n";
|
||||
echo " <div class='label'>\n";
|
||||
echo " ".$text['label-ivr_menu']."\n";
|
||||
echo " </div>\n";
|
||||
echo " <div class='field'>\n";
|
||||
echo " <select class='formfld' name='ivr_menu_uuid' id='ivr_menu_uuid'>\n";
|
||||
echo " <option value=''></option>";
|
||||
foreach ($ivr_menus as $row) {
|
||||
$selected = ($row['ivr_menu_uuid'] == $ivr_menu_uuid) ? "selected" : null;
|
||||
echo " <option value='".escape($row['ivr_menu_uuid'])."' ".escape($selected).">".((is_numeric($row['ivr_menu_extension'])) ? escape($row['ivr_menu_extension']." (".$row['ivr_menu_name'].")") : escape($row['ivr_menu_extension'])." (".escape($row['ivr_menu_extension']).")")."</option>";
|
||||
}
|
||||
echo " </select>\n";
|
||||
echo " </div>\n";
|
||||
echo " </div>\n";
|
||||
unset($ivr_menus, $row, $selected);
|
||||
}
|
||||
|
||||
echo "</div>\n";
|
||||
|
||||
button::$collapse = false;
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
$permission['xml_cdr_domain'] = permission_exists('xml_cdr_domain');
|
||||
$permission['xml_cdr_search_call_center_queues'] = permission_exists('xml_cdr_search_call_center_queues');
|
||||
$permission['xml_cdr_search_ring_groups'] = permission_exists('xml_cdr_search_ring_groups');
|
||||
$permission['xml_cdr_search_ivr_menus'] = permission_exists('xml_cdr_search_ivr_menus');
|
||||
$permission['xml_cdr_statistics'] = permission_exists('xml_cdr_statistics');
|
||||
$permission['xml_cdr_archive'] = permission_exists('xml_cdr_archive');
|
||||
$permission['xml_cdr_all'] = permission_exists('xml_cdr_all');
|
||||
@@ -142,6 +143,7 @@
|
||||
$cc_side = $_REQUEST["cc_side"] ?? '';
|
||||
$call_center_queue_uuid = $_REQUEST["call_center_queue_uuid"] ?? '';
|
||||
$ring_group_uuid = $_REQUEST["ring_group_uuid"] ?? '';
|
||||
$ivr_menu_uuid = $_REQUEST["ivr_menu_uuid"] ?? '';
|
||||
if (isset($_SESSION['cdr']['field']) && is_array($_SESSION['cdr']['field'])) {
|
||||
foreach ($_SESSION['cdr']['field'] as $field) {
|
||||
$array = explode(",", $field);
|
||||
@@ -617,6 +619,11 @@
|
||||
$sql .= "and ring_group_uuid = :ring_group_uuid \n";
|
||||
$parameters['ring_group_uuid'] = $ring_group_uuid;
|
||||
}
|
||||
//show specific ivr menus
|
||||
if (!empty($ivr_menu_uuid)) {
|
||||
$sql .= "and ivr_menu_uuid = :ivr_menu_uuid \n";
|
||||
$parameters['ivr_menu_uuid'] = $ivr_menu_uuid;
|
||||
}
|
||||
//end where
|
||||
if (!empty($order_by)) {
|
||||
$sql .= order_by($order_by, $order);
|
||||
|
||||
Reference in New Issue
Block a user