Compare commits
82 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
8cef54bacf | |
|
|
1b2acb1026 | |
|
|
69d9ac0819 | |
|
|
8c94548bfa | |
|
|
52352dec39 | |
|
|
16574221b1 | |
|
|
ce26f227bf | |
|
|
cf005c7671 | |
|
|
c5861e4170 | |
|
|
eb64028bb1 | |
|
|
320f402d18 | |
|
|
14d69d6ca2 | |
|
|
b61f9375ff | |
|
|
93e1987754 | |
|
|
6b2b842314 | |
|
|
17e82ed560 | |
|
|
b0a0fa9ab1 | |
|
|
39b7ca7058 | |
|
|
2262ec7272 | |
|
|
8091252664 | |
|
|
e1cd500d71 | |
|
|
172ed8392c | |
|
|
023f54c9ad | |
|
|
360cf73c79 | |
|
|
bed88ea5d0 | |
|
|
6833705895 | |
|
|
a79a3275d3 | |
|
|
c249e1c1a4 | |
|
|
fc21a1b2d3 | |
|
|
a0392f265e | |
|
|
7244cf5813 | |
|
|
ffcf06b774 | |
|
|
69a9e28081 | |
|
|
18d5f5fc4e | |
|
|
d465e8ab39 | |
|
|
ddc3befd60 | |
|
|
1f79e6dfb9 | |
|
|
2f3486e454 | |
|
|
f45d061ad3 | |
|
|
e6274fb6ac | |
|
|
58a8d35135 | |
|
|
8a1194ec81 | |
|
|
9a122d1c6c | |
|
|
fa7a6a52bc | |
|
|
d05dfc660c | |
|
|
2820185274 | |
|
|
cda2f530a7 | |
|
|
c1e6f3e11d | |
|
|
d7ac495b7e | |
|
|
b9ce1d2edf | |
|
|
84e71af649 | |
|
|
bc6582b908 | |
|
|
4ae3f99589 | |
|
|
9c4e38babc | |
|
|
94e558f7b6 | |
|
|
4a6cc913bf | |
|
|
fd94e585da | |
|
|
b58ebffc07 | |
|
|
fc0d72c5fa | |
|
|
d028b0ca84 | |
|
|
02a2c6c7c8 | |
|
|
ebadf2934d | |
|
|
ee49410edb | |
|
|
859f08fbb2 | |
|
|
3fb475d67d | |
|
|
e2205cb6b6 | |
|
|
a4b054d97a | |
|
|
074d8a87dd | |
|
|
1e18ea3c8f | |
|
|
a6ea0f2d04 | |
|
|
e08b82c160 | |
|
|
2654c50fe8 | |
|
|
0297eb5fad | |
|
|
9f52a2ea2c | |
|
|
01aaebbb1c | |
|
|
bdd0d26324 | |
|
|
e3682cee6c | |
|
|
64fd1a5e54 | |
|
|
d3c05bae43 | |
|
|
441f2dfcf1 | |
|
|
0de12da8fa | |
|
|
e22c972848 |
|
|
@ -430,7 +430,7 @@ if (is_array($activity)) {
|
|||
}
|
||||
|
||||
//build the list of extensions
|
||||
$block = "<div id='".escape($extension)."' class='".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".((!empty($ext_state) && $ext_state != 'active' && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
|
||||
$block = "<div id='".escape($extension)."' class='".$style."' ".(($_GET['vd_ext_from'] == $extension || $_GET['vd_ext_to'] == $extension) ? "style='border-style: dotted;'" : null)." ".(((empty($ext_state) || $ext_state != 'active') && $ext_state != 'ringing') ? "ondrop='drop(event, this.id);' ondragover='allowDrop(event, this.id);' ondragleave='discardDrop(event, this.id);'" : null).">"; // DRAG TO
|
||||
$block .= "<table class='".$style."'>\n";
|
||||
$block .= " <tr>\n";
|
||||
$block .= " <td class='op_ext_icon'>\n";
|
||||
|
|
|
|||
|
|
@ -175,8 +175,8 @@
|
|||
}
|
||||
}
|
||||
|
||||
//if user doesn't have call block all then use the assigned extension_uuid
|
||||
if (!permission_exists('call_block_all')) {
|
||||
//if user doesn't have call block extension then use the assigned extension_uuid
|
||||
if (!permission_exists('call_block_extension')) {
|
||||
$extension_uuid = $_SESSION['user']['extension'][0]['extension_uuid'];
|
||||
}
|
||||
|
||||
|
|
@ -422,7 +422,7 @@ if (permission_exists('call_block_all') || permission_exists('call_block_ring_gr
|
|||
echo "</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (permission_exists('call_block_all')) {
|
||||
if (permission_exists('call_block_extension')) {
|
||||
echo "<tr>\n";
|
||||
echo "<td width='30%' class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
|
||||
echo " ".$text['label-extension']."\n";
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@
|
|||
}
|
||||
|
||||
//method 1
|
||||
$response = trim(event_socket::command($cmd));
|
||||
$response = event_socket::command($cmd);
|
||||
|
||||
//method 2
|
||||
//cmd_async($_SESSION['switch']['bin']['dir']."/fs_cli -x \"".$cmd."\";");
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2024
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
|
@ -55,18 +55,20 @@
|
|||
//get http post variables and set them to php variables
|
||||
if (!empty($_POST)) {
|
||||
|
||||
//set the variables
|
||||
$attachment = $_FILES['attachment'];
|
||||
$attachment_primary = $_POST['attachment_primary'];
|
||||
$attachment_description = $_POST['attachment_description'];
|
||||
|
||||
//validate the token
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: contacts.php');
|
||||
exit;
|
||||
}
|
||||
$token = new token;
|
||||
if (!$token->validate($_SERVER['PHP_SELF'])) {
|
||||
message::add($text['message-invalid_token'],'negative');
|
||||
header('Location: contacts.php');
|
||||
exit;
|
||||
}
|
||||
|
||||
//get the attachment type
|
||||
if (empty($attachment) || sizeof($attachment) == 0) {
|
||||
$attachment_type = strtolower(pathinfo($_POST['attachment_filename'], PATHINFO_EXTENSION));
|
||||
}
|
||||
|
|
@ -75,48 +77,82 @@
|
|||
}
|
||||
|
||||
//unflag others as primary
|
||||
$allowed_primary_attachment = false;
|
||||
if ($attachment_primary && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
|
||||
$sql = "update v_contact_attachments set attachment_primary = 0 ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and contact_uuid = :contact_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['contact_uuid'] = $contact_uuid;
|
||||
$database = new database;
|
||||
$database->execute($sql, $parameters ?? null);
|
||||
unset($sql, $parameters);
|
||||
$allowed_primary_attachment = false;
|
||||
if ($attachment_primary && ($attachment_type == 'jpg' || $attachment_type == 'jpeg' || $attachment_type == 'gif' || $attachment_type == 'png')) {
|
||||
$sql = "update v_contact_attachments set attachment_primary = 0 ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and contact_uuid = :contact_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['contact_uuid'] = $contact_uuid;
|
||||
$database = new database;
|
||||
$database->execute($sql, $parameters ?? null);
|
||||
unset($sql, $parameters);
|
||||
|
||||
$allowed_primary_attachment = true;
|
||||
}
|
||||
$allowed_primary_attachment = true;
|
||||
}
|
||||
|
||||
//format array
|
||||
$allowed_extensions = array_keys(json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true));
|
||||
$array['contact_attachments'][0]['contact_attachment_uuid'] = $action == 'update' ? $contact_attachment_uuid : uuid();
|
||||
$array['contact_attachments'][0]['domain_uuid'] = $_SESSION['domain_uuid'] ?? '';
|
||||
$array['contact_attachments'][0]['contact_uuid'] = $contact_uuid;
|
||||
$array['contact_attachments'][0]['attachment_primary'] = $allowed_primary_attachment ? 1 : 0;
|
||||
if ($attachment['error'] == '0' && in_array(strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION)), $allowed_extensions)) {
|
||||
$array['contact_attachments'][0]['attachment_filename'] = $attachment['name'];
|
||||
$array['contact_attachments'][0]['attachment_content'] = base64_encode(file_get_contents($attachment['tmp_name']));
|
||||
}
|
||||
$array['contact_attachments'][0]['attachment_description'] = $attachment_description;
|
||||
if ($action == 'add') {
|
||||
$array['contact_attachments'][0]['attachment_uploaded_date'] = 'now()';
|
||||
$array['contact_attachments'][0]['attachment_uploaded_user_uuid'] = $_SESSION['user_uuid'];
|
||||
//get the allowed extensions
|
||||
$allowed_extensions = array_keys(json_decode($_SESSION['contact']['allowed_attachment_types']['text'], true));
|
||||
|
||||
//get the attachment extension
|
||||
$attachment_extension = strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION));
|
||||
|
||||
//check the allowed extensions
|
||||
if ($attachment['error'] == '0' && in_array($attachment_extension, $allowed_extensions)) {
|
||||
//get the attachment content
|
||||
$attachment_content = file_get_contents($attachment['tmp_name']);
|
||||
|
||||
//list of image extensions
|
||||
$image_extensions = array('png','jpg','jpeg','gif','bmp', 'webp');
|
||||
|
||||
//read the image from the string then output the image without meta data
|
||||
if (in_array($attachment_extension, $image_extensions)) {
|
||||
//create the image object from the content string
|
||||
$image = imagecreatefromstring($attachment_content);
|
||||
|
||||
//start output buffering to capture the image data
|
||||
ob_start();
|
||||
|
||||
//output the image without the EXIF data
|
||||
imagepng($image);
|
||||
|
||||
//get the image from the buffer
|
||||
$attachment_content = ob_get_contents();
|
||||
|
||||
//end the buffering
|
||||
ob_end_clean();
|
||||
|
||||
//free up the memory
|
||||
imagedestroy($image);
|
||||
}
|
||||
}
|
||||
|
||||
//prepare the array
|
||||
$array['contact_attachments'][0]['contact_attachment_uuid'] = $action == 'update' ? $contact_attachment_uuid : uuid();
|
||||
$array['contact_attachments'][0]['domain_uuid'] = $_SESSION['domain_uuid'] ?? '';
|
||||
$array['contact_attachments'][0]['contact_uuid'] = $contact_uuid;
|
||||
$array['contact_attachments'][0]['attachment_primary'] = $allowed_primary_attachment ? 1 : 0;
|
||||
if ($attachment['error'] == '0' && in_array(strtolower(pathinfo($attachment['name'], PATHINFO_EXTENSION)), $allowed_extensions)) {
|
||||
$array['contact_attachments'][0]['attachment_filename'] = $attachment['name'];
|
||||
$array['contact_attachments'][0]['attachment_content'] = base64_encode($attachment_content);
|
||||
}
|
||||
$array['contact_attachments'][0]['attachment_description'] = $attachment_description;
|
||||
if ($action == 'add') {
|
||||
$array['contact_attachments'][0]['attachment_uploaded_date'] = 'now()';
|
||||
$array['contact_attachments'][0]['attachment_uploaded_user_uuid'] = $_SESSION['user_uuid'];
|
||||
}
|
||||
|
||||
//save data
|
||||
$database = new database;
|
||||
$database->app_name = 'contacts';
|
||||
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
$database = new database;
|
||||
$database->app_name = 'contacts';
|
||||
$database->app_uuid = '04481e0e-a478-c559-adad-52bd4174574c';
|
||||
$database->save($array);
|
||||
unset($array);
|
||||
|
||||
//redirect
|
||||
message::add($text['message-'.($action == 'update' ? 'update' : 'uploaded')]);
|
||||
header('Location: contact_edit.php?id='.$contact_uuid);
|
||||
exit;
|
||||
|
||||
message::add($text['message-'.($action == 'update' ? 'update' : 'uploaded')]);
|
||||
header('Location: contact_edit.php?id='.$contact_uuid);
|
||||
exit;
|
||||
}
|
||||
|
||||
//get form data
|
||||
|
|
@ -240,4 +276,4 @@
|
|||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2017 - 2022
|
||||
Portions created by the Initial Developer are Copyright (C) 2017 - 2023
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
|
@ -462,13 +462,10 @@ if (!class_exists('destinations')) {
|
|||
<?php
|
||||
|
||||
//get the destinations
|
||||
$destination = new destinations;
|
||||
if (!isset($_SESSION['destinations'][$this->domain_uuid]['array'][$destination_type])) {
|
||||
$_SESSION['destinations'][$this->domain_uuid]['array'][$destination_type] = $destination->get($destination_type);
|
||||
}
|
||||
$destinations = $this->get($destination_type);
|
||||
|
||||
//get the destination label
|
||||
foreach($_SESSION['destinations'][$this->domain_uuid]['array'][$destination_type] as $key => $value) {
|
||||
foreach($destinations as $key => $value) {
|
||||
foreach($value as $k => $row) {
|
||||
if ($destination_value == $row['destination']) {
|
||||
$destination_key = $key;
|
||||
|
|
@ -484,7 +481,7 @@ if (!class_exists('destinations')) {
|
|||
//build the destination select list in html
|
||||
$response .= " <select id='{$destination_id}_type' class='formfld' style='".$select_style."' onchange=\"get_destinations('".$destination_id."', '".$destination_type."', this.value);\">\n";
|
||||
$response .= " <option value=''></option>\n";
|
||||
foreach($_SESSION['destinations'][$this->domain_uuid]['array'][$destination_type] as $key => $value) {
|
||||
foreach($destinations as $key => $value) {
|
||||
$singular = $this->singular($key);
|
||||
if (permission_exists("{$singular}_destinations")) {
|
||||
//determine if selected
|
||||
|
|
@ -505,7 +502,7 @@ if (!class_exists('destinations')) {
|
|||
}
|
||||
$response .= " </select>\n";
|
||||
$response .= " <select id='".$destination_id."' name='".$destination_name."' class='formfld' style='".$select_style." min-width: 200px;'>\n";
|
||||
foreach($_SESSION['destinations'][$this->domain_uuid]['array'][$destination_type] as $key => $value) {
|
||||
foreach($destinations as $key => $value) {
|
||||
if (isset($destination_key) && $key == $destination_key) {
|
||||
foreach($value as $k => $row) {
|
||||
$selected = ($row['destination'] == $destination_value) ? "selected='selected'" : '';
|
||||
|
|
@ -547,6 +544,9 @@ if (!class_exists('destinations')) {
|
|||
//set the global variables
|
||||
global $db_type;
|
||||
|
||||
//connect to the database
|
||||
$database = new database;
|
||||
|
||||
//set default values
|
||||
$destination_name = '';
|
||||
$destination_id = '';
|
||||
|
|
@ -555,7 +555,6 @@ if (!class_exists('destinations')) {
|
|||
$sql = "select domain_name from v_domains ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $this->domain_uuid;
|
||||
$database = new database;
|
||||
$this->domain_name = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//get the destinations
|
||||
|
|
@ -566,10 +565,10 @@ if (!class_exists('destinations')) {
|
|||
$x = 0;
|
||||
foreach ($config_list as &$config_path) {
|
||||
try {
|
||||
include($config_path);
|
||||
include($config_path);
|
||||
}
|
||||
catch (Exception $e) {
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
}
|
||||
$x++;
|
||||
}
|
||||
|
|
@ -620,7 +619,6 @@ if (!class_exists('destinations')) {
|
|||
}
|
||||
$sql .= "order by ".trim($row['order_by']);
|
||||
$sql = str_replace("\${domain_uuid}", $this->domain_uuid, $sql);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, null, 'all');
|
||||
|
||||
$this->destinations[$x]['result']['sql'] = $sql;
|
||||
|
|
@ -760,11 +758,13 @@ if (!class_exists('destinations')) {
|
|||
//set the global variables
|
||||
global $db_type;
|
||||
|
||||
//connect to the database
|
||||
$database = new database;
|
||||
|
||||
//get the domain_name
|
||||
$sql = "select domain_name from v_domains ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $this->domain_uuid;
|
||||
$database = new database;
|
||||
$this->domain_name = $database->select($sql, $parameters, 'column');
|
||||
|
||||
//get the destinations
|
||||
|
|
@ -830,7 +830,6 @@ if (!class_exists('destinations')) {
|
|||
}
|
||||
$sql .= "order by ".trim($row['order_by']);
|
||||
$sql = str_replace("\${domain_uuid}", $this->domain_uuid, $sql);
|
||||
$database = new database;
|
||||
$result = $database->select($sql, null, 'all');
|
||||
|
||||
$this->destinations[$x]['result']['sql'] = $sql;
|
||||
|
|
@ -892,7 +891,7 @@ if (!class_exists('destinations')) {
|
|||
$text2 = $language2->get($_SESSION['domain']['language']['code'], 'app/'.$name);
|
||||
}
|
||||
|
||||
if (isset($row['result']) && is_array($row['result']['data']) && !empty($row['select_value'][$destination_type])) {
|
||||
if (isset($row['result']) && isset($row['result']['data'][0]) && !empty($row['select_value'][$destination_type])) {
|
||||
$label2 = $label;
|
||||
foreach ($row['result']['data'] as $data) {
|
||||
$select_value = $row['select_value'][$destination_type];
|
||||
|
|
@ -916,7 +915,6 @@ if (!class_exists('destinations')) {
|
|||
$select_label = str_replace("\${".$key."}", $data[$k], $select_label);
|
||||
}
|
||||
else {
|
||||
$label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
}
|
||||
}
|
||||
|
|
@ -928,7 +926,6 @@ if (!class_exists('destinations')) {
|
|||
$select_label = str_replace("\${".$key."}", ($data[$key] ?? ''), $select_label);
|
||||
}
|
||||
else {
|
||||
// $label = $data['label'];
|
||||
$select_label = str_replace("\${".$key."}", $text2['option-'.$label], $select_label);
|
||||
}
|
||||
}
|
||||
|
|
@ -966,9 +963,18 @@ if (!class_exists('destinations')) {
|
|||
|
||||
$i++;
|
||||
}
|
||||
|
||||
unset($text);
|
||||
}
|
||||
//else {
|
||||
// //add all main destination categories to the array
|
||||
// if (!empty($row['select_value']) && !empty($row['select_value'][$destination_type])) {
|
||||
// //add to the destination array if a matching destination type is found
|
||||
// $array[$name] = [];
|
||||
// }
|
||||
// else {
|
||||
// $array[$name] = [];
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
if (!$selected) {
|
||||
|
|
|
|||
|
|
@ -851,7 +851,7 @@
|
|||
$template = file_get_contents('/var/www/fusionpbx/resources/templates/provision/'.$device_template.'/template.csv');
|
||||
}
|
||||
if (!empty($template)) {
|
||||
$template = str_replace('{$server_address}', $outbound_proxy_primary, $template);
|
||||
$template = str_replace('{$server_address}', $row['server_address'], $template);
|
||||
$template = str_replace('{$user_id}', $row['user_id'], $template);
|
||||
$template = str_replace('{$password}', str_replace(';',';;',$row['password']), $template);
|
||||
$template = str_replace('{$display_name}', ($row['display_name'] ?? $row['user_id']), $template);
|
||||
|
|
@ -1239,7 +1239,7 @@
|
|||
if (empty($row['server_address'])) { $row['server_address'] = $_SESSION['domain_name']; }
|
||||
}
|
||||
if (empty($row['sip_transport'])) { $row['sip_transport'] = $_SESSION['provision']['line_sip_transport']['text']; }
|
||||
if (empty($row['sip_port'])) { $row['sip_port'] = $_SESSION['provision']['line_sip_port']['numeric']; }
|
||||
if (!isset($row['sip_port'])) { $row['sip_port'] = $_SESSION['provision']['line_sip_port']['numeric']; } //used !isset to support a value of 0 as empty the empty function considers a value of 0 as empty.
|
||||
if (empty($row['register_expires'])) { $row['register_expires'] = $_SESSION['provision']['line_register_expires']['numeric']; }
|
||||
|
||||
//add the primary key uuid
|
||||
|
|
|
|||
|
|
@ -613,7 +613,6 @@
|
|||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set';
|
||||
if ($dialplan_expression == '(^911$|^933$)') {
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_number=${emergency_caller_id_number}';
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'call_date=${strftime(%d-%b-%Y %r)}';
|
||||
}
|
||||
else {
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'effective_caller_id_number=${outbound_caller_id_number}';
|
||||
|
|
@ -623,6 +622,16 @@
|
|||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'true';
|
||||
|
||||
if ($dialplan_expression == '(^911$|^933$)') {
|
||||
$y++;
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid();
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_uuid'] = $dialplan_uuid;
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_tag'] = 'action';
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_type'] = 'set';
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_data'] = 'call_date=${strftime(%d-%b-%Y %r)}';
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_order'] = $y * 10;
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_group'] = '0';
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_enabled'] = 'false';
|
||||
$y++;
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['dialplan_detail_uuid'] = uuid();
|
||||
$array['dialplans'][$x]['dialplan_details'][$y]['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<extension name="extension-to-voicemail" number="[ext]" context="global" continue="false" app_uuid="8a2e7b81-996c-4d6b-87df-b879b972a572" global="true" order="310">
|
||||
<condition field="${user_exists}" expression="^true$" />
|
||||
<condition field="username" expression="^${caller_id_number}$" />
|
||||
<condition field="destination_number" expression="^${caller_id_number}$">
|
||||
<condition field="username" expression="^\Q${caller_id_number}\E$" />
|
||||
<condition field="destination_number" expression="^\Q${caller_id_number}\E$">
|
||||
<action application="answer"/>
|
||||
<action application="sleep" data="1000"/>
|
||||
<action application="set" data="record_append=false"/>
|
||||
|
|
|
|||
|
|
@ -19,78 +19,77 @@
|
|||
$apps[$x]['description']['pt-pt'] = '';
|
||||
$apps[$x]['description']['pt-br'] = '';
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "emergency_logs_view";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "23a6fc8a-77f1-11ee-88b0-005056a27559";
|
||||
//default settings
|
||||
$y=0;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "9317ddfd-6cb1-4294-9c57-4061dde66fe4";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "dialplan";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "emergency_email_address";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Email address used to send emergency call notifications.";
|
||||
|
||||
//permission details
|
||||
$y=0;
|
||||
$apps[$x]['permissions'][$y]['name'] = "emergency_logs_view";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['menu']['uuid'] = "23a6fc8a-77f1-11ee-88b0-005056a27559";
|
||||
$y++;
|
||||
$apps[$x]['permissions'][$y]['name'] = "emergency_logs_view_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$apps[$x]['permissions'][$y]['name'] = "emergency_logs_view_all";
|
||||
$apps[$x]['permissions'][$y]['groups'][] = "superadmin";
|
||||
$y++;
|
||||
|
||||
//schema details
|
||||
$z=0;
|
||||
$apps[$x]['db'][$y]['table']['name'] = "v_emergency_logs";
|
||||
$apps[$x]['db'][$y]['table']['parent'] = "";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'log_uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'emergency_log_uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'uuid';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['type'] = 'primary';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'domain_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]['key']['type'] = 'foreign';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = 'v_domains';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'domain_uuid';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'time';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'text';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description'] = '';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'domain_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]['key']['type'] = 'foreign';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['table'] = 'v_domains';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['key']['reference']['field'] = 'domain_uuid';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'extension';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'numeric';
|
||||
$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]['type']['mysql'] = "char(36)";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = 'event';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "text";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description'] = '';
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$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'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$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'] = "";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "insert_user";
|
||||
$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'] = "update_date";
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['pgsql'] = 'timestamptz';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['sqlite'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = 'date';
|
||||
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "";
|
||||
$z++;
|
||||
$apps[$x]['db'][$y]['fields'][$z]['name'] = "update_user";
|
||||
$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'] = "";
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,133 @@
|
|||
<?php
|
||||
|
||||
$text['title-emergency_logs']['en-us'] = "Emergency Logs";
|
||||
$text['title-emergency_logs']['en-gb'] = "Emergency Logs";
|
||||
$text['title-emergency_logs']['ar-eg'] = "سجلات الطوارئ";
|
||||
$text['title-emergency_logs']['de-at'] = "Notfall-Protokolle";
|
||||
$text['title-emergency_logs']['de-ch'] = "Notfall-Protokolle";
|
||||
$text['title-emergency_logs']['de-de'] = "Notfall-Protokolle";
|
||||
$text['title-emergency_logs']['el-gr'] = "Μητρώα Έκτακτης Ανάγκης";
|
||||
$text['title-emergency_logs']['es-cl'] = "Registros de emergencia";
|
||||
$text['title-emergency_logs']['es-mx'] = "Registros de emergencia";
|
||||
$text['title-emergency_logs']['fr-ca'] = "Journaux d'urgence";
|
||||
$text['title-emergency_logs']['fr-fr'] = "Journaux d'urgence";
|
||||
$text['title-emergency_logs']['he-il'] = "יומני חירום";
|
||||
$text['title-emergency_logs']['it-it'] = "Registri di emergenza";
|
||||
$text['title-emergency_logs']['nl-nl'] = "Noodlogboeken";
|
||||
$text['title-emergency_logs']['pl-pl'] = "Dzienniki awaryjne";
|
||||
$text['title-emergency_logs']['pt-br'] = "Registros de emergência";
|
||||
$text['title-emergency_logs']['pt-pt'] = "Registros de emergência";
|
||||
$text['title-emergency_logs']['ro-ro'] = "Jurnalele de urgență";
|
||||
$text['title-emergency_logs']['ru-ru'] = "Журналы аварийных ситуаций";
|
||||
$text['title-emergency_logs']['sv-se'] = "Nödloggar";
|
||||
$text['title-emergency_logs']['uk-ua'] = "Журнали надзвичайних ситуацій";
|
||||
$text['title-emergency_logs']['tr-tr'] = "Acil Durum Günlükleri";
|
||||
$text['title-emergency_logs']['zh-cn'] = "紧急日志";
|
||||
$text['title-emergency_logs']['ja-jp'] = "緊急ログ";
|
||||
$text['title-emergency_logs']['ko-kr'] = "비상 기록";
|
||||
|
||||
$text['label-emergency_time']['en-us'] = "Time";
|
||||
$text['label-emergency_time']['en-gb'] = "Time";
|
||||
$text['label-emergency_time']['ar-eg'] = "وقت";
|
||||
$text['label-emergency_time']['de-at'] = "Zeitpunkt";
|
||||
$text['label-emergency_time']['de-ch'] = "Zeitpunkt";
|
||||
$text['label-emergency_time']['de-de'] = "Zeitpunkt";
|
||||
$text['label-emergency_time']['el-gr'] = "χρόνος";
|
||||
$text['label-emergency_time']['es-cl'] = "Tiempo";
|
||||
$text['label-emergency_time']['es-mx'] = "Tiempo";
|
||||
$text['label-emergency_time']['fr-ca'] = "Temps";
|
||||
$text['label-emergency_time']['fr-fr'] = "Temps";
|
||||
$text['label-emergency_time']['he-il'] = "זְמַן";
|
||||
$text['label-emergency_time']['it-it'] = "Tempo";
|
||||
$text['label-emergency_time']['nl-nl'] = "Tijd";
|
||||
$text['label-emergency_time']['pl-pl'] = "Czas";
|
||||
$text['label-emergency_time']['pt-br'] = "Tempo";
|
||||
$text['label-emergency_time']['pt-pt'] = "Tempo";
|
||||
$text['label-emergency_time']['ro-ro'] = "Timp";
|
||||
$text['label-emergency_time']['ru-ru'] = "Время";
|
||||
$text['label-emergency_time']['sv-se'] = "Tid";
|
||||
$text['label-emergency_time']['uk-ua'] = "час";
|
||||
$text['label-emergency_time']['tr-tr'] = "Zaman";
|
||||
$text['label-emergency_time']['zh-cn'] = "时间";
|
||||
$text['label-emergency_time']['ja-jp'] = "時間";
|
||||
$text['label-emergency_time']['ko-kr'] = "시간";
|
||||
|
||||
$text['label-emergency_date']['en-us'] = "Date";
|
||||
$text['label-emergency_date']['en-gb'] = "Date";
|
||||
$text['label-emergency_date']['ar-eg'] = "تاريخ";
|
||||
$text['label-emergency_date']['de-at'] = "Datum";
|
||||
$text['label-emergency_date']['de-ch'] = "Datum";
|
||||
$text['label-emergency_date']['de-de'] = "Datum";
|
||||
$text['label-emergency_date']['el-gr'] = "Date";
|
||||
$text['label-emergency_date']['es-cl'] = "Fecha";
|
||||
$text['label-emergency_date']['es-mx'] = "Fecha";
|
||||
$text['label-emergency_date']['fr-ca'] = "Date";
|
||||
$text['label-emergency_date']['fr-fr'] = "Date";
|
||||
$text['label-emergency_date']['he-il'] = "תַאֲרִיך";
|
||||
$text['label-emergency_date']['it-it'] = "Data";
|
||||
$text['label-emergency_date']['nl-nl'] = "Datum";
|
||||
$text['label-emergency_date']['pl-pl'] = "Data";
|
||||
$text['label-emergency_date']['pt-br'] = "Data";
|
||||
$text['label-emergency_date']['pt-pt'] = "Data";
|
||||
$text['label-emergency_date']['ro-ro'] = "Data";
|
||||
$text['label-emergency_date']['ru-ru'] = "Дата";
|
||||
$text['label-emergency_date']['sv-se'] = "Datum";
|
||||
$text['label-emergency_date']['uk-ua'] = "Дата";
|
||||
$text['label-emergency_date']['tr-tr'] = "Tarih";
|
||||
$text['label-emergency_date']['zh-cn'] = "日期";
|
||||
$text['label-emergency_date']['ja-jp'] = "日付";
|
||||
$text['label-emergency_date']['ko-kr'] = "날짜";
|
||||
|
||||
$text['label-emergency_extension']['en-us'] = "Extension";
|
||||
$text['label-emergency_extension']['en-gb'] = "Extension";
|
||||
$text['label-emergency_extension']['ar-eg'] = "امتداد";
|
||||
$text['label-emergency_extension']['de-at'] = "Nebenstelle";
|
||||
$text['label-emergency_extension']['de-ch'] = "Nebenstelle";
|
||||
$text['label-emergency_extension']['de-de'] = "Nebenstelle";
|
||||
$text['label-emergency_extension']['el-gr'] = "Επέκταση";
|
||||
$text['label-emergency_extension']['es-cl'] = "Extensión";
|
||||
$text['label-emergency_extension']['es-mx'] = "Extensión";
|
||||
$text['label-emergency_extension']['fr-ca'] = "Extension";
|
||||
$text['label-emergency_extension']['fr-fr'] = "Extension";
|
||||
$text['label-emergency_extension']['he-il'] = "סיומת";
|
||||
$text['label-emergency_extension']['it-it'] = "Estensione";
|
||||
$text['label-emergency_extension']['nl-nl'] = "Verlenging";
|
||||
$text['label-emergency_extension']['pl-pl'] = "Rozszerzenie";
|
||||
$text['label-emergency_extension']['pt-br'] = "Extensão";
|
||||
$text['label-emergency_extension']['pt-pt'] = "Extensão";
|
||||
$text['label-emergency_extension']['ro-ro'] = "Extensie";
|
||||
$text['label-emergency_extension']['ru-ru'] = "Расширение";
|
||||
$text['label-emergency_extension']['sv-se'] = "Förlängning";
|
||||
$text['label-emergency_extension']['uk-ua'] = "Розширення";
|
||||
$text['label-emergency_extension']['tr-tr'] = "Eklenti";
|
||||
$text['label-emergency_extension']['zh-cn'] = "扩大";
|
||||
$text['label-emergency_extension']['ja-jp'] = "拡大";
|
||||
$text['label-emergency_extension']['ko-kr'] = "확대";
|
||||
|
||||
$text['label-emergency_event']['en-us'] = "Event";
|
||||
$text['label-emergency_event']['en-gb'] = "Event";
|
||||
$text['label-emergency_event']['ar-eg'] = "حدث";
|
||||
$text['label-emergency_event']['de-at'] = "Ereignis";
|
||||
$text['label-emergency_event']['de-ch'] = "Ereignis";
|
||||
$text['label-emergency_event']['de-de'] = "Ereignis";
|
||||
$text['label-emergency_event']['el-gr'] = "Εκδήλωση";
|
||||
$text['label-emergency_event']['es-cl'] = "Evento";
|
||||
$text['label-emergency_event']['es-mx'] = "Evento";
|
||||
$text['label-emergency_event']['fr-ca'] = "Événement";
|
||||
$text['label-emergency_event']['fr-fr'] = "Événement";
|
||||
$text['label-emergency_event']['he-il'] = "מִקרֶה";
|
||||
$text['label-emergency_event']['it-it'] = "Evento";
|
||||
$text['label-emergency_event']['nl-nl'] = "Evenement";
|
||||
$text['label-emergency_event']['pl-pl'] = "Wydarzenie";
|
||||
$text['label-emergency_event']['pt-br'] = "Evento";
|
||||
$text['label-emergency_event']['pt-pt'] = "Evento";
|
||||
$text['label-emergency_event']['ro-ro'] = "Eveniment";
|
||||
$text['label-emergency_event']['ru-ru'] = "Событие";
|
||||
$text['label-emergency_event']['sv-se'] = "Händelse";
|
||||
$text['label-emergency_event']['uk-ua'] = "Подія";
|
||||
$text['label-emergency_event']['tr-tr'] = "Etkinlik";
|
||||
$text['label-emergency_event']['zh-cn'] = "事件";
|
||||
$text['label-emergency_event']['ja-jp'] = "イベント";
|
||||
$text['label-emergency_event']['ko-kr'] = "이벤트";
|
||||
|
||||
?>
|
||||
|
|
@ -78,9 +78,8 @@ if (!empty($_GET["show"])) {
|
|||
$show = $_GET["show"];
|
||||
}
|
||||
|
||||
|
||||
//get the count
|
||||
$sql = "select count(log_uuid) ";
|
||||
$sql = "select count(emergency_log_uuid) ";
|
||||
$sql .= "from v_emergency_logs ";
|
||||
if ($show == 'all') {
|
||||
$sql .= "where true ";
|
||||
|
|
@ -117,7 +116,13 @@ else {
|
|||
}
|
||||
|
||||
//get the list
|
||||
$sql = "select * ";
|
||||
$sql = "select emergency_log_uuid, ";
|
||||
$sql .= "domain_uuid, ";
|
||||
$sql .= "extension, ";
|
||||
$sql .= "event, ";
|
||||
$sql .= "to_char(timezone(:time_zone, insert_date), 'DD Mon YYYY') as date_formatted, ";
|
||||
$sql .= "to_char(timezone(:time_zone, insert_date), 'HH12:MI:SS am') as time_formatted, ";
|
||||
$sql .= "insert_date ";
|
||||
$sql .= "from v_emergency_logs ";
|
||||
if ($show == 'all') {
|
||||
$sql .= "where true ";
|
||||
|
|
@ -132,8 +137,9 @@ if (!empty($search)) {
|
|||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
}
|
||||
$sql .= "order by insert_date desc ";
|
||||
$sql .= limit_offset($rows_per_page, $offset);
|
||||
|
||||
$parameters['time_zone'] = $time_zone;
|
||||
$database = new database;
|
||||
$emergency_logs = $database->select($sql, $parameters ?? null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
|
@ -143,12 +149,12 @@ $object = new token;
|
|||
$token = $object->create($_SERVER['PHP_SELF']);
|
||||
|
||||
//additional includes
|
||||
$document['title'] = 'Emergency Logs';
|
||||
$document['title'] = $text['title-emergency_logs'];
|
||||
require_once "resources/header.php";
|
||||
|
||||
//show the content
|
||||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>Emergency Logs (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='heading'><b>".$text['title-emergency_logs']." (".$num_rows.")</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
if ($emergency_logs) {
|
||||
echo button::create(['type'=>'button','label'=>$text['button-delete'],'icon'=>$_SESSION['theme']['button_icon_delete'],'id'=>'btn_delete','name'=>'btn_delete','style'=>'display:none;','onclick'=>"modal_open('modal-delete','btn_delete');"]);
|
||||
|
|
@ -181,18 +187,18 @@ echo "<br /><br />\n";
|
|||
|
||||
echo "<table class='list'>\n";
|
||||
echo "<tr class='list-header'>\n";
|
||||
echo "<th class='left'>Time</th>\n";
|
||||
echo "<th class='left'>Date</th>\n";
|
||||
echo "<th class='left'>Extension</th>\n";
|
||||
echo "<th class='left'>Event</th>\n";
|
||||
echo "<th class='left'>".$text['label-emergency_time']."</th>\n";
|
||||
echo "<th class='left'>".$text['label-emergency_date']."</th>\n";
|
||||
echo "<th class='left'>".$text['label-emergency_extension']."</th>\n";
|
||||
echo "<th class='left'>".$text['label-emergency_event']."</th>\n";
|
||||
echo "</tr>\n";
|
||||
|
||||
if (!empty($emergency_logs) && is_array($emergency_logs) && @sizeof($emergency_logs) != 0) {
|
||||
$x = 0;
|
||||
foreach ($emergency_logs as $row) {
|
||||
echo "<tr class='list-row'>\n";
|
||||
echo " <td>".escape($row['time'])."</td>\n";
|
||||
echo " <td>".escape($row['date'])."</td>\n";
|
||||
echo " <td>".escape($row['time_formatted'])."</td>\n";
|
||||
echo " <td>".escape($row['date_formatted'])."</td>\n";
|
||||
echo " <td>".escape($row['extension'])."</td>\n";
|
||||
echo " <td>".escape($row['event'])."</td>\n";
|
||||
echo "</tr>\n";
|
||||
|
|
@ -210,4 +216,4 @@ echo "</form>\n";
|
|||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
@ -473,6 +473,7 @@ if (!function_exists('fax_split_dtmf')) {
|
|||
|
||||
//field labels
|
||||
$pdf->SetFont($pdf_font, "B", 12);
|
||||
$pdf->Text($x + 0.5, $y + 1.7, strtoupper($text['label-fax_date']).":");
|
||||
if ($fax_recipient != '' || sizeof($fax_numbers) > 0) {
|
||||
$pdf->Text($x + 0.5, $y + 2.0, strtoupper($text['label-fax-recipient']).":");
|
||||
}
|
||||
|
|
@ -488,6 +489,8 @@ if (!function_exists('fax_split_dtmf')) {
|
|||
|
||||
//field values
|
||||
$pdf->SetFont($pdf_font, "", 12);
|
||||
$pdf->SetXY($x + 2.0, $y + 1.65);
|
||||
$pdf->Write(0.3, date("F j, Y g:i A"));
|
||||
$pdf->SetXY($x + 2.0, $y + 1.95);
|
||||
if ($fax_recipient != '') {
|
||||
$pdf->Write(0.3, $fax_recipient);
|
||||
|
|
|
|||
|
|
@ -98,43 +98,42 @@
|
|||
//get the count
|
||||
$sql = "select count(fax_queue_uuid) ";
|
||||
$sql .= "from v_fax_queue as q ";
|
||||
$sql .= "LEFT JOIN v_users AS u ON q.insert_user = u.user_uuid ";
|
||||
if (!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('fax_queue_all')) {
|
||||
//show faxes for all domains
|
||||
$sql .= "where true ";
|
||||
// show faxes for all domains
|
||||
$sql .= "WHERE true ";
|
||||
}
|
||||
elseif (permission_exists('fax_queue_domain')) {
|
||||
//show faxes for one domain
|
||||
$sql .= "where q.domain_uuid = :domain_uuid ";
|
||||
// show faxes for one domain
|
||||
$sql .= "WHERE q.domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
}
|
||||
else {
|
||||
//show only assigned fax extensions
|
||||
$sql = trim($sql);
|
||||
$sql .= "from v_fax_queue as q, v_domains as d, v_users as u \n";
|
||||
$sql .= "where q.domain_uuid = d.domain_uuid \n";
|
||||
$sql .= "and q.insert_user = u.user_uuid \n";
|
||||
$sql .= "and q.domain_uuid = :domain_uuid \n";
|
||||
$sql .= "and u.user_uuid = :user_uuid \n";
|
||||
// show only assigned fax extensions
|
||||
$sql .= "WHERE q.domain_uuid = :domain_uuid ";
|
||||
$sql .= "AND u.user_uuid = :user_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['user_uuid'] = $_SESSION['user_uuid'];
|
||||
}
|
||||
|
||||
if (isset($search)) {
|
||||
$sql .= "and (\n";
|
||||
$sql .= " lower(q.hostname) like :search \n";
|
||||
$sql .= " or lower(q.fax_caller_id_name) like :search \n";
|
||||
$sql .= " or lower(q.fax_caller_id_number) like :search \n";
|
||||
$sql .= " or lower(q.fax_number) like :search \n";
|
||||
$sql .= " or lower(q.fax_email_address) like :search \n";
|
||||
$sql .= " or lower(q.insert_user) like :search \n";
|
||||
$sql .= " or lower(q.fax_file) like :search \n";
|
||||
$sql .= " or lower(q.fax_status) like :search \n";
|
||||
$sql .= " or lower(q.fax_accountcode) like :search \n";
|
||||
$sql .= "AND (";
|
||||
$sql .= " LOWER(q.hostname) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_caller_id_name) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_caller_id_number) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_number) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_email_address) LIKE :search ";
|
||||
$sql .= " OR LOWER(u.username) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_file) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_status) LIKE :search ";
|
||||
$sql .= " OR LOWER(q.fax_accountcode) LIKE :search ";
|
||||
$sql .= ") ";
|
||||
$parameters['search'] = '%'.$search.'%';
|
||||
$parameters['search'] = '%' . $search . '%';
|
||||
}
|
||||
|
||||
if (isset($_GET["fax_status"]) && !empty($_GET["fax_status"])) {
|
||||
$sql .= "and q.fax_status = :fax_status \n";
|
||||
$parameters['fax_status'] = $_GET["fax_status"];
|
||||
$sql .= "AND q.fax_status = :fax_status ";
|
||||
$parameters['fax_status'] = $_GET["fax_status"];
|
||||
}
|
||||
$database = new database;
|
||||
$num_rows = $database->select($sql, $parameters ?? null, 'column');
|
||||
|
|
@ -177,7 +176,7 @@
|
|||
$sql .= "q.fax_accountcode, ";
|
||||
$sql .= "q.fax_command ";
|
||||
$sql .= "FROM v_fax_queue AS q ";
|
||||
$sql .= "JOIN v_users AS u ON q.insert_user = u.user_uuid ";
|
||||
$sql .= "LEFT JOIN v_users AS u ON q.insert_user = u.user_uuid ";
|
||||
$sql .= "JOIN v_domains AS d ON q.domain_uuid = d.domain_uuid ";
|
||||
|
||||
if (!empty($_GET['show']) && $_GET['show'] == "all" && permission_exists('fax_queue_all')) {
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@
|
|||
//check to see if the process is running
|
||||
if (file_exists($file)) {
|
||||
$pid = file_get_contents($file);
|
||||
if (posix_getsid($pid) === false) {
|
||||
if (posix_getsid($pid) === false) {
|
||||
//process is not running
|
||||
$exists = false;
|
||||
}
|
||||
|
|
@ -103,6 +103,16 @@
|
|||
return $exists;
|
||||
}
|
||||
|
||||
//remove single quote
|
||||
function escape_quote($value) {
|
||||
if (!empty($value)) {
|
||||
return str_replace("'", "", $value);
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//check to see if the process exists
|
||||
$pid_exists = process_exists($pid_file);
|
||||
|
||||
|
|
@ -177,10 +187,10 @@
|
|||
//prepare the smtp from and from name variables
|
||||
$email_from = $setting->get('fax','smtp_from');
|
||||
$email_from_name = $setting->get('fax','smtp_from_name');
|
||||
if (!empty($email_from)) {
|
||||
if (empty($email_from)) {
|
||||
$email_from = $setting->get('email','smtp_from');
|
||||
}
|
||||
if (!empty($email_from_name)) {
|
||||
if (empty($email_from_name)) {
|
||||
$email_from_name = $setting->get('email','smtp_from_name');
|
||||
}
|
||||
|
||||
|
|
@ -215,7 +225,7 @@
|
|||
$esl = event_socket::create();
|
||||
if (!$esl->is_connected()) {
|
||||
echo "Could not connect to event socket.\n";
|
||||
exit;
|
||||
exit;
|
||||
}
|
||||
|
||||
//fax options, first attempt use the fax variables from settings
|
||||
|
|
@ -246,15 +256,15 @@
|
|||
|
||||
//define the fax file
|
||||
$common_variables = '';
|
||||
$common_variables = "accountcode='" . $fax_accountcode . "',";
|
||||
$common_variables .= "sip_h_accountcode='" . $fax_accountcode . "',";
|
||||
$common_variables .= "domain_uuid=" . $domain_uuid . ",";
|
||||
$common_variables .= "domain_name=" . $domain_name . ",";
|
||||
$common_variables .= "origination_caller_id_name='" . $fax_caller_id_name . "',";
|
||||
$common_variables .= "origination_caller_id_number='" . $fax_caller_id_number . "',";
|
||||
$common_variables .= "fax_ident='" . $fax_caller_id_number . "',";
|
||||
$common_variables .= "fax_header='" . $fax_caller_id_name . "',";
|
||||
$common_variables .= "fax_file='" . $fax_file . "',";
|
||||
$common_variables = "accountcode='" . escape_quote($fax_accountcode) . "',";
|
||||
$common_variables .= "sip_h_accountcode='" . escape_quote($fax_accountcode) . "',";
|
||||
$common_variables .= "domain_uuid=" . $domain_uuid . ",";
|
||||
$common_variables .= "domain_name=" . $domain_name . ",";
|
||||
$common_variables .= "origination_caller_id_name='" . escape_quote($fax_caller_id_name) . "',";
|
||||
$common_variables .= "origination_caller_id_number=" . $fax_caller_id_number . ",";
|
||||
$common_variables .= "fax_ident='" . escape_quote($fax_caller_id_number) . "',";
|
||||
$common_variables .= "fax_header='" . escape_quote($fax_caller_id_name) . "',";
|
||||
$common_variables .= "fax_file='" . escape_quote($fax_file) . "',";
|
||||
|
||||
//extract fax_dtmf from the fax number
|
||||
fax_split_dtmf($fax_number, $fax_dtmf);
|
||||
|
|
@ -265,12 +275,22 @@
|
|||
}
|
||||
$route_array = outbound_route_to_bridge($domain_uuid, $fax_prefix . $fax_number, $channel_variables);
|
||||
if (count($route_array) == 0) {
|
||||
//send the internal call to the registered extension
|
||||
$fax_uri = "user/".$fax_number."@".$domain_name;
|
||||
}
|
||||
else {
|
||||
//send the external call
|
||||
$fax_uri = $route_array[0];
|
||||
//check for valid extension
|
||||
$sql = "select count(extension_uuid) ";
|
||||
$sql .= "from v_extensions ";
|
||||
$sql .= "where extension = :fax_number ";
|
||||
$sql .= "and domain_uuid = :domain_uuid ";
|
||||
$parameters['domain_uuid'] = $domain_uuid;
|
||||
$parameters['fax_number'] = $fax_number;
|
||||
$database = new database;
|
||||
$extension_count = $database->select($sql, $parameters, 'column');
|
||||
if ($extension_count > 0) {
|
||||
//send the internal call to the registered extension
|
||||
$route_array[] = "user/".$fax_number."@".$domain_name;
|
||||
}
|
||||
else {
|
||||
$fax_status = 'failed';
|
||||
}
|
||||
}
|
||||
|
||||
//set the origination uuid
|
||||
|
|
@ -284,7 +304,7 @@
|
|||
$dial_string .= "fax_queue_uuid=" . $fax_queue_uuid. ",";
|
||||
$dial_string .= "mailto_address='" . $fax_email_address . "',";
|
||||
$dial_string .= "mailfrom_address='" . $email_from_address . "',";
|
||||
$dial_string .= "fax_retry_attempts=" . $fax_retry_count . ",";
|
||||
$dial_string .= "fax_retry_attempts=" . $fax_retry_count . ",";
|
||||
$dial_string .= "fax_retry_limit=" . $retry_limit . ",";
|
||||
//$dial_string .= "fax_retry_sleep=180,";
|
||||
$dial_string .= "fax_verbose=true,";
|
||||
|
|
@ -316,7 +336,9 @@
|
|||
$fax_instance_id = pathinfo($fax_file, PATHINFO_FILENAME);
|
||||
|
||||
//set the fax status
|
||||
$fax_status = 'sending';
|
||||
if (empty($fax_status)) {
|
||||
$fax_status = 'sending';
|
||||
}
|
||||
|
||||
//update the database to say status to trying and set the command
|
||||
$array['fax_queue'][0]['fax_queue_uuid'] = $fax_queue_uuid;
|
||||
|
|
@ -410,11 +432,11 @@
|
|||
$fax_file_basename = $path_info['basename'];
|
||||
$fax_file_filename = $path_info['filename'];
|
||||
$fax_file_extension = $path_info['extension'];
|
||||
|
||||
|
||||
//set the fax file pdf and tif files
|
||||
$fax_file_tif = path_join($fax_file_dirname, $fax_file_filename . '.' . $fax_file_extension);
|
||||
$fax_file_pdf = path_join($fax_file_dirname, $fax_file_filename . '.pdf');
|
||||
|
||||
|
||||
if (file_exists($fax_file_pdf)) {
|
||||
$fax_file_name = $fax_file_filename . '.pdf';
|
||||
}
|
||||
|
|
@ -457,7 +479,7 @@
|
|||
$email_subject = str_replace('${fax_messages}', $fax_messages, $email_subject);
|
||||
$email_subject = str_replace('${fax_file_warning}', $fax_file_warning, $email_subject);
|
||||
$email_subject = str_replace('${fax_subject_tag}', $fax_email_inbound_subject_tag, $email_subject);
|
||||
|
||||
|
||||
$email_subject = str_replace('${fax_success}', $fax_success, $email_subject);
|
||||
$email_subject = str_replace('${fax_result_code}', $fax_result_code, $email_subject);
|
||||
$email_subject = str_replace('${fax_result_text}', $fax_result_text, $email_subject);
|
||||
|
|
@ -472,7 +494,7 @@
|
|||
$email_subject = str_replace('${fax_date}', date('Y-m-d H:i:s', $fax_epoch), $email_subject);
|
||||
$email_subject = str_replace('${fax_duration}', $fax_duration, $email_subject);
|
||||
$email_subject = str_replace('${fax_duration_formatted}', $fax_duration_formatted, $email_subject);
|
||||
|
||||
|
||||
//replace variables in email body
|
||||
$email_body = str_replace('${domain_name}', $domain_uuid, $email_body);
|
||||
$email_body = str_replace('${number_dialed}', $fax_number, $email_body);
|
||||
|
|
@ -481,7 +503,7 @@
|
|||
$email_body = str_replace('${fax_messages}', $fax_messages, $email_body);
|
||||
$email_body = str_replace('${fax_file_warning}', $fax_file_warning, $email_body);
|
||||
$email_body = str_replace('${fax_subject_tag}', $fax_email_inbound_subject_tag, $email_body);
|
||||
|
||||
|
||||
$email_body = str_replace('${fax_success}', $fax_success, $email_body);
|
||||
$email_body = str_replace('${fax_result_code}', $fax_result_code, $email_body);
|
||||
$email_body = str_replace('${fax_result_text}', $fax_result_text, $email_body);
|
||||
|
|
|
|||
|
|
@ -102,6 +102,14 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Default VLAN for phone LAN port. Default 0 is disabled.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "8d424a07-921c-4549-a938-5457d51d47d2";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_pc_mode";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "Enabled";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: Enabled, Disabled, Mirrored. Default: Enabled";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "5200174e-b644-438f-a2f8-b721ee052cea";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_pc_port_vlan";
|
||||
|
|
@ -310,6 +318,14 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Bluetooth Handsfree - 0 - Off, 1 - On";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "e65ff82a-6ded-4cdd-8ba5-b45cb174c8fa";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_ringtone";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "text";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "Default";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Options: Normal, PlantronicsEHS. Default: Normal";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "5bc527d0-6f83-403b-a6c0-574540cfa9a6";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_type";
|
||||
|
|
@ -334,6 +350,23 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Always Ring Speaker. 0 - No, 1 - Yes both, 2 - Yes Speaker Only. Default is 0";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a3ce83cb-609f-4189-a4cf-569ed36fb76d";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_rx_gain";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "a3ce83cb-609f-4189-a4cf-569ed36fb76d";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_headset_tx_gain";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0";
|
||||
$y++;
|
||||
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "453ec939-ef61-4ecd-ad0a-31905153efd8";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_auto_attended_transfer";
|
||||
|
|
@ -378,9 +411,17 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_screensaver";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "1";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Screensaver. 0 - No, 1 - Yes, 2 - On if no VPK is active. Default is 1";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Screensaver. 0 - No, 1 - Yes, 2 - On if no VPK is active. Default is 0";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "730eae5c-a413-45a4-ad64-725e21dd6ab5";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_screensaver_enable";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Screensaver. 0 - No, 1 - Yes, 2 - On if no VPK is active. Default is 0";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "eb96abe3-0225-4c75-adcf-982e7121d905";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
|
|
@ -774,6 +815,14 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Internet Protocol. 0 - Both, prefer IPv4, 1 - Both, prefer IPv6, 2 - IPv4 Only, 3 - IPv6 Only. Default is 0";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "c2d071eb-1381-4acb-b094-857cd222fce0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_internet_protocol";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "numeric";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "0";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Internet Protocol. BothAndPreferIPv4, BothAndPreferIPv6, IPv4Only, IPv6Only. Default: IPv4Only";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "3dd34197-e1e8-40bc-baf2-2e07c39d59b5";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "provision";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "grandstream_accept_sip_from_proxy_only";
|
||||
|
|
|
|||
|
|
@ -127,7 +127,7 @@
|
|||
echo "<div class='action_bar' id='action_bar'>\n";
|
||||
echo " <div class='heading'><b>".$text['title-gswave']."</b></div>\n";
|
||||
echo " <div class='actions'>\n";
|
||||
echo " <a href='https://play.google.com/store/apps/details?id=com.grandstream.wave' target='_blank'><img src='/app/gswave/resources/images/google_play.png' style='width: auto; height: 30px;' /></a>";
|
||||
echo " <a href='https://play.google.com/store/apps/details?id=com.grandstream.ucm' target='_blank'><img src='/app/gswave/resources/images/google_play.png' style='width: auto; height: 30px;' /></a>";
|
||||
echo " <a href='https://apps.apple.com/us/app/grandstream-wave/id1523254549' target='_blank'><img src='/app/gswave/resources/images/apple_app_store.png' style='width: auto; height: 30px;' /></a>";
|
||||
//echo button::create(['type'=>'button','label'=>'Website','icon'=>'globe','style='margin-left: 15px;','link'=>'http://www.grandstream.com/products/ip-voice-telephony/softphone-app/product/grandstream-wave']);
|
||||
echo " </div>\n";
|
||||
|
|
|
|||
|
|
@ -526,7 +526,7 @@
|
|||
$sql = "select * from v_ivr_menu_options ";
|
||||
$sql .= "where domain_uuid = :domain_uuid ";
|
||||
$sql .= "and ivr_menu_uuid = :ivr_menu_uuid ";
|
||||
$sql .= "order by ivr_menu_option_order, ivr_menu_option_digits asc ";
|
||||
$sql .= "order by natural_sort(ivr_menu_option_digits::text) asc, ivr_menu_option_order asc; ";
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
$parameters['ivr_menu_uuid'] = $ivr_menu_uuid;
|
||||
$database = new database;
|
||||
|
|
@ -1550,4 +1550,4 @@
|
|||
//include the footer
|
||||
require_once "resources/footer.php";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@
|
|||
unset($sql, $parameters);
|
||||
|
||||
//get the domain_name and domain_uuid
|
||||
if ($_SESSION['provision']['http_domain_filter']['boolean'] == "true") {
|
||||
if (empty($domain_uuid)) {
|
||||
//get the domain_name
|
||||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
|
@ -452,6 +452,9 @@
|
|||
$prov->file = $file;
|
||||
$file_contents = $prov->render();
|
||||
|
||||
//clean the output buffer
|
||||
ob_clean();
|
||||
|
||||
//deliver the customized config over HTTP/HTTPS
|
||||
//need to make sure content-type is correct
|
||||
if (!empty($_REQUEST['content_type']) && $_REQUEST['content_type'] == 'application/octet-stream') {
|
||||
|
|
@ -531,5 +534,3 @@
|
|||
}
|
||||
|
||||
?>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -662,7 +662,7 @@
|
|||
$view->engine = "smarty";
|
||||
}
|
||||
$view->template_dir = $template_dir ."/".$device_template."/";
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//replace the variables in the template in the future loop through all the line numbers to do a replace for each possible line number
|
||||
|
|
@ -826,7 +826,7 @@
|
|||
}
|
||||
|
||||
//convert seconds to minutes for grandstream
|
||||
if ($device_vendor == 'grandstream') {
|
||||
if ($device_vendor == 'grandstream' && $register_expires >= 60) {
|
||||
$register_expires = round($register_expires / 60);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -223,6 +223,14 @@
|
|||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "true";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable or disable the feature to add a range of extensions.";
|
||||
$y++;
|
||||
$apps[$x]['default_settings'][$y]['default_setting_uuid'] = "d25c1e2b-4098-408e-959b-c789ba4691e1";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_category'] = "ring_group";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_subcategory'] = "diversion_enabled";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_name'] = "boolean";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_value'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_enabled'] = "false";
|
||||
$apps[$x]['default_settings'][$y]['default_setting_description'] = "Enable or disable the adding diversion header for external destinations.";
|
||||
|
||||
//schema details
|
||||
$y=0;
|
||||
|
|
|
|||
|
|
@ -84,6 +84,7 @@
|
|||
<action function="play-file" data="voicemail/vm-du_har.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-inga.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-meddelanden.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
<input pattern="^(\d+):(.*)$">
|
||||
<match>
|
||||
|
|
@ -186,14 +187,14 @@
|
|||
<input pattern="^([0-9#*]):([0-9#*]):([0-9#*])$">
|
||||
<match>
|
||||
<!--<action function="play-file" data="voicemail/vm-press.wav"/>-->
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>-->
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>-->
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>-->
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>-->
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>-->
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>-->
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>-->
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>-->
|
||||
<action function="say" data="$1" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-listen_to_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$2" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-save_recording.wav"/>
|
||||
<action function="play-file" data="voicemail/vm-press.wav"/>
|
||||
<action function="say" data="$3" method="pronounced" type="name_spelled"/>
|
||||
<action function="play-file" data="voicemail/vm-rerecord.wav"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
|
|
|||
|
|
@ -310,11 +310,11 @@
|
|||
<param name="force-register-db-domain" value="$${domain}" enabled="false"/>
|
||||
|
||||
<!-- for sip over websocket support -->
|
||||
<param name="ws-binding" value=":5066"/>
|
||||
<param name="ws-binding" value=":5066" enabled="false"/>
|
||||
|
||||
<!-- for sip over secure websocket support -->
|
||||
<!-- You need wss.pem in $${certs_dir} for wss or one will be created for you -->
|
||||
<param name="wss-binding" value=":7443"/>
|
||||
<param name="wss-binding" value=":7443" enabled="false"/>
|
||||
|
||||
<param name="delete-subs-on-register" value="false" enabled="false"/>
|
||||
|
||||
|
|
|
|||
|
|
@ -36,25 +36,25 @@
|
|||
--convert_ext (optional) to replace the file's extension
|
||||
|
||||
--Example
|
||||
--luarun emergency.lua to@domain.com from@domain.com 'headers' 'subject' 'body'
|
||||
--luarun emergency.lua to@domain.com from@domain.com 'headers' 'subject' 'body'
|
||||
|
||||
--load libraries
|
||||
local send_mail = require 'resources.functions.send_mail'
|
||||
local Database = require "resources.functions.database"
|
||||
local Settings = require "resources.functions.lazy_settings"
|
||||
local Utils = require "resources.functions.channel_utils";
|
||||
local send_mail = require 'resources.functions.send_mail'
|
||||
local Database = require "resources.functions.database"
|
||||
local Settings = require "resources.functions.lazy_settings"
|
||||
local Utils = require "resources.functions.channel_utils";
|
||||
|
||||
--define a function to send email
|
||||
local db = dbh or Database.new('system')
|
||||
local settings = Settings.new(db, domain_name, domain_uuid)
|
||||
local email_queue_enabled = settings:get('email_queue', 'enabled', 'boolean') or "false";
|
||||
local db = dbh or Database.new('system')
|
||||
local settings = Settings.new(db, domain_name, domain_uuid)
|
||||
local email_queue_enabled = settings:get('email_queue', 'enabled', 'boolean') or "false";
|
||||
|
||||
--get the argv values
|
||||
script_name = argv[0];
|
||||
delete = argv[1];
|
||||
script_name = argv[0];
|
||||
delete = argv[1];
|
||||
|
||||
--prepare the api object
|
||||
api = freeswitch.API();
|
||||
api = freeswitch.API();
|
||||
|
||||
--get sessions info
|
||||
if (session and session:ready()) then
|
||||
|
|
@ -71,17 +71,17 @@ else
|
|||
headers = {}
|
||||
end
|
||||
|
||||
function escapeCSV(s)
|
||||
function escape_csv(s)
|
||||
if string.find(s, '[,"]') then
|
||||
s = '"' .. string.gsub(s, '"', '""') .. '"'
|
||||
end
|
||||
return s
|
||||
end
|
||||
|
||||
function toCSV(tt)
|
||||
function to_csv(tt)
|
||||
local s = ""
|
||||
for _,p in ipairs(tt) do
|
||||
s = s .. "," .. escapeCSV(p)
|
||||
s = s .. "," .. escape_csv(p)
|
||||
end
|
||||
return string.sub(s, 2)
|
||||
end
|
||||
|
|
@ -100,9 +100,9 @@ local sql = "SELECT * FROM v_email_templates ";
|
|||
body = row.template_body;
|
||||
language = row.template_language;
|
||||
end);
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("info", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("info", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
--freeswitch.consoleLog("info", "[template] SQL: " .. sql .. "body: " .. body .. "\n");
|
||||
|
||||
--get email from
|
||||
|
|
@ -110,11 +110,9 @@ local sql = "SELECT * FROM v_default_settings ";
|
|||
sql = sql .. "WHERE default_setting_category = 'email' ";
|
||||
sql = sql .. "AND (default_setting_subcategory = 'smtp_from' ";
|
||||
sql = sql .. "OR default_setting_subcategory = 'smtp_from_name') ";
|
||||
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("notice", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("notice", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
dbh:query(sql, function(row)
|
||||
if (row.default_setting_subcategory == "smtp_from") then
|
||||
from = row.default_setting_value;
|
||||
|
|
@ -122,85 +120,94 @@ local sql = "SELECT * FROM v_default_settings ";
|
|||
if (row.default_setting_subcategory == "smtp_from_name") then
|
||||
from_name = row.default_setting_value;
|
||||
end
|
||||
end);
|
||||
|
||||
|
||||
|
||||
-- get vars
|
||||
domain_uuid = session:getVariable("domain_uuid");
|
||||
call_date = session:getVariable("call_date");
|
||||
caller_id_name = session:getVariable("caller_id_name");
|
||||
caller_id_number = session:getVariable("caller_id_number");
|
||||
sip_from_user = session:getVariable("sip_from_user");
|
||||
emergency_caller_id_name = session:getVariable("emergency_caller_id_name");
|
||||
emergency_caller_id_number = session:getVariable("emergency_caller_id_number");
|
||||
call_duration = session:getVariable("call_duration");
|
||||
|
||||
--domain level check
|
||||
result = {}
|
||||
local sql = "SELECT count(domain_setting_value) ";
|
||||
sql = sql .. "AS total ";
|
||||
sql = sql .. "FROM v_domain_settings ";
|
||||
sql = sql .. "WHERE domain_uuid = :domain_uuid ";
|
||||
sql = sql .. "AND domain_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND domain_setting_enabled = :status ";
|
||||
|
||||
local params = {domain_uuid = domain_uuid, emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
|
||||
dbh:query(sql, params, function(result)
|
||||
total = result.total;
|
||||
--no emergency emails found under domain, using default
|
||||
if (total == 0 or total == nil) then
|
||||
to = {}
|
||||
local sql = "SELECT default_setting_value ";
|
||||
sql = sql .. "FROM v_default_settings ";
|
||||
sql = sql .. "WHERE default_setting_category = :category ";
|
||||
sql = sql .. "AND default_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND default_setting_enabled = :status ";
|
||||
sql = sql .. "LIMIT 5 ";
|
||||
local params = {category = 'dialplan', emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
dbh:query(sql, params, function(result)
|
||||
for key,row in pairs(result) do
|
||||
table.insert(to, row);
|
||||
freeswitch.consoleLog("info", "[emergency] Inserted into table from default settings " .. row .. "\n");
|
||||
end
|
||||
--add some details
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("notice", "[emergency] SQL: " .. sql .. " result " .. result .. "\n");
|
||||
end
|
||||
end);
|
||||
--domain level emails max 5
|
||||
else if (tonumber(total) <= 5) then
|
||||
to = {}
|
||||
local sql = "SELECT domain_setting_value ";
|
||||
sql = sql .. "FROM v_domain_settings ";
|
||||
sql = sql .. "WHERE domain_uuid = :domain_uuid ";
|
||||
sql = sql .. "AND domain_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND domain_setting_enabled = :status ";
|
||||
local params = {domain_uuid = domain_uuid, emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
dbh:query(sql, params, function(result)
|
||||
for key,row in pairs(result) do
|
||||
table.insert(to, row);
|
||||
freeswitch.consoleLog("info", "[template] Inserted into table " .. row .. "\n");
|
||||
end
|
||||
end);
|
||||
end
|
||||
end
|
||||
|
||||
end);
|
||||
|
||||
dbh:release()
|
||||
|
||||
if (#to > 0) then
|
||||
--set event
|
||||
--get variables
|
||||
if (session and session:ready()) then
|
||||
domain_uuid = session:getVariable("domain_uuid");
|
||||
caller_id_name = session:getVariable("caller_id_name");
|
||||
caller_id_number = session:getVariable("caller_id_number");
|
||||
sip_from_user = session:getVariable("sip_from_user");
|
||||
emergency_caller_id_name = session:getVariable("emergency_caller_id_name");
|
||||
emergency_caller_id_number = session:getVariable("emergency_caller_id_number");
|
||||
call_duration = session:getVariable("call_duration");
|
||||
destination_number = session:getVariable("destination_number");
|
||||
if (tonumber(destination_number) == 933) then
|
||||
event = '933 Emergency Address Validation Service';
|
||||
else if (tonumber(destination_number) == 911) then
|
||||
event = '911 Emergency Call';
|
||||
end
|
||||
end
|
||||
|
||||
--domain level check
|
||||
result = {}
|
||||
local sql = "SELECT count(domain_setting_value) ";
|
||||
sql = sql .. "AS total ";
|
||||
sql = sql .. "FROM v_domain_settings ";
|
||||
sql = sql .. "WHERE domain_uuid = :domain_uuid ";
|
||||
sql = sql .. "AND domain_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND domain_setting_enabled = :status ";
|
||||
|
||||
local params = {domain_uuid = domain_uuid, emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
|
||||
dbh:query(sql, params, function(result)
|
||||
total = result.total;
|
||||
--no emergency emails found under domain, using default
|
||||
if (total == 0 or total == nil) then
|
||||
to = {}
|
||||
local sql = "SELECT default_setting_value ";
|
||||
sql = sql .. "FROM v_default_settings ";
|
||||
sql = sql .. "WHERE default_setting_category = :category ";
|
||||
sql = sql .. "AND default_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND default_setting_enabled = :status ";
|
||||
sql = sql .. "LIMIT 5 ";
|
||||
local params = {category = 'dialplan', emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
dbh:query(sql, params, function(result)
|
||||
for key,row in pairs(result) do
|
||||
table.insert(to, row);
|
||||
freeswitch.consoleLog("info", "[emergency] Inserted into table from default settings " .. row .. "\n");
|
||||
end
|
||||
--add some details
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("notice", "[emergency] SQL: " .. sql .. " result " .. result .. "\n");
|
||||
end
|
||||
end);
|
||||
--domain level emails max 5
|
||||
else if (tonumber(total) <= 5) then
|
||||
to = {}
|
||||
local sql = "SELECT domain_setting_value ";
|
||||
sql = sql .. "FROM v_domain_settings ";
|
||||
sql = sql .. "WHERE domain_uuid = :domain_uuid ";
|
||||
sql = sql .. "AND domain_setting_subcategory = :emergency_email_address ";
|
||||
sql = sql .. "AND domain_setting_enabled = :status ";
|
||||
local params = {domain_uuid = domain_uuid, emergency_email_address = 'emergency_email_address', status = 't'}
|
||||
dbh:query(sql, params, function(result)
|
||||
for key,row in pairs(result) do
|
||||
table.insert(to, row);
|
||||
freeswitch.consoleLog("info", "[template] Inserted into table " .. row .. "\n");
|
||||
end
|
||||
end);
|
||||
end
|
||||
end
|
||||
|
||||
end);
|
||||
|
||||
--set event
|
||||
if (tonumber(destination_number) == 933) then
|
||||
event = '933 Emergency Address Validation Service';
|
||||
else if (tonumber(destination_number) == 911) then
|
||||
event = '911 Emergency Call';
|
||||
end
|
||||
end
|
||||
|
||||
--connect to the database
|
||||
local dbh = Database.new('system');
|
||||
|
||||
--set the call date
|
||||
sql = "SELECT now() as call_date ";
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("NOTICE", "[event] "..sql.."\n");
|
||||
end
|
||||
local t = dbh:first_row(sql);
|
||||
call_date = t.call_date;
|
||||
|
||||
--send the email
|
||||
if (#to > 0) then
|
||||
--prepare the body
|
||||
if (body ~= nil) then
|
||||
body = body:gsub("${caller_id_name}", caller_id_name);
|
||||
|
|
@ -225,54 +232,30 @@ if (#to > 0) then
|
|||
end
|
||||
end
|
||||
|
||||
-- Insert into Emergency Logs
|
||||
emergency_logs_uuid = api:executeString("create_uuid");
|
||||
domain_uuid = session:getVariable("domain_uuid");
|
||||
|
||||
-- Set time and date
|
||||
local delimiter = " ";
|
||||
local y = 0;
|
||||
local tab = {}
|
||||
|
||||
while true do
|
||||
local endindex = call_date:find(delimiter,y);
|
||||
if not endindex then
|
||||
break
|
||||
end
|
||||
table.insert(tab,call_date:sub(y,endindex-1))
|
||||
y = endindex + 1;
|
||||
end
|
||||
|
||||
table.insert(tab,call_date:sub(y));
|
||||
local time = tab[2] .. " " .. tab[3];
|
||||
|
||||
freeswitch.consoleLog("info", "[emergency] Getting Date " .. tab[1] .. " Time " .. tab[2] .. " Format " .. tab[3] .. "\n");
|
||||
|
||||
--connect to the database
|
||||
local dbh = Database.new('system');
|
||||
|
||||
--insert into emergency logs
|
||||
local sql = "INSERT INTO v_emergency_logs ( ";
|
||||
sql = sql .. " log_uuid, ";
|
||||
sql = sql .. " domain_uuid, ";
|
||||
sql = sql .. " date, ";
|
||||
sql = sql .. " time, ";
|
||||
sql = sql .. " extension, ";
|
||||
sql = sql .. " event ";
|
||||
sql = sql .. ") ";
|
||||
sql = sql .. "VALUES ( ";
|
||||
sql = sql .. " :emergency_logs_uuid, ";
|
||||
sql = sql .. " :domain_uuid, ";
|
||||
sql = sql .. " :date, ";
|
||||
sql = sql .. " :time, ";
|
||||
sql = sql .. " :extension, ";
|
||||
sql = sql .. " :event ";
|
||||
sql = sql .. ") ";
|
||||
sql = sql .. " emergency_log_uuid, ";
|
||||
sql = sql .. " domain_uuid, ";
|
||||
sql = sql .. " insert_date, ";
|
||||
sql = sql .. " extension, ";
|
||||
sql = sql .. " event ";
|
||||
sql = sql .. ") ";
|
||||
sql = sql .. "VALUES ( ";
|
||||
sql = sql .. " :emergency_log_uuid, ";
|
||||
sql = sql .. " :domain_uuid, ";
|
||||
sql = sql .. " now(), ";
|
||||
sql = sql .. " :extension, ";
|
||||
sql = sql .. " :event ";
|
||||
sql = sql .. ") ";
|
||||
|
||||
local params = {emergency_logs_uuid = emergency_logs_uuid,domain_uuid = domain_uuid, date = tab[1], time = time, extension = caller_id_number, event = event}
|
||||
local params = {emergency_log_uuid = call_uuid, domain_uuid = domain_uuid, extension = caller_id_number, event = event}
|
||||
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("info", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("info", "[emergency] SQL: " .. sql .. "\n");
|
||||
end
|
||||
|
||||
dbh:query(sql, params);
|
||||
dbh:release();
|
||||
dbh:query(sql, params);
|
||||
dbh:release();
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
--
|
||||
-- The Initial Developer of the Original Code is
|
||||
-- Mark J Crane <markjcrane@fusionpbx.com>
|
||||
-- Copyright (C) 2015-2023
|
||||
-- Copyright (C) 2015-2024
|
||||
-- the Initial Developer. All Rights Reserved.
|
||||
--
|
||||
-- Contributor(s):
|
||||
|
|
@ -28,6 +28,9 @@
|
|||
--create the api object
|
||||
api = freeswitch.API();
|
||||
|
||||
--get the server hostname
|
||||
hostname = api:executeString("hostname");
|
||||
|
||||
--include config.lua
|
||||
require "resources.functions.config";
|
||||
|
||||
|
|
@ -312,7 +315,6 @@
|
|||
end
|
||||
sql = sql .. ":fax_time ";
|
||||
sql = sql .. ")";
|
||||
|
||||
local params = {
|
||||
uuid = uuid;
|
||||
domain_uuid = domain_uuid;
|
||||
|
|
@ -333,11 +335,9 @@
|
|||
fax_date = os.date("%Y-%m-%d %X");
|
||||
fax_time = os.time();
|
||||
};
|
||||
|
||||
if (debug["sql"]) then
|
||||
freeswitch.consoleLog("notice", "[fax] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
|
||||
end
|
||||
|
||||
dbh:query(sql, params);
|
||||
|
||||
--add the fax files
|
||||
|
|
@ -345,10 +345,10 @@
|
|||
if (fax_success =="1") then
|
||||
if (storage_type == "base64") then
|
||||
--include the file io
|
||||
local file = require "resources.functions.file"
|
||||
local file = require "resources.functions.file"
|
||||
|
||||
--read file content as base64 string
|
||||
fax_base64 = assert(file.read_base64(fax_file));
|
||||
fax_base64 = assert(file.read_base64(fax_file));
|
||||
end
|
||||
|
||||
local sql = {}
|
||||
|
|
@ -421,6 +421,66 @@
|
|||
end
|
||||
end
|
||||
|
||||
--add to the fax queue when the fax_forward_number is set
|
||||
if (fax_forward_number ~= nil) then
|
||||
sql = "insert into v_fax_queue ";
|
||||
sql = sql .. "(";
|
||||
sql = sql .. "fax_queue_uuid, ";
|
||||
sql = sql .. "domain_uuid, ";
|
||||
if (fax_uuid ~= nil) then
|
||||
sql = sql .. "fax_uuid, ";
|
||||
end
|
||||
sql = sql .. "fax_date, ";
|
||||
sql = sql .. "hostname, ";
|
||||
sql = sql .. "fax_caller_id_name, ";
|
||||
sql = sql .. "fax_caller_id_number, ";
|
||||
sql = sql .. "fax_number, ";
|
||||
sql = sql .. "fax_prefix, ";
|
||||
sql = sql .. "fax_email_address, ";
|
||||
sql = sql .. "fax_file, ";
|
||||
sql = sql .. "fax_status, ";
|
||||
sql = sql .. "fax_retry_count, ";
|
||||
sql = sql .. "fax_accountcode, ";
|
||||
sql = sql .. "fax_command ";
|
||||
sql = sql .. ") ";
|
||||
sql = sql .. "values ";
|
||||
sql = sql .. "(";
|
||||
sql = sql .. ":uuid, ";
|
||||
sql = sql .. ":domain_uuid, ";
|
||||
if (fax_uuid ~= nil) then
|
||||
sql = sql .. ":fax_uuid, ";
|
||||
end
|
||||
sql = sql .. "now(), ";
|
||||
sql = sql .. ":hostname, ";
|
||||
sql = sql .. ":fax_caller_id_name, ";
|
||||
sql = sql .. ":fax_caller_id_number, ";
|
||||
sql = sql .. ":fax_number, ";
|
||||
sql = sql .. ":fax_prefix, ";
|
||||
sql = sql .. ":fax_email_address, ";
|
||||
sql = sql .. ":fax_file, ";
|
||||
sql = sql .. ":fax_status, ";
|
||||
sql = sql .. ":fax_retry_count, ";
|
||||
sql = sql .. ":fax_accountcode, ";
|
||||
sql = sql .. ":fax_command ";
|
||||
sql = sql .. ")";
|
||||
local params = {
|
||||
uuid = uuid;
|
||||
domain_uuid = domain_uuid;
|
||||
fax_uuid = fax_uuid;
|
||||
hostname = hostname;
|
||||
fax_caller_id_name = fax_caller_id_name;
|
||||
fax_caller_id_number = fax_caller_id_number;
|
||||
fax_number = fax_forward_number;
|
||||
fax_prefix = fax_prefix;
|
||||
fax_email_address = fax_email;
|
||||
fax_file = fax_file;
|
||||
fax_status = 'waiting';
|
||||
fax_retry_count = '0';
|
||||
fax_accountcode = fax_accountcode;
|
||||
fax_command = '';
|
||||
};
|
||||
end
|
||||
|
||||
--send the selected variables to the console
|
||||
if (fax_success ~= nil) then
|
||||
freeswitch.consoleLog("INFO","fax_success: '" .. fax_success .. "'\n");
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@
|
|||
subject = subject:gsub("${caller_id_name}", caller_id_name);
|
||||
subject = subject:gsub("${caller_id_number}", caller_id_number);
|
||||
subject = subject:gsub("${sip_to_user}", sip_to_user);
|
||||
subject = subject:gsub("${dialed_user}", dialed_user);
|
||||
subject = subject:gsub("${dialed_user}", sip_to_user);
|
||||
subject = trim(subject);
|
||||
subject = '=?utf-8?B?'..base64.encode(subject)..'?=';
|
||||
|
||||
|
|
@ -99,7 +99,7 @@
|
|||
body = body:gsub("${caller_id_name}", caller_id_name);
|
||||
body = body:gsub("${caller_id_number}", caller_id_number);
|
||||
body = body:gsub("${sip_to_user}", sip_to_user);
|
||||
body = body:gsub("${dialed_user}", dialed_user);
|
||||
body = body:gsub("${dialed_user}", sip_to_user);
|
||||
body = body:gsub(" ", " ");
|
||||
body = body:gsub("%s+", "");
|
||||
body = body:gsub(" ", " ");
|
||||
|
|
@ -129,13 +129,12 @@
|
|||
originate_disposition = env:getHeader("originate_disposition");
|
||||
originate_causes = env:getHeader("originate_causes");
|
||||
uuid = env:getHeader("uuid");
|
||||
domain_uuid = env:getHeader("domain_uuid");
|
||||
domain_name = env:getHeader("domain_name");
|
||||
sip_to_user = env:getHeader("sip_to_user");
|
||||
dialed_user = env:getHeader("dialed_user");
|
||||
missed_call_app = env:getHeader("missed_call_app");
|
||||
missed_call_data = env:getHeader("missed_call_data");
|
||||
call_direction = env:getHeader("call_direction");
|
||||
domain_uuid = env:getHeader("domain_uuid") or '';
|
||||
domain_name = env:getHeader("domain_name") or '';
|
||||
sip_to_user = env:getHeader("sip_to_user") or '';
|
||||
missed_call_app = env:getHeader("missed_call_app") or '';
|
||||
missed_call_data = env:getHeader("missed_call_data") or '';
|
||||
call_direction = env:getHeader("call_direction") or '';
|
||||
|
||||
-- get the Caller ID
|
||||
caller_id_name = env:getHeader("caller_id_name");
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
-- Gill Abada <gill.abada@gmail.com>
|
||||
|
||||
--include the log
|
||||
log = require "resources.functions.log".ring_group
|
||||
log = require "resources.functions.log".ring_group
|
||||
|
||||
--connect to the database
|
||||
local Database = require "resources.functions.database";
|
||||
|
|
@ -149,6 +149,7 @@
|
|||
sip_to_user = session:getVariable("sip_to_user");
|
||||
caller_id_name = session:getVariable("caller_id_name");
|
||||
caller_id_number = session:getVariable("caller_id_number");
|
||||
original_caller_id_number = session:getVariable("caller_id_number");
|
||||
outbound_caller_id_name = session:getVariable("outbound_caller_id_name");
|
||||
outbound_caller_id_number = session:getVariable("outbound_caller_id_number");
|
||||
effective_caller_id_name = session:getVariable("effective_caller_id_name");
|
||||
|
|
@ -200,9 +201,9 @@
|
|||
|
||||
--set hold music
|
||||
if (session:getVariable("hold_music") == nil) then
|
||||
hold_music = '';
|
||||
default_hold_music = '';
|
||||
else
|
||||
hold_music = ",hold_music="..session:getVariable("hold_music");
|
||||
default_hold_music = session:getVariable("hold_music");
|
||||
end
|
||||
|
||||
--prepare the api object
|
||||
|
|
@ -244,6 +245,10 @@
|
|||
missed_call_data = row["ring_group_missed_call_data"];
|
||||
end);
|
||||
|
||||
--create the settings object
|
||||
local Settings = require "resources.functions.lazy_settings";
|
||||
local settings = Settings.new(dbh, domain_name, domain_uuid);
|
||||
|
||||
--prepare the recording path
|
||||
record_path = recordings_dir .. "/" .. domain_name .. "/archive/" .. os.date("%Y/%b/%d");
|
||||
record_path = record_path:gsub("\\", "/");
|
||||
|
|
@ -355,7 +360,7 @@
|
|||
caller_id_name = caller_id_name:gsub([["]], """);
|
||||
caller_id_number = caller_id_number:gsub("'", "'");
|
||||
caller_id_number = caller_id_number:gsub([["]], """);
|
||||
|
||||
|
||||
--prepare the subject
|
||||
subject = subject:gsub("${caller_id_name}", caller_id_name);
|
||||
subject = subject:gsub("${caller_id_number}", caller_id_number);
|
||||
|
|
@ -492,8 +497,8 @@
|
|||
WHEN r.ring_group_strategy <> 'enterprise'
|
||||
THEN d.destination_delay
|
||||
END as destination_delay,
|
||||
r.ring_group_caller_id_name, r.ring_group_caller_id_number,
|
||||
r.ring_group_cid_name_prefix, r.ring_group_cid_number_prefix,
|
||||
r.ring_group_caller_id_name, r.ring_group_caller_id_number,
|
||||
r.ring_group_cid_name_prefix, r.ring_group_cid_number_prefix,
|
||||
r.ring_group_timeout_data, r.ring_group_ringback
|
||||
FROM
|
||||
v_ring_groups as r, v_ring_group_destinations as d
|
||||
|
|
@ -539,10 +544,16 @@
|
|||
cmd = "user_exists id ".. destination_number .." "..domain_name;
|
||||
user_exists = api:executeString(cmd);
|
||||
|
||||
--cmd = "user_exists id ".. destination_number .." "..leg_domain_name;
|
||||
--cmd = "user_exists id ".. destination_number .." "..domain_name;
|
||||
if (user_exists == "true") then
|
||||
--add user_exists true or false to the row array
|
||||
row['user_exists'] = "true";
|
||||
|
||||
--handle number alias
|
||||
cmd = "user_data ".. destination_number .."@" ..domain_name.." attr id";
|
||||
destination_number = api:executeString(cmd);
|
||||
row['destination_number'] = destination_number
|
||||
|
||||
--handle do_not_disturb
|
||||
cmd = "user_data ".. destination_number .."@" ..leg_domain_name.." var do_not_disturb";
|
||||
if (api:executeString(cmd) ~= "true") then
|
||||
|
|
@ -553,6 +564,7 @@
|
|||
--set the values
|
||||
external = "true";
|
||||
row['user_exists'] = "false";
|
||||
|
||||
--add the row to the destinations array
|
||||
destinations[x] = row;
|
||||
end
|
||||
|
|
@ -834,13 +846,25 @@
|
|||
cmd = "user_data ".. destination_number .."@"..domain_name.." var extension_uuid";
|
||||
extension_uuid = trim(api:executeString(cmd));
|
||||
|
||||
--get the hold music
|
||||
cmd = "user_data ".. destination_number .."@"..domain_name.." var hold_music";
|
||||
user_hold_music = trim(api:executeString(cmd));
|
||||
if (user_hold_music ~= nil) and (string.len(user_hold_music) > 0) then
|
||||
hold_music = user_hold_music;
|
||||
else
|
||||
hold_music = default_hold_music
|
||||
end
|
||||
|
||||
--send to user
|
||||
local dial_string_user = "[sip_invite_domain="..domain_name..",call_direction="..call_direction..",";
|
||||
dial_string_user = dial_string_user .. group_confirm..","..timeout_name.."="..destination_timeout..",";
|
||||
dial_string_user = dial_string_user .. delay_name.."="..destination_delay..",";
|
||||
dial_string_user = dial_string_user .. "dialed_extension=" .. row.destination_number .. ",";
|
||||
if (hold_music ~= nil) and (string.len(hold_music) > 0) then
|
||||
dial_string_user = dial_string_user .. "hold_music=" .. hold_music .. ",";
|
||||
end
|
||||
dial_string_user = dial_string_user .. "presence_id=" .. row.destination_number .. "@"..domain_name..",";
|
||||
dial_string_user = dial_string_user .. "extension_uuid="..extension_uuid..hold_music..record_session.."]";
|
||||
dial_string_user = dial_string_user .. "extension_uuid="..extension_uuid..record_session.."]";
|
||||
user_contact = api:executeString("sofia_contact */".. row.destination_number .."@" ..domain_name);
|
||||
if (user_contact ~= "error/user_not_registered") then
|
||||
dial_string = dial_string_user .. user_contact;
|
||||
|
|
@ -853,7 +877,7 @@
|
|||
dial_string = "[sip_invite_domain="..domain_name..",domain_name="..domain_name..",call_direction="..call_direction..","..group_confirm..""..timeout_name.."="..destination_timeout..","..delay_name.."="..destination_delay.."]" .. row.destination_number;
|
||||
else
|
||||
--external number
|
||||
-- have to double destination_delay here due a FS bug requiring a 50% delay value for internal externsions, but not external calls.
|
||||
-- have to double destination_delay here due a FS bug requiring a 50% delay value for internal externsions, but not external calls.
|
||||
--destination_delay = destination_delay * 2;
|
||||
|
||||
route_bridge = 'loopback/'..destination_number;
|
||||
|
|
@ -889,8 +913,16 @@
|
|||
caller_id = caller_id .. ",origination_caller_id_number="..ring_group_caller_id_number..",";
|
||||
end
|
||||
|
||||
--set the diversion header
|
||||
local diversion_enabled = settings:get('ring_group', 'diversion_enabled', 'boolean') or 'false';
|
||||
if (diversion_enabled == 'true' and original_caller_id_number ~= nil) then
|
||||
diversion_header = "sip_h_Diversion=<sip:"..original_caller_id_number.."@"..domain_name..">;reason=unconditional,";
|
||||
else
|
||||
diversion_header = '';
|
||||
end
|
||||
|
||||
--set the destination dial string
|
||||
dial_string = "[toll_allow=".. toll_allow ..",".. caller_id ..",sip_invite_domain="..domain_name..",domain_name="..domain_name..",domain_uuid="..domain_uuid..",call_direction="..call_direction..","..group_confirm..""..timeout_name.."="..destination_timeout..","..delay_name.."="..destination_delay.."]"..route_bridge
|
||||
dial_string = "["..diversion_header.."toll_allow=".. toll_allow ..",".. caller_id ..",sip_invite_domain="..domain_name..",domain_name="..domain_name..",domain_uuid="..domain_uuid..",call_direction="..call_direction..","..group_confirm..""..timeout_name.."="..destination_timeout..","..delay_name.."="..destination_delay.."]"..route_bridge
|
||||
end
|
||||
|
||||
--add a delimiter between destinations
|
||||
|
|
@ -1021,9 +1053,9 @@
|
|||
session:setVariable("presence_id", ring_group_extension.."@"..domain_name);
|
||||
send_presence(uuid, ring_group_extension.."@"..domain_name, "early");
|
||||
end
|
||||
|
||||
|
||||
session:execute("bridge", app_data);
|
||||
|
||||
|
||||
--set the presence to terminated and unset presence_id
|
||||
if (session:getVariable("ring_group_send_presence") == "true") then
|
||||
session:setVariable("presence_id", "");
|
||||
|
|
|
|||
|
|
@ -286,13 +286,13 @@
|
|||
--get the smtp from address and name
|
||||
smtp_from = settings:get('voicemail', 'smtp_from', 'text');
|
||||
smtp_from_name = settings:get('voicemail', 'smtp_from_name', 'text');
|
||||
if (smtp_from == nil) then
|
||||
if (smtp_from and string.len(smtp_from) > 2) then
|
||||
smtp_from = settings:get('email', 'smtp_from', 'text');
|
||||
end
|
||||
if (smtp_from_name == nil) then
|
||||
if (smtp_from_name and string.len(smtp_from_name) > 0) then
|
||||
smtp_from_name = settings:get('email', 'smtp_from_name', 'text');
|
||||
end
|
||||
if (smtp_from_name ~= nil) then
|
||||
if (smtp_from_name and string.len(smtp_from_name) > 0 and smtp_from and string.len(smtp_from) > 2) then
|
||||
smtp_from = smtp_from_name.."<"..smtp_from..">";
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -288,6 +288,8 @@
|
|||
ivr_menu_option_param = xml.sanitize(ivr_menu_option_param);
|
||||
ivr_menu_option_param = string.gsub(ivr_menu_option_param, "{accountcode}", "${accountcode}");
|
||||
ivr_menu_option_param = string.gsub(ivr_menu_option_param, "{uuid}", "${uuid}");
|
||||
ivr_menu_option_param = string.gsub(ivr_menu_option_param, "{caller_id_name}", "${caller_id_name}");
|
||||
ivr_menu_option_param = string.gsub(ivr_menu_option_param, "{caller_id_number}", "${caller_id_number}");
|
||||
|
||||
xml:append([[ <entry action="]] .. xml.sanitize(ivr_menu_option_action) .. [[" digits="]] .. ivr_menu_option_digits .. [[" param="]] .. ivr_menu_option_param .. [[" description="]] .. xml.sanitize(ivr_menu_option_description) .. [["/>]]);
|
||||
if (tonumber(ivr_menu_option_digits) and #ivr_menu_option_digits >= tonumber(direct_dial_digits_min)) then
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
-- xml_handler.lua
|
||||
-- Part of FusionPBX
|
||||
-- Copyright (C) 2013-2023 Mark J Crane <markjcrane@fusionpbx.com>
|
||||
-- Copyright (C) 2013-2024 Mark J Crane <markjcrane@fusionpbx.com>
|
||||
-- All rights reserved.
|
||||
--
|
||||
-- Redistribution and use in source and binary forms, with or without
|
||||
|
|
@ -155,6 +155,12 @@
|
|||
--exits the script if we didn't connect properly
|
||||
assert(dbh:connected());
|
||||
|
||||
-- set the start time of the query
|
||||
local start_time = os.time();
|
||||
|
||||
-- set the timeout value as needed
|
||||
local timeout_seconds = 10;
|
||||
|
||||
--get the hostname
|
||||
hostname = trim(api:execute("hostname", ""));
|
||||
|
||||
|
|
@ -167,6 +173,7 @@
|
|||
|
||||
--get the dialplan xml
|
||||
if (context_name == 'public' and dialplan_mode == 'single') then
|
||||
--get the single inbound destination dialplan xml from the database
|
||||
sql = "SELECT (SELECT domain_name FROM v_domains WHERE domain_uuid = p.domain_uuid) as domain_name, "
|
||||
sql = sql .. "(SELECT domain_enabled FROM v_domains WHERE domain_uuid = p.domain_uuid) as domain_enabled, p.dialplan_xml ";
|
||||
sql = sql .. "FROM v_dialplans AS p ";
|
||||
|
|
@ -193,6 +200,7 @@
|
|||
freeswitch.consoleLog("notice", "[dialplan] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
|
||||
end
|
||||
dbh:query(sql, params, function(row)
|
||||
dialplan_found = true;
|
||||
if (row.domain_uuid ~= nil) then
|
||||
domain_name = row.domain_name;
|
||||
else
|
||||
|
|
@ -202,28 +210,41 @@
|
|||
xml:append(row.dialplan_xml);
|
||||
end
|
||||
end);
|
||||
if (xml == nil) then
|
||||
--sanitize the destination if not numeric
|
||||
if (type(destination_number) == "string") then
|
||||
destination_number = destination_number:gsub("^%+", "");
|
||||
destination_number = tonumber(destination_number);
|
||||
if (type(tonumber(destination_number)) ~= "number") then
|
||||
destination_number = 'not numeric';
|
||||
|
||||
--handle not found
|
||||
if (dialplan_found == nil) then
|
||||
--check if the sql query timed out
|
||||
local current_time = os.time();
|
||||
local elapsed_time = current_time - start_time;
|
||||
if elapsed_time > timeout_seconds then
|
||||
--sql query timed out - unset the xml object to prevent the xml not found
|
||||
xml = nil;
|
||||
end
|
||||
|
||||
if (xml ~= nil) then
|
||||
--sanitize the destination if not numeric
|
||||
if (type(destination_number) == "string") then
|
||||
destination_number = destination_number:gsub("^%+", "");
|
||||
destination_number = tonumber(destination_number);
|
||||
if (type(tonumber(destination_number)) ~= "number") then
|
||||
destination_number = 'not numeric';
|
||||
end
|
||||
end
|
||||
if (type(destination_number) == "numeric") then
|
||||
destination_number = tostring(destination_number);
|
||||
end
|
||||
|
||||
--build 404 not found XML
|
||||
xml:append([[ <extension name="not-found" continue="false" uuid="9913df49-0757-414b-8cf9-bcae2fd81ae7">]]);
|
||||
xml:append([[ <condition field="" expression="">]]);
|
||||
xml:append([[ <action application="set" data="call_direction=inbound" inline="true"/>]]);
|
||||
xml:append([[ <action application="log" data="WARNING [inbound routes] 404 not found ${sip_network_ip} ]]..destination_number..[[" inline="true"/>]]);
|
||||
xml:append([[ </condition>]]);
|
||||
xml:append([[ </extension>]]);
|
||||
end
|
||||
if (type(destination_number) == "numeric") then
|
||||
destination_number = tostring(destination_number);
|
||||
end
|
||||
|
||||
--build 404 not found XML
|
||||
xml:append([[ <extension name="not-found" continue="false" uuid="9913df49-0757-414b-8cf9-bcae2fd81ae7">]]);
|
||||
xml:append([[ <condition field="" expression="">]]);
|
||||
xml:append([[ <action application="set" data="call_direction=inbound" inline="true"/>]]);
|
||||
xml:append([[ <action application="log" data="WARNING [inbound routes] 404 not found ${sip_network_ip} ]]..destination_number..[[" inline="true"/>]]);
|
||||
xml:append([[ </condition>]]);
|
||||
xml:append([[ </extension>]]);
|
||||
end
|
||||
else
|
||||
--get the domain diaplan xml from the database
|
||||
sql = "select dialplan_xml from v_dialplans as p ";
|
||||
if (context_name == "public" or string.match(context_name, "@")) then
|
||||
sql = sql .. "where p.dialplan_context = :call_context ";
|
||||
|
|
@ -238,26 +259,31 @@
|
|||
freeswitch.consoleLog("notice", "[dialplan] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n");
|
||||
end
|
||||
dbh:query(sql, params, function(row)
|
||||
dialplan_found = true;
|
||||
xml:append(row.dialplan_xml);
|
||||
end);
|
||||
end
|
||||
|
||||
--set the xml array and then concatenate the array to a string
|
||||
xml:append([[ </context>]]);
|
||||
xml:append([[ </section>]]);
|
||||
xml:append([[</document>]]);
|
||||
XML_STRING = xml:build();
|
||||
if (dialplan_found ~= nil and dialplan_found) then
|
||||
xml:append([[ </context>]]);
|
||||
xml:append([[ </section>]]);
|
||||
xml:append([[</document>]]);
|
||||
XML_STRING = xml:build();
|
||||
end
|
||||
|
||||
--close the database connection
|
||||
dbh:release();
|
||||
|
||||
--set the cache
|
||||
local ok, err = cache.set(dialplan_cache_key, XML_STRING, expire["dialplan"]);
|
||||
if debug["cache"] then
|
||||
if ok then
|
||||
freeswitch.consoleLog("notice", "[xml_handler] " .. dialplan_cache_key .. " stored in the cache\n");
|
||||
else
|
||||
freeswitch.consoleLog("warning", "[xml_handler] " .. dialplan_cache_key .. " can not be stored in the cache: " .. tostring(err) .. "\n");
|
||||
if (XML_STRING ~= nil) then
|
||||
local ok, err = cache.set(dialplan_cache_key, XML_STRING, expire["dialplan"]);
|
||||
if debug["cache"] then
|
||||
if ok then
|
||||
freeswitch.consoleLog("notice", "[xml_handler] " .. dialplan_cache_key .. " stored in the cache\n");
|
||||
else
|
||||
freeswitch.consoleLog("warning", "[xml_handler] " .. dialplan_cache_key .. " can not be stored in the cache: " .. tostring(err) .. "\n");
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@
|
|||
end
|
||||
|
||||
--get the hostname
|
||||
local hostname = trim(api:execute("switchname", ""));
|
||||
local hostname = trim(api:execute("hostname", ""));
|
||||
|
||||
-- redirect call to another box
|
||||
local function make_proxy_call(destination, call_hostname)
|
||||
|
|
@ -286,7 +286,7 @@
|
|||
params[param_name] = extension.."@"..domain_name;
|
||||
end
|
||||
sql = sql .. ") ";
|
||||
sql = sql .. "AND call_uuid IS NOT NULL ";
|
||||
--sql = sql .. "AND call_uuid IS NOT NULL ";
|
||||
sql = sql .. "ORDER BY created_epoch DESC LIMIT 1 ";
|
||||
if (debug["sql"]) then
|
||||
log.noticef("SQL: %s; params: %s", sql, json.encode(params));
|
||||
|
|
@ -294,14 +294,17 @@
|
|||
local is_child
|
||||
dbh:query(sql, params, function(row)
|
||||
--for key, val in pairs(row) do
|
||||
-- log.notice("row "..key.." "..val);
|
||||
-- log.notice("row "..key.." "..val);
|
||||
--end
|
||||
--log.notice("-----------------------");
|
||||
is_child = (row.uuid == row.call_uuid)
|
||||
uuid = row.call_uuid;
|
||||
uuid = row.uuid;
|
||||
if (row.call_uuid ~= nil) then
|
||||
uuid = row.call_uuid;
|
||||
end
|
||||
call_hostname = row.hostname;
|
||||
end);
|
||||
--log.notice("uuid: "..uuid);
|
||||
|
||||
--log.notice("call_hostname: "..call_hostname);
|
||||
if is_child then
|
||||
-- we need intercept `parent` call e.g. call in FIFO/CallCenter Queue
|
||||
|
|
@ -348,6 +351,7 @@
|
|||
if (uuid ~= nil) then
|
||||
if (session:getVariable("billmsec") == nil) then
|
||||
if (hostname == call_hostname) then
|
||||
log.noticef("intercept `%s`.", uuid)
|
||||
session:execute("intercept", uuid);
|
||||
else
|
||||
session:execute("export", "sip_h_X-intercept_uuid="..uuid);
|
||||
|
|
@ -385,3 +389,6 @@
|
|||
--cmd = "originate user/1007@voip.example.com &intercept("..uuid..")";
|
||||
--api = freeswitch.API();
|
||||
--result = api:executeString(cmd);
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -25,18 +25,19 @@
|
|||
|
||||
--exits the script if we didn't connect properly
|
||||
assert(dbh:connected());
|
||||
|
||||
--get the session variables
|
||||
sounds_dir = session:getVariable("sounds_dir");
|
||||
park_direction = session:getVariable("park_direction");
|
||||
uuid = session:getVariable("uuid");
|
||||
domain_name = session:getVariable("domain_name");
|
||||
park_extension = session:getVariable("park_extension");
|
||||
park_range = session:getVariable("park_range");
|
||||
park_announce = session:getVariable("park_announce");
|
||||
park_timeout_type = session:getVariable("park_timeout_type");
|
||||
park_timeout_destination = session:getVariable("park_timeout_destination");
|
||||
park_timeout_seconds = session:getVariable("park_timeout_seconds");
|
||||
park_music = session:getVariable("park_music");
|
||||
sounds_dir = session:getVariable("sounds_dir") or '';
|
||||
park_direction = session:getVariable("park_direction") or '';
|
||||
uuid = session:getVariable("uuid") or '';
|
||||
domain_name = session:getVariable("domain_name") or '';
|
||||
park_extension = session:getVariable("park_extension") or '';
|
||||
park_range = session:getVariable("park_range") or '';
|
||||
park_announce = session:getVariable("park_announce") or '';
|
||||
park_timeout_type = session:getVariable("park_timeout_type") or '';
|
||||
park_timeout_destination = session:getVariable("park_timeout_destination") or '';
|
||||
park_timeout_seconds = session:getVariable("park_timeout_seconds") or '';
|
||||
park_music = session:getVariable("park_music") or '';
|
||||
|
||||
--define the trim function
|
||||
require "resources.functions.trim";
|
||||
|
|
@ -188,9 +189,8 @@
|
|||
result = api:executeString(cmd);
|
||||
else
|
||||
context = session:getVariable("context");
|
||||
caller_id_number = session:getVariable("caller_id_number");
|
||||
dialed_extension = session:getVariable("dialed_extension");
|
||||
dialed_user = session:getVariable("dialed_user");
|
||||
caller_id_number = session:getVariable("caller_id_number") or '';
|
||||
dialed_extension = session:getVariable("dialed_extension") or '';
|
||||
cmd = "user_exists id ".. caller_id_number .." "..domain_name;
|
||||
if (api:executeString(cmd) == "true") then
|
||||
--bridge the current call to the call that is parked
|
||||
|
|
@ -221,7 +221,7 @@
|
|||
result = trim(api:executeString(cmd));
|
||||
else
|
||||
--transfer the call back to the callee
|
||||
session:execute("transfer", dialed_user .." XML "..context);
|
||||
session:execute("transfer", dialed_extension .." XML "..context);
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
The Initial Developer of the Original Code is
|
||||
Mark J Crane <markjcrane@fusionpbx.com>
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2023
|
||||
Portions created by the Initial Developer are Copyright (C) 2008-2024
|
||||
the Initial Developer. All Rights Reserved.
|
||||
|
||||
Contributor(s):
|
||||
|
|
@ -744,10 +744,10 @@
|
|||
$this->message_saved();
|
||||
|
||||
//set source folder path
|
||||
$path = $_SESSION['switch']['voicemail']['dir'].'/default/'.$_SESSION['domain_name'].'/'.$this->voicemail_id;
|
||||
$path = ($_SESSION['switch']['voicemail']['dir'] ?? $_SESSION['switch']['voicemail']).'/default/'.$_SESSION['domain_name'].'/'.$this->voicemail_id;
|
||||
|
||||
//prepare base64 content from db, if enabled
|
||||
if (!empty($_SESSION['voicemail']['storage_type']['text']) && $_SESSION['voicemail']['storage_type']['text'] == 'base64') {
|
||||
if ((!empty($_SESSION['voicemail']['storage_type']['text']) && $_SESSION['voicemail']['storage_type']['text'] == 'base64') || (!empty($_SESSION['voicemail']['storage_type']) && $_SESSION['voicemail']['storage_type'] == 'base64')) {
|
||||
$sql = "select message_base64 ";
|
||||
$sql .= "from ";
|
||||
$sql .= "v_voicemail_messages as m, ";
|
||||
|
|
@ -833,7 +833,7 @@
|
|||
fpassthru($fd);
|
||||
|
||||
//if base64, remove temp file
|
||||
if (!empty($_SESSION['voicemail']['storage_type']['text']) && $_SESSION['voicemail']['storage_type']['text'] == 'base64') {
|
||||
if ((!empty($_SESSION['voicemail']['storage_type']['text']) && $_SESSION['voicemail']['storage_type']['text'] == 'base64') || (!empty($_SESSION['voicemail']['storage_type']) && $_SESSION['voicemail']['storage_type'] == 'base64')) {
|
||||
@unlink($path.'/msg_'.$this->voicemail_message_uuid.'.'.$file_ext);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,6 +35,19 @@
|
|||
&& !empty($_REQUEST["uuid"]) && is_uuid($_REQUEST["uuid"])
|
||||
&& !empty($_REQUEST["voicemail_uuid"]) && is_uuid($_REQUEST["voicemail_uuid"])
|
||||
) {
|
||||
//if domain uuid not set (due to direct vm download using emailed link, etc), load settings into session based on domain in url
|
||||
if ((empty($_SESSION['domain_uuid']) || !is_uuid($_SESSION['domain_uuid'])) && !empty($_SERVER['HTTP_HOST'])) {
|
||||
$sql = 'select domain_uuid from v_domains where domain_name = :domain_name';
|
||||
$parameters['domain_name'] = $_SERVER['HTTP_HOST'];
|
||||
$database = new database;
|
||||
$domain_uuid = $database->select($sql, $parameters, 'column');
|
||||
if (is_uuid($domain_uuid)) {
|
||||
$settings = new settings(['domain_uuid'=>$domain_uuid]);
|
||||
$_SESSION = $settings->get();
|
||||
$_SESSION['domain_uuid'] = $domain_uuid;
|
||||
$_SESSION['domain_name'] = $_SERVER['HTTP_HOST'];
|
||||
}
|
||||
}
|
||||
$voicemail = new voicemail;
|
||||
$voicemail->domain_uuid = $_SESSION['domain_uuid'];
|
||||
$voicemail->type = $_REQUEST['t'] ?? null;
|
||||
|
|
|
|||
|
|
@ -413,19 +413,18 @@ if (!class_exists('xml_cdr')) {
|
|||
if (isset($xml->variables->effective_caller_id_name)) {
|
||||
$caller_id_name = urldecode($xml->variables->effective_caller_id_name);
|
||||
}
|
||||
|
||||
if (isset($xml->variables->origination_caller_id_name)) {
|
||||
$caller_id_name = urldecode($xml->variables->origination_caller_id_name);
|
||||
}
|
||||
|
||||
if (isset($xml->variables->origination_caller_id_number)) {
|
||||
$caller_id_number = urldecode($xml->variables->origination_caller_id_number);
|
||||
}
|
||||
|
||||
if (urldecode($call_direction) == 'outbound' && isset($xml->variables->effective_caller_id_number)) {
|
||||
$caller_id_number = urldecode($xml->variables->effective_caller_id_number);
|
||||
}
|
||||
|
||||
//if intercept is used then update use the last sent callee id name and number
|
||||
if (isset($xml->variables->last_app) && $xml->variables->last_app == 'intercept' && !empty($xml->variables->last_sent_callee_id_name)) {
|
||||
$caller_id_name = urldecode($xml->variables->last_sent_callee_id_name);
|
||||
}
|
||||
if (isset($xml->variables->last_app) && $xml->variables->last_app == 'intercept' && !empty($xml->variables->last_sent_callee_id_number)) {
|
||||
$caller_id_number = urldecode($xml->variables->last_sent_callee_id_number);
|
||||
}
|
||||
|
||||
//if the sip_from_domain and domain_name are not the same then original call direction was inbound
|
||||
//when an inbound call is forward the call_direction is set to inbound and then updated to outbound
|
||||
//use sip_from_display and sip_from_user to get the original caller ID instead of the updated caller ID info from the forward
|
||||
|
|
@ -479,6 +478,15 @@ if (!class_exists('xml_cdr')) {
|
|||
//marked as missed
|
||||
$missed_call = $xml->variables->missed_call;
|
||||
}
|
||||
if (isset($call_direction) && $call_direction == 'inbound'
|
||||
&& isset($xml->variables->hangup_cause)
|
||||
&& $xml->variables->hangup_cause == 'ORIGINATOR_CANCEL') {
|
||||
$missed_call = 'true';
|
||||
}
|
||||
if (isset($xml->variables->cc_side) && $xml->variables->cc_side == 'agent') {
|
||||
//call center
|
||||
$missed_call = 'false';
|
||||
}
|
||||
if (isset($xml->variables->fax_success)) {
|
||||
//fax server
|
||||
$missed_call = 'false';
|
||||
|
|
@ -491,25 +499,21 @@ if (!class_exists('xml_cdr')) {
|
|||
//ring group or multi destination bridge statement
|
||||
$missed_call = 'false';
|
||||
}
|
||||
if (isset($xml->variables->destination_number) && substr($xml->variables->destination_number, 0, 3) == '*99') {
|
||||
//voicemail
|
||||
$missed_call = 'true';
|
||||
}
|
||||
if (isset($xml->variables->voicemail_message) && $xml->variables->voicemail_message == true) {
|
||||
//voicemail
|
||||
if (isset($xml->variables->cc_side) && $xml->variables->cc_side == 'member'
|
||||
&& isset($xml->variables->cc_cause) && $xml->variables->cc_cause == 'cancel') {
|
||||
//call center
|
||||
$missed_call = 'true';
|
||||
}
|
||||
if (isset($xml->variables->billsec) && $xml->variables->billsec > 0) {
|
||||
//answered call
|
||||
$missed_call = 'false';
|
||||
}
|
||||
if (isset($xml->variables->cc_side) && $xml->variables->cc_side == 'agent') {
|
||||
//call center
|
||||
$missed_call = 'false';
|
||||
if (isset($xml->variables->destination_number) && substr($xml->variables->destination_number, 0, 3) == '*99') {
|
||||
//voicemail
|
||||
$missed_call = 'true';
|
||||
}
|
||||
if (isset($xml->variables->cc_side) && $xml->variables->cc_side == 'member'
|
||||
&& isset($xml->variables->cc_cause) && $xml->variables->cc_cause == 'cancel') {
|
||||
//call center
|
||||
if (isset($xml->variables->voicemail_answer_stamp) && !empty($xml->variables->voicemail_answer_stamp)) {
|
||||
//voicemail
|
||||
$missed_call = 'true';
|
||||
}
|
||||
|
||||
|
|
@ -571,6 +575,9 @@ if (!class_exists('xml_cdr')) {
|
|||
if (substr($destination_number, 0, 3) == '*99') {
|
||||
$status = 'voicemail';
|
||||
}
|
||||
if (isset($xml->variables->voicemail_message_seconds) && $xml->variables->voicemail_message_seconds > 0) {
|
||||
$status = 'voicemail';
|
||||
}
|
||||
if ($xml->variables->hangup_cause == 'ORIGINATOR_CANCEL') {
|
||||
$status = 'cancelled';
|
||||
}
|
||||
|
|
@ -675,7 +682,7 @@ if (!class_exists('xml_cdr')) {
|
|||
$this->array[$key]['last_arg'] = urldecode($xml->variables->last_arg);
|
||||
|
||||
//voicemail message success
|
||||
if ($xml->variables->voicemail_action == "save" && $xml->variables->voicemail_message_seconds > 0){
|
||||
if (!empty($xml->variables->voicemail_answer_stamp) && $xml->variables->voicemail_message_seconds > 0){
|
||||
$this->array[$key]['voicemail_message'] = "true";
|
||||
}
|
||||
else { //if ($xml->variables->voicemail_action == "save") {
|
||||
|
|
@ -1221,7 +1228,7 @@ if (!class_exists('xml_cdr')) {
|
|||
|
||||
//voicemails
|
||||
if ($app['application'] == 'voicemails') {
|
||||
$app['status'] = 'answered';
|
||||
$app['status'] = 'voicemail';
|
||||
}
|
||||
|
||||
//debug - add the callee_id_number to the end of the status
|
||||
|
|
@ -2001,4 +2008,3 @@ if (!class_exists('xml_cdr')) {
|
|||
}
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
|||
|
|
@ -28,10 +28,17 @@
|
|||
//if also viewing system status, show more recent calls (more room avaialble)
|
||||
$missed_limit = !empty($selected_blocks) && (is_array($selected_blocks) && in_array('counts', $selected_blocks)) ? 10 : 5;
|
||||
|
||||
//set the sql time format
|
||||
$sql_time_format = 'DD Mon HH12:MI am';
|
||||
if (!empty($_SESSION['domain']['time_format']['text'])) {
|
||||
$sql_time_format = $_SESSION['domain']['time_format']['text'] == '12h' ? "DD Mon HH12:MI am" : "DD Mon HH24:MI";
|
||||
}
|
||||
|
||||
//get the missed calls from call detail records
|
||||
$sql = "select \n";
|
||||
$sql .= " status, \n";
|
||||
$sql .= " direction, \n";
|
||||
$sql .= " to_char(timezone(:time_zone, start_stamp), '".(!empty($_SESSION['domain']['time_format']) && $_SESSION['domain']['time_format']['text'] == '12h' ? "DD Mon HH12:MI am" : "DD Mon HH24:MI")."') as start_date_time, \n";
|
||||
$sql .= " to_char(timezone(:time_zone, start_stamp), '".$sql_time_format."') as start_date_time, \n";
|
||||
$sql .= " caller_id_name, \n";
|
||||
$sql .= " caller_id_number, \n";
|
||||
$sql .= " answer_stamp \n";
|
||||
|
|
@ -43,7 +50,7 @@
|
|||
$sql .= " direction = 'inbound' \n";
|
||||
$sql .= " or direction = 'local' \n";
|
||||
$sql .= " ) \n";
|
||||
$sql .= " and (missed_call = true or bridge_uuid is null) ";
|
||||
$sql .= " and (status = 'missed') ";
|
||||
$sql .= " and hangup_cause <> 'LOSE_RACE' ";
|
||||
if (!permission_exists('xml_cdr_domain')) {
|
||||
if (!empty($assigned_extensions)) {
|
||||
|
|
@ -67,6 +74,8 @@
|
|||
$sql .= "and start_epoch > ".(time() - 86400)." \n";
|
||||
$sql .= "order by \n";
|
||||
$sql .= "start_epoch desc \n";
|
||||
$sql .= "limit :missed_limit \n";
|
||||
$parameters['missed_limit'] = $missed_limit;
|
||||
$parameters['time_zone'] = isset($_SESSION['domain']['time_zone']['name']) ? $_SESSION['domain']['time_zone']['name'] : date_default_timezone_get();
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
if (!isset($database)) { $database = new database; }
|
||||
|
|
@ -145,7 +154,6 @@
|
|||
) ? true : false;
|
||||
|
||||
foreach ($result as $index => $row) {
|
||||
if ($index + 1 > $missed_limit) { break; } //only show limit
|
||||
$start_date_time = str_replace('/0','/', ltrim($row['start_date_time'], '0'));
|
||||
if (!empty($_SESSION['domain']['time_format']) && $_SESSION['domain']['time_format']['text'] == '12h') {
|
||||
$start_date_time = str_replace(' 0',' ', $start_date_time);
|
||||
|
|
@ -168,7 +176,7 @@
|
|||
echo "<tr ".$tr_link.">\n";
|
||||
echo "<td valign='middle' class='".$row_style[$c]."' style='cursor: help; padding: 0 0 0 6px;'>\n";
|
||||
if ($theme_cdr_images_exist) {
|
||||
$call_result = ($row['answer_stamp'] != '') ? 'voicemail' : 'cancelled';
|
||||
$call_result = $row['status'];
|
||||
if (isset($row['direction'])) {
|
||||
echo " <img src='".PROJECT_PATH."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_".$row['direction']."_".$call_result.".png' width='16' style='border: none;' title='".$text['label-'.$row['direction']].": ".$text['label-'.$call_result]."'>\n";
|
||||
}
|
||||
|
|
@ -183,11 +191,11 @@
|
|||
unset($sql, $parameters, $result, $num_rows, $index, $row);
|
||||
|
||||
echo "</table>\n";
|
||||
echo "<span style='display: block; margin: 6px 0 7px 0;'><a href='".PROJECT_PATH."/app/xml_cdr/xml_cdr.php?call_result=missed'>".$text['label-view_all']."</a></span>\n";
|
||||
echo "<span style='display: block; margin: 6px 0 7px 0;'><a href='".PROJECT_PATH."/app/xml_cdr/xml_cdr.php?status=missed'>".$text['label-view_all']."</a></span>\n";
|
||||
echo "</div>";
|
||||
//$n++;
|
||||
|
||||
echo "<span class='hud_expander' onclick=\"$('#hud_missed_calls_details').slideToggle('fast');\"><span class='fas fa-ellipsis-h'></span></span>";
|
||||
echo "</div>\n";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -28,12 +28,19 @@
|
|||
//if also viewing system status, show more recent calls (more room avaialble)
|
||||
$recent_limit = isset($selected_blocks) && is_array($selected_blocks) && in_array('counts', $selected_blocks) ? 10 : 5;
|
||||
|
||||
//set the sql time format
|
||||
$sql_time_format = 'DD Mon HH12:MI am';
|
||||
if (!empty($_SESSION['domain']['time_format']['text'])) {
|
||||
$sql_time_format = $_SESSION['domain']['time_format']['text'] == '12h' ? "DD Mon HH12:MI am" : "DD Mon HH24:MI";
|
||||
}
|
||||
|
||||
//get the recent calls from call detail records
|
||||
$sql = "
|
||||
select
|
||||
status,
|
||||
direction,
|
||||
start_stamp,
|
||||
to_char(timezone(:time_zone, start_stamp), '".(!empty($_SESSION['domain']['time_format']) && $_SESSION['domain']['time_format']['text'] == '12h' ? "DD Mon HH12:MI am" : "DD Mon HH24:MI")."') as start_date_time,
|
||||
to_char(timezone(:time_zone, start_stamp), '".$sql_time_format."') as start_date_time,
|
||||
caller_id_name,
|
||||
caller_id_number,
|
||||
destination_number,
|
||||
|
|
@ -49,13 +56,7 @@
|
|||
$x = 0;
|
||||
foreach ($assigned_extensions as $assigned_extension_uuid => $assigned_extension) {
|
||||
$sql_where_array[] = "extension_uuid = :extension_uuid_".$x;
|
||||
$sql_where_array[] = "caller_id_number = :caller_id_number_".$x;
|
||||
$sql_where_array[] = "destination_number = :destination_number_1_".$x;
|
||||
$sql_where_array[] = "destination_number = :destination_number_2_".$x;
|
||||
$parameters['extension_uuid_'.$x] = $assigned_extension_uuid;
|
||||
$parameters['caller_id_number_'.$x] = $assigned_extension;
|
||||
$parameters['destination_number_1_'.$x] = $assigned_extension;
|
||||
$parameters['destination_number_2_'.$x] = '*99'.$assigned_extension;
|
||||
$x++;
|
||||
}
|
||||
if (!empty($sql_where_array)) {
|
||||
|
|
@ -67,10 +68,11 @@
|
|||
$sql .= "and false \n";
|
||||
}
|
||||
}
|
||||
$sql .= "
|
||||
and start_epoch > ".(time() - 86400)."
|
||||
order by
|
||||
start_epoch desc";
|
||||
$sql .= "and hangup_cause <> 'LOSE_RACE' ";
|
||||
$sql .= "and start_epoch > ".(time() - 86400)." ";
|
||||
$sql .= "order by start_epoch desc ";
|
||||
$sql .= "limit :recent_limit ";
|
||||
$parameters['recent_limit'] = $recent_limit;
|
||||
$parameters['time_zone'] = isset($_SESSION['domain']['time_zone']['name']) ? $_SESSION['domain']['time_zone']['name'] : date_default_timezone_get();
|
||||
$parameters['domain_uuid'] = $_SESSION['domain_uuid'];
|
||||
if (!isset($database)) { $database = new database; }
|
||||
|
|
@ -156,7 +158,6 @@
|
|||
) ? true : false;
|
||||
|
||||
foreach ($result as $index => $row) {
|
||||
if ($index + 1 > $recent_limit) { break; } //only show limit
|
||||
$start_date_time = str_replace('/0','/', ltrim($row['start_date_time'], '0'));
|
||||
if (!empty($_SESSION['domain']['time_format']) && $_SESSION['domain']['time_format']['text'] == '12h') {
|
||||
$start_date_time = str_replace(' 0',' ', $start_date_time);
|
||||
|
|
@ -192,17 +193,7 @@
|
|||
//determine call result and appropriate icon
|
||||
echo "<td valign='middle' class='".$row_style[$c]."' style='cursor: help; padding: 0 0 0 6px;'>\n";
|
||||
if ($theme_cdr_images_exist) {
|
||||
if ($row['direction'] == 'inbound' || $row['direction'] == 'local') {
|
||||
if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; }
|
||||
else if ($row['answer_stamp'] != '' && $row['bridge_uuid'] == '') { $call_result = 'voicemail'; }
|
||||
else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] == '' && $row['sip_hangup_disposition'] != 'send_refuse') { $call_result = 'cancelled'; }
|
||||
else { $call_result = 'failed'; }
|
||||
}
|
||||
else if ($row['direction'] == 'outbound') {
|
||||
if ($row['answer_stamp'] != '' && $row['bridge_uuid'] != '') { $call_result = 'answered'; }
|
||||
else if ($row['answer_stamp'] == '' && $row['bridge_uuid'] != '') { $call_result = 'cancelled'; }
|
||||
else { $call_result = 'failed'; }
|
||||
}
|
||||
$call_result = $row['status'];
|
||||
if (isset($row['direction'])) {
|
||||
echo "<img src='".PROJECT_PATH."/themes/".$_SESSION['domain']['template']['name']."/images/icon_cdr_".$row['direction']."_".$call_result.".png' width='16' style='border: none;' title='".$text['label-'.$row['direction']].": ".$text['label-'.$call_result]."'>\n";
|
||||
}
|
||||
|
|
@ -221,9 +212,8 @@
|
|||
echo "</table>\n";
|
||||
echo "<span style='display: block; margin: 6px 0 7px 0;'><a href='".PROJECT_PATH."/app/xml_cdr/xml_cdr.php'>".$text['label-view_all']."</a></span>\n";
|
||||
echo "</div>";
|
||||
//$n++;
|
||||
|
||||
echo "<span class='hud_expander' onclick=\"$('#hud_recent_calls_details').slideToggle('fast');\"><span class='fas fa-ellipsis-h'></span></span>";
|
||||
echo "</div>\n";
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -751,8 +751,8 @@
|
|||
$hangup_cause = strtolower($hangup_cause);
|
||||
$hangup_cause = ucwords($hangup_cause);
|
||||
|
||||
//if call cancelled, show the ring time, not the bill time.
|
||||
$seconds = $row['hangup_cause'] == "ORIGINATOR_CANCEL" ? $row['duration'] : round(($row['billmsec'] / 1000), 0, PHP_ROUND_HALF_UP);
|
||||
//get the duration if null use 0
|
||||
$duration = $row['duration'] ?? 0;
|
||||
|
||||
//determine recording properties
|
||||
if (!empty($row['record_path']) && !empty($row['record_name']) && permission_exists('xml_cdr_recording') && (permission_exists('xml_cdr_recording_play') || permission_exists('xml_cdr_recording_download'))) {
|
||||
|
|
@ -914,7 +914,7 @@
|
|||
}
|
||||
//duration
|
||||
if (permission_exists('xml_cdr_duration')) {
|
||||
$content .= " <td class='middle center hide-sm-dn'>".gmdate("G:i:s", $seconds)."</td>\n";
|
||||
$content .= " <td class='middle center hide-sm-dn'>".gmdate("G:i:s", $duration)."</td>\n";
|
||||
}
|
||||
//call result/status
|
||||
if (permission_exists("xml_cdr_status")) {
|
||||
|
|
|
|||
|
|
@ -229,7 +229,7 @@
|
|||
|
||||
//prepare to page the results
|
||||
//$rows_per_page = ($_SESSION['domain']['paging']['numeric'] != '') ? $_SESSION['domain']['paging']['numeric'] : 50; //set on the page that includes this page
|
||||
if (empty($_GET['page']) || (!empty($_GET['page']) && !is_numeric($_GET['page']))) {
|
||||
if (empty($_GET['page']) || (!empty($_GET['page']) && !is_numeric($_GET['page']))) {
|
||||
$_GET['page'] = 0;
|
||||
}
|
||||
//ensure page is within bounds of integer
|
||||
|
|
@ -245,6 +245,12 @@
|
|||
}
|
||||
$parameters['time_zone'] = $time_zone;
|
||||
|
||||
//set the sql time format
|
||||
$sql_time_format = 'HH12:MI am';
|
||||
if (!empty($_SESSION['domain']['time_format']['text'])) {
|
||||
$sql_time_format = $_SESSION['domain']['time_format']['text'] == '12h' ? "HH12:MI am" : "HH24:MI";
|
||||
}
|
||||
|
||||
//get the results from the db
|
||||
$sql = "select \n";
|
||||
$sql .= "c.domain_uuid, \n";
|
||||
|
|
@ -253,7 +259,7 @@
|
|||
$sql .= "c.start_stamp, \n";
|
||||
$sql .= "c.end_stamp, \n";
|
||||
$sql .= "to_char(timezone(:time_zone, start_stamp), 'DD Mon YYYY') as start_date_formatted, \n";
|
||||
$sql .= "to_char(timezone(:time_zone, start_stamp), 'HH12:MI:SS am') as start_time_formatted, \n";
|
||||
$sql .= "to_char(timezone(:time_zone, start_stamp), '".$sql_time_format."') as start_time_formatted, \n";
|
||||
$sql .= "c.start_epoch, \n";
|
||||
$sql .= "c.hangup_cause, \n";
|
||||
$sql .= "c.billsec as duration, \n";
|
||||
|
|
@ -476,7 +482,7 @@
|
|||
$sql .= "and hangup_cause != 'LOSE_RACE' \n";
|
||||
}
|
||||
if (!empty($status)) {
|
||||
$sql .= "and status >= :status \n";
|
||||
$sql .= "and status = :status \n";
|
||||
$parameters['status'] = $status;
|
||||
}
|
||||
if (!empty($xml_cdr_uuid)) {
|
||||
|
|
|
|||
|
|
@ -75,9 +75,6 @@ class plugin_database {
|
|||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//create token
|
||||
//$object = new token;
|
||||
//$token = $object->create('login');
|
||||
|
|
@ -90,7 +87,7 @@ class plugin_database {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//add translations
|
||||
|
|
|
|||
|
|
@ -58,18 +58,10 @@ class plugin_email {
|
|||
$settings['theme']['login_logo_height'] = !empty($_SESSION['theme']['login_logo_height']['text']) ? $_SESSION['theme']['login_logo_height']['text'] : 'auto; max-height: 300px';
|
||||
$settings['theme']['message_delay'] = isset($_SESSION['theme']['message_delay']) ? 1000 * (float) $_SESSION['theme']['message_delay'] : 3000;
|
||||
|
||||
//set a default template
|
||||
$_SESSION['domain']['template']['name'] = 'default';
|
||||
$_SESSION['theme']['menu_brand_image']['text'] = PROJECT_PATH.'/themes/default/images/logo.png';
|
||||
$_SESSION['theme']['menu_brand_type']['text'] = 'image';
|
||||
|
||||
//get the domain
|
||||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//use the session username
|
||||
if (isset($_SESSION['username'])) {
|
||||
$_POST['username'] = $_SESSION['username'];
|
||||
|
|
@ -87,7 +79,7 @@ class plugin_email {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//assign default values to the template
|
||||
|
|
@ -312,18 +304,10 @@ class plugin_email {
|
|||
//echo $email_response."<br />\n";
|
||||
//echo $email_error."<br />\n";
|
||||
|
||||
//set a default template
|
||||
$_SESSION['domain']['template']['name'] = 'default';
|
||||
$_SESSION['theme']['menu_brand_image']['text'] = PROJECT_PATH.'/themes/default/images/logo.png';
|
||||
$_SESSION['theme']['menu_brand_type']['text'] = 'image';
|
||||
|
||||
//get the domain
|
||||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//create token
|
||||
//$object = new token;
|
||||
//$token = $object->create('login');
|
||||
|
|
@ -336,7 +320,7 @@ class plugin_email {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//assign default values to the template
|
||||
|
|
|
|||
|
|
@ -38,9 +38,6 @@ class plugin_ldap {
|
|||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//create token
|
||||
//$object = new token;
|
||||
//$token = $object->create('login');
|
||||
|
|
@ -53,7 +50,7 @@ class plugin_ldap {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//add translations
|
||||
|
|
|
|||
|
|
@ -70,18 +70,10 @@ class plugin_totp {
|
|||
//request the username
|
||||
if (!$this->username && !isset($_POST['authentication_code'])) {
|
||||
|
||||
//set a default template
|
||||
$_SESSION['domain']['template']['name'] = 'default';
|
||||
$_SESSION['theme']['menu_brand_image']['text'] = PROJECT_PATH.'/themes/default/images/logo.png';
|
||||
$_SESSION['theme']['menu_brand_type']['text'] = 'image';
|
||||
|
||||
//get the domain
|
||||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//create token
|
||||
//$object = new token;
|
||||
//$token = $object->create('login');
|
||||
|
|
@ -94,7 +86,7 @@ class plugin_totp {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//assign default values to the template
|
||||
|
|
@ -180,18 +172,10 @@ class plugin_totp {
|
|||
$_SESSION["user_email"] = $row['user_email'];
|
||||
$_SESSION["contact_uuid"] = $row["contact_uuid"];
|
||||
|
||||
//set a default template
|
||||
$_SESSION['domain']['template']['name'] = 'default';
|
||||
$_SESSION['theme']['menu_brand_image']['text'] = PROJECT_PATH.'/themes/default/images/logo.png';
|
||||
$_SESSION['theme']['menu_brand_type']['text'] = 'image';
|
||||
|
||||
//get the domain
|
||||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//create token
|
||||
//$object = new token;
|
||||
//$token = $object->create('login');
|
||||
|
|
@ -204,7 +188,7 @@ class plugin_totp {
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/authentication/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//assign values to the template
|
||||
|
|
|
|||
|
|
@ -350,14 +350,11 @@
|
|||
$domain_array = explode(":", $_SERVER["HTTP_HOST"]);
|
||||
$domain_name = $domain_array[0];
|
||||
|
||||
//temp directory
|
||||
$_SESSION['server']['temp']['dir'] = '/tmp';
|
||||
|
||||
//initialize a template object
|
||||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER["DOCUMENT_ROOT"].PROJECT_PATH.'/core/install/resources/views/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'];
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//assign default values to the template
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ if (!class_exists('software')) {
|
|||
* version
|
||||
*/
|
||||
public static function version() {
|
||||
return '5.2.0';
|
||||
return '5.2.4';
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -2329,6 +2329,30 @@ $text['label-answered']['zh-cn'] = "回答";
|
|||
$text['label-answered']['ja-jp'] = "答えた";
|
||||
$text['label-answered']['ko-kr'] = "대답했다";
|
||||
|
||||
$text['label-no_answer']['en-us'] = "No Answer";
|
||||
$text['label-no_answer']['en-gb'] = "No Answer";
|
||||
$text['label-no_answer']['ar-eg'] = "لا اجابة";
|
||||
$text['label-no_answer']['de-at'] = "Keine Antwort";
|
||||
$text['label-no_answer']['de-ch'] = "Keine Antwort";
|
||||
$text['label-no_answer']['de-de'] = "Keine Antwort";
|
||||
$text['label-no_answer']['es-cl'] = "Sin respuesta";
|
||||
$text['label-no_answer']['es-mx'] = "Sin respuesta";
|
||||
$text['label-no_answer']['fr-ca'] = "Pas de réponse";
|
||||
$text['label-no_answer']['fr-fr'] = "Pas de réponse";
|
||||
$text['label-no_answer']['he-il'] = "אין תשובה";
|
||||
$text['label-no_answer']['it-it'] = "Nessuna risposta";
|
||||
$text['label-no_answer']['nl-nl'] = "Geen antwoord";
|
||||
$text['label-no_answer']['pl-pl'] = "Brak odpowiedzi";
|
||||
$text['label-no_answer']['pt-br'] = "Sem resposta";
|
||||
$text['label-no_answer']['pt-pt'] = "Sem resposta";
|
||||
$text['label-no_answer']['ro-ro'] = "Nici un raspuns";
|
||||
$text['label-no_answer']['ru-ru'] = "Нет ответа";
|
||||
$text['label-no_answer']['sv-se'] = "Inget svar";
|
||||
$text['label-no_answer']['uk-ua'] = "Без відповіді";
|
||||
$text['label-no_answer']['zh-cn'] = "没有答案";
|
||||
$text['label-no_answer']['ja-jp'] = "答えはありません";
|
||||
$text['label-no_answer']['ko-kr'] = "답변 없음";
|
||||
|
||||
$text['label-active_users']['en-us'] = "Active Users";
|
||||
$text['label-active_users']['en-gb'] = "Active Users";
|
||||
$text['label-active_users']['ar-eg'] = "الأعضاء النشيطين";
|
||||
|
|
|
|||
|
|
@ -44,12 +44,12 @@
|
|||
}
|
||||
|
||||
//regenerate sessions to avoid session id attacks such as session fixation
|
||||
if (array_key_exists('security',$_SESSION) && $_SESSION['security']['session_rotate']['boolean'] == "true") {
|
||||
if (isset($_SESSION['authorized']) && $_SESSION['authorized']) {
|
||||
$_SESSION['session']['last_activity'] = time();
|
||||
if (!isset($_SESSION['session']['created'])) {
|
||||
$_SESSION['session']['created'] = time();
|
||||
} else if (time() - $_SESSION['session']['created'] > 28800) {
|
||||
// session started more than 8 hours ago
|
||||
} elseif (time() - $_SESSION['session']['created'] > 28800) {
|
||||
//session started more than 8 hours ago
|
||||
session_regenerate_id(true); // rotate the session id
|
||||
$_SESSION['session']['created'] = time(); // update creation time
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,20 +1,42 @@
|
|||
<?php
|
||||
|
||||
|
||||
/**
|
||||
* cache class provides an abstracted cache
|
||||
*
|
||||
* @method string set
|
||||
* @method string get
|
||||
* @method string delete
|
||||
* @method string flush
|
||||
* Provides an abstracted cache
|
||||
*/
|
||||
class cache {
|
||||
private $settings;
|
||||
private $syslog;
|
||||
private $location;
|
||||
private $method;
|
||||
|
||||
/**
|
||||
* Called when the object is created
|
||||
*/
|
||||
public function __construct() {
|
||||
//place holder
|
||||
public function __construct(settings $settings = null) {
|
||||
//set defaults
|
||||
if ($settings === null) {
|
||||
$settings = new settings();
|
||||
}
|
||||
|
||||
//get the settings
|
||||
$this->settings = $settings;
|
||||
$this->method = $this->setting('method');
|
||||
$this->syslog = $this->setting('syslog');
|
||||
$this->location = $this->setting('location');
|
||||
if (empty($this->method)) {
|
||||
$this->method = 'file';
|
||||
}
|
||||
if (empty($this->syslog)) {
|
||||
$this->syslog = 'false';
|
||||
}
|
||||
if (empty($this->location)) {
|
||||
$this->location = '/var/cache/fusionpbx';
|
||||
}
|
||||
}
|
||||
|
||||
private function setting($subcategory) {
|
||||
return $this->settings->get('cache', $subcategory);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -28,7 +50,7 @@ class cache {
|
|||
$key = str_replace(":", ".", $key);
|
||||
|
||||
//save to memcache
|
||||
if ($_SESSION['cache']['method']['text'] == "memcache") {
|
||||
if ($this->method === "memcache") {
|
||||
//connect to event socket
|
||||
$esl = event_socket::create();
|
||||
if ($esl === false) {
|
||||
|
|
@ -42,8 +64,8 @@ class cache {
|
|||
}
|
||||
|
||||
//save to the file cache
|
||||
if ($_SESSION['cache']['method']['text'] == "file") {
|
||||
$result = file_put_contents($_SESSION['cache']['location']['text'] . "/" . $key, $value);
|
||||
if ($this->method === "file") {
|
||||
$result = file_put_contents($this->location . "/" . $key, $value);
|
||||
}
|
||||
|
||||
//return result
|
||||
|
|
@ -59,8 +81,8 @@ class cache {
|
|||
//change the delimiter
|
||||
$key = str_replace(":", ".", $key);
|
||||
|
||||
//cache method memcache
|
||||
if ($_SESSION['cache']['method']['text'] == "memcache") {
|
||||
//cache method memcache
|
||||
if ($this->method === "memcache") {
|
||||
// connect to event socket
|
||||
$esl = event_socket::create();
|
||||
if (!$esl->is_connected()) {
|
||||
|
|
@ -76,9 +98,9 @@ class cache {
|
|||
}
|
||||
|
||||
//get the file cache
|
||||
if ($_SESSION['cache']['method']['text'] == "file") {
|
||||
if (file_exists($_SESSION['cache']['location']['text'] . "/" . $key)) {
|
||||
$result = file_get_contents($_SESSION['cache']['location']['text'] . "/" . $key);
|
||||
if ($this->method === "file") {
|
||||
if (file_exists($this->location . "/" . $key)) {
|
||||
$result = file_get_contents($this->location . "/" . $key);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -93,14 +115,14 @@ class cache {
|
|||
public function delete($key) {
|
||||
|
||||
//debug information
|
||||
if (isset($_SESSION['cache']['syslog']['boolean']) && $_SESSION['cache']['syslog']['boolean'] == "true") {
|
||||
if ($this->syslog === "true") {
|
||||
openlog("fusionpbx", LOG_PID | LOG_PERROR, LOG_USER);
|
||||
syslog(LOG_WARNING, "debug: cache: [key: ".$key.", script: ".$_SERVER['SCRIPT_NAME'].", line: ".__line__."]");
|
||||
closelog();
|
||||
}
|
||||
|
||||
//cache method memcache
|
||||
if (!empty($_SESSION['cache']['method']['text']) && $_SESSION['cache']['method']['text'] == "memcache") {
|
||||
//cache method memcache
|
||||
if ($this->method === "memcache") {
|
||||
//connect to event socket
|
||||
$esl = event_socket::create();
|
||||
if ($esl === false) {
|
||||
|
|
@ -122,7 +144,7 @@ class cache {
|
|||
}
|
||||
|
||||
//cache method file
|
||||
if (!empty($_SESSION['cache']['method']['text']) && $_SESSION['cache']['method']['text'] == "file") {
|
||||
if ($this->method === "file") {
|
||||
//change the delimiter
|
||||
$key = str_replace(":", ".", $key);
|
||||
|
||||
|
|
@ -141,7 +163,7 @@ class cache {
|
|||
event_socket::command($event);
|
||||
|
||||
//remove the local files
|
||||
foreach (glob($_SESSION['cache']['location']['text'] . "/" . $key) as $file) {
|
||||
foreach (glob($this->location . "/" . $key) as $file) {
|
||||
if (file_exists($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
|
|
@ -159,14 +181,14 @@ class cache {
|
|||
public function flush() {
|
||||
|
||||
//debug information
|
||||
if (isset($_SESSION['cache']['syslog']['boolean']) && $_SESSION['cache']['syslog']['boolean'] == "true") {
|
||||
if ($this->syslog === "true") {
|
||||
openlog("fusionpbx", LOG_PID | LOG_PERROR, LOG_USER);
|
||||
syslog(LOG_WARNING, "debug: cache: [flush: all, script: ".$_SERVER['SCRIPT_NAME'].", line: ".__line__."]");
|
||||
closelog();
|
||||
}
|
||||
|
||||
//cache method memcache
|
||||
if ($_SESSION['cache']['method']['text'] == "memcache") {
|
||||
//cache method memcache
|
||||
if ($this->method === "memcache") {
|
||||
// connect to event socket
|
||||
$esl = event_socket::create();
|
||||
if ($esl === false) {
|
||||
|
|
@ -187,8 +209,8 @@ class cache {
|
|||
|
||||
}
|
||||
|
||||
//cache method file
|
||||
if ($_SESSION['cache']['method']['text'] == "file") {
|
||||
//cache method file
|
||||
if ($this->method === "file") {
|
||||
// connect to event socket
|
||||
$esl = event_socket::create();
|
||||
if ($esl === false) {
|
||||
|
|
@ -204,7 +226,7 @@ class cache {
|
|||
event_socket::command($event);
|
||||
|
||||
//remove the cache
|
||||
recursive_delete($_SESSION['cache']['location']['text']);
|
||||
recursive_delete($this->location);
|
||||
|
||||
//set message
|
||||
$result = '+OK cache flushed';
|
||||
|
|
|
|||
|
|
@ -894,6 +894,21 @@ if (!class_exists('schema')) {
|
|||
unset ($sql_update, $sql);
|
||||
}
|
||||
|
||||
//refresh each postgresql subscription with its publication
|
||||
if ($db_type == "pgsql") {
|
||||
//get the list of postgresql subscriptions
|
||||
$sql = "select subname from pg_subscription; ";
|
||||
$pg_subscriptions = $this->database->select($sql, null, 'all');
|
||||
unset($sql, $parameters);
|
||||
|
||||
//refresh each subscription publication
|
||||
foreach ($pg_subscriptions as $row) {
|
||||
$sql = "ALTER SUBSCRIPTION ".$row['subname']." REFRESH PUBLICATION;";
|
||||
$response .= $sql;
|
||||
$this->database->execute($sql);
|
||||
}
|
||||
}
|
||||
|
||||
//handle response
|
||||
//if ($output == "echo") {
|
||||
// echo $response;
|
||||
|
|
@ -914,4 +929,3 @@ if (!class_exists('schema')) {
|
|||
//print_r($result_array);
|
||||
|
||||
?>
|
||||
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
$view = new template();
|
||||
$view->engine = 'smarty';
|
||||
$view->template_dir = $_SERVER['DOCUMENT_ROOT'].PROJECT_PATH.'/themes/'.$_SESSION['domain']['template']['name'].'/';
|
||||
$view->cache_dir = $_SESSION['server']['temp']['dir'] ?: sys_get_temp_dir();
|
||||
$view->cache_dir = sys_get_temp_dir();
|
||||
$view->init();
|
||||
|
||||
//add multi-lingual support
|
||||
|
|
|
|||
|
|
@ -278,7 +278,7 @@
|
|||
//set default false
|
||||
$result = false;
|
||||
//search for the permission
|
||||
if (count($_SESSION["groups"]) > 0) {
|
||||
if (isset($_SESSION["groups"]) && count($_SESSION["groups"]) > 0) {
|
||||
foreach ($_SESSION["groups"] as $row) {
|
||||
if ($row['group_name'] == $group) {
|
||||
$result = true;
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -903,21 +907,21 @@
|
|||
|
||||
<!-- DND Call Feature On -->
|
||||
<!-- Pvalue P2344 -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"></item>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<!-- Pvalue P2345 -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"></item>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - On -->
|
||||
<!-- # String -->
|
||||
<!-- Pvalue P26013 -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"></item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - Off -->
|
||||
<!-- # String -->
|
||||
<!-- Pvalue P26014 -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"></item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
@ -4510,7 +4546,7 @@
|
|||
<!-- # MulticastListenAddress (25), KeypadLock (26), GDSOpenDoor (27), EventListPresence (28), Provision (29) -->
|
||||
<!-- # Phonebook(30), Paging(33) -->
|
||||
<!-- Pvalue P323 -->
|
||||
<item name="pks.mpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<item name="pks.mpk.{$row.device_key_id}.keyMode">{$key_types[$keys.memory.$line.device_key_type]}</item>
|
||||
|
||||
<!-- # Account. Account1, Account2, Account3, Account4 -->
|
||||
<!-- Pvalue P301 -->
|
||||
|
|
@ -4699,7 +4735,7 @@
|
|||
<!-- # MulticastListenAddress (25), KeypadLock (26), GDSOpenDoor (27), EventListPresence (28), Provision (29) -->
|
||||
<!-- # Phonebook(30), Paging(33) -->
|
||||
<!-- Pvalue P23000 -->
|
||||
<item name="pks.ext.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<item name="pks.ext.{$row.device_key_id}.keyMode">{$key_types[$keys.expansion.$line.device_key_type]}</item>
|
||||
|
||||
<!-- # Account. Account1, Account2, Account3, Account4, Account5, Account6 -->
|
||||
<!-- Pvalue P23001 -->
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
|
|||
|
|
@ -138,7 +138,11 @@
|
|||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
<!-- Pvalue P52 -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -173,7 +177,7 @@
|
|||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<!-- Pvalue P32 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -784,7 +788,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1489 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<!-- Pvalue P1490 -->
|
||||
|
|
@ -792,7 +796,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1491 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<!-- Pvalue P1492 -->
|
||||
|
|
@ -800,7 +804,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P1493 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<!-- Pvalue P6716 -->
|
||||
|
|
@ -808,7 +812,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6717 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<!-- Pvalue P6718 -->
|
||||
|
|
@ -816,7 +820,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6719 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<!-- Pvalue P6720 -->
|
||||
|
|
@ -824,7 +828,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P6721 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<!-- Pvalue P26064 -->
|
||||
|
|
@ -832,7 +836,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26065 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<!-- Pvalue P26066 -->
|
||||
|
|
@ -840,7 +844,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26067 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<!-- Pvalue P26068 -->
|
||||
|
|
@ -848,7 +852,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26069 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<!-- Pvalue P26096 -->
|
||||
|
|
@ -856,7 +860,7 @@
|
|||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<!-- Pvalue P26097 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -1201,13 +1205,13 @@
|
|||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<!-- Pvalue P22174 -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if isset($grandstream_lan_port_vlan)}Yes{else}No{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<!-- Pvalue P51 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -1217,11 +1221,15 @@
|
|||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<!-- Pvalue P1348 -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<!-- Pvalue P229 -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<!-- Pvalue P230 -->
|
||||
|
|
@ -2498,7 +2506,11 @@
|
|||
|
||||
<!-- STUN Server -->
|
||||
<!-- Pvalue P76 -->
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -3674,15 +3686,27 @@
|
|||
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
<!-- Pvalue P1312 -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P1487 -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
<!-- Pvalue P6779 -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -3701,11 +3725,19 @@
|
|||
|
||||
<!-- # Headset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1301 -->
|
||||
<item name="audio.headset.txGain">0</item>
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
<!-- Pvalue P1302 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset Noise Shield 2.0. -->
|
||||
<!-- No - Disable, HighShielding - 1, SoftShielding - 2 -->
|
||||
|
|
@ -3993,7 +4025,11 @@
|
|||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
<!-- Pvalue P2918 -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Use Programmable Keys in Screensaver. 0 - No, 1 - Yes, 2 - LED only -->
|
||||
<!-- Pvalue P22363 -->
|
||||
|
|
@ -4001,7 +4037,7 @@
|
|||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<!-- Pvalue P6759 -->
|
||||
<item name="lcd.screensaver.source"></item>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<!-- Pvalue P8441 -->
|
||||
|
|
|
|||
|
|
@ -684,18 +684,18 @@
|
|||
<item name="account.{$line}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$line}.featureCodes.dndOn"></item>
|
||||
<item name="account.{$line}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$line}.featureCodes.dndOff"></item>
|
||||
<item name="account.{$line}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$line}.featureCodes.callForwardUnconditionallyOn"></item>
|
||||
<item name="account.{$line}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$line}.featureCodes.callForwardUnconditionallyOff"></item>
|
||||
<item name="account.{$line}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Unconditionally (All) - Target -->
|
||||
<!-- # String -->
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -33,12 +33,12 @@
|
|||
|
||||
<!-- SIP Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
<!-- Secondary SIP Server -->
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}:{$row.sip_port}</item>
|
||||
|
||||
<!-- Outbound Proxy -->
|
||||
{if $row.sip_transport != 'dns srv' && isset($row.outbound_proxy_primary)}
|
||||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
<!-- BLF Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
|
||||
<!-- SIP User ID -->
|
||||
|
|
@ -107,7 +107,11 @@
|
|||
|
||||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -136,7 +140,7 @@
|
|||
|
||||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -572,64 +576,64 @@
|
|||
<item name="account.{$row.line_number}.ring.ringtone">5</item>
|
||||
|
||||
<!-- Matching Incoming Caller ID. Matching Rule 1 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId">{$grandstream_distinctive_ringtone_name_1}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId">{$grandstream_distinctive_ringtone_name_2}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId">{$grandstream_distinctive_ringtone_name_3}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId">{$grandstream_distinctive_ringtone_name_4}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId">{$grandstream_distinctive_ringtone_name_5}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId">{$grandstream_distinctive_ringtone_name_6}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId">{$grandstream_distinctive_ringtone_name_7}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId">{$grandstream_distinctive_ringtone_name_8}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId">{$grandstream_distinctive_ringtone_name_9}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId">{$grandstream_distinctive_ringtone_name_10}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -665,21 +669,21 @@
|
|||
<!-- #Enable Local Call Features. Default is Yes -->
|
||||
<!-- #Mandatory -->
|
||||
<!-- No, Yes -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">Yes</item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Always - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Always - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Always- Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -903,12 +907,12 @@
|
|||
|
||||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if $grandstream_lan_port_vlan == '0'}No{else}Yes{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -916,10 +920,14 @@
|
|||
|
||||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{else}Enabled{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<item name="network.port.pc.vlan.priority">0</item>
|
||||
|
|
@ -1249,8 +1257,8 @@
|
|||
<!-- TFTP, HTTP, HTTPS, FTP,FTPS -->
|
||||
<item name="provisioning.firmware.protocol">HTTP</item>
|
||||
<!-- Firmware Server Path -->
|
||||
{if isset($grandstream_firmware_path) && isset($firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$firmware_version}</item>
|
||||
{if isset($grandstream_firmware_path) && isset($grandstream_firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$grandstream_firmware_version}</item>
|
||||
{elseif isset($grandstream_firmware_path)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}</item>
|
||||
{else}
|
||||
|
|
@ -1614,7 +1622,11 @@
|
|||
<item name="sip.userNatIp"/>
|
||||
|
||||
<!-- STUN Server -->
|
||||
<item name="network.stunServer"/>
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -2192,7 +2204,7 @@
|
|||
<item name="sip.showError">Yes</item>
|
||||
|
||||
<!-- # Enable Missed Call Notification. Yes or No -->
|
||||
<item name="features.history.missedCallNotification">Yes</item>
|
||||
<item name="features.history.missedCallNotification">{$grandstream_missed_call_notification}</item>
|
||||
|
||||
<!-- # Enable Call Completion Service. Yes or No -->
|
||||
<item name="call.dial.callComplete.enable"/>
|
||||
|
|
@ -2424,13 +2436,25 @@
|
|||
<!-- ## Settings/Preferences / Audio Control -->
|
||||
<!-- ############################################################################## -->
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -2444,10 +2468,18 @@
|
|||
<item name="audio.headset.txGain">0</item>
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
<!-- ## Settings/Preferences / Date and Time -->
|
||||
|
|
@ -2620,10 +2652,14 @@
|
|||
|
||||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<item name="lcd.screensaver.source"/>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<item name="lcd.screensaver.showDateTime">Yes</item>
|
||||
|
|
@ -2943,7 +2979,6 @@
|
|||
<!-- # Phonebook(30), Paging(33) -->
|
||||
{/literal}
|
||||
|
||||
|
||||
{assign var=key_types value=["none"=>-1,"line"=>0,"shared"=>1,"speed dial"=>10, "blf"=>11, "presence watcher"=>12,
|
||||
"eventlist blf"=>13,"speed dial active"=>14,"dial dtmf"=>15,"voicemail"=>16,"call return"=>17,
|
||||
"transfer"=>18,"call park"=>19,"intercom"=>20,"ldap search"=>21,"conference"=>22,"multicast paging"=>23,
|
||||
|
|
@ -2951,6 +2986,7 @@
|
|||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id < 4}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
|
|
@ -2971,7 +3007,39 @@
|
|||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- # Key Mode for dynamic VPK. -->
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id > 3}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # Key Mode -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.keyMode">-1</item>-->
|
||||
|
||||
<!-- # Account. 0 - Account1, 1 - Account2, 2 - Account3, 3 - Account 4, 4 - Account 5, 5 - Account 6 -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.account">{$row.device_key_line}</item>
|
||||
|
||||
<!-- # Description. Max length allowed is 32 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.description">{$row.device_key_label}</item>
|
||||
|
||||
<!-- # Value. Max length allowed is 64 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.value">{$row.device_key_value}</item>
|
||||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
|
|
@ -3215,6 +3283,11 @@
|
|||
<!-- # Phonebook(30), Paging(33) -->
|
||||
{/literal}
|
||||
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['expansion'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
|
||||
|
|
@ -3237,5 +3310,3 @@
|
|||
|
||||
</config>
|
||||
</gs_provision>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -33,12 +33,12 @@
|
|||
|
||||
<!-- SIP Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
<!-- Secondary SIP Server -->
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}:{$row.sip_port}</item>
|
||||
|
||||
<!-- Outbound Proxy -->
|
||||
{if $row.sip_transport != 'dns srv' && isset($row.outbound_proxy_primary)}
|
||||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
<!-- BLF Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
|
||||
<!-- SIP User ID -->
|
||||
|
|
@ -107,7 +107,11 @@
|
|||
|
||||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -136,7 +140,7 @@
|
|||
|
||||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -572,64 +576,64 @@
|
|||
<item name="account.{$row.line_number}.ring.ringtone">5</item>
|
||||
|
||||
<!-- Matching Incoming Caller ID. Matching Rule 1 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId">{$grandstream_distinctive_ringtone_name_1}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId">{$grandstream_distinctive_ringtone_name_2}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId">{$grandstream_distinctive_ringtone_name_3}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId">{$grandstream_distinctive_ringtone_name_4}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId">{$grandstream_distinctive_ringtone_name_5}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId">{$grandstream_distinctive_ringtone_name_6}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId">{$grandstream_distinctive_ringtone_name_7}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId">{$grandstream_distinctive_ringtone_name_8}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId">{$grandstream_distinctive_ringtone_name_9}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId">{$grandstream_distinctive_ringtone_name_10}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -665,21 +669,21 @@
|
|||
<!-- #Enable Local Call Features. Default is Yes -->
|
||||
<!-- #Mandatory -->
|
||||
<!-- No, Yes -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">Yes</item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Always - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Always - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Always- Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -903,12 +907,12 @@
|
|||
|
||||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if $grandstream_lan_port_vlan == '0'}No{else}Yes{/if}</item>
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -916,10 +920,14 @@
|
|||
|
||||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{else}Enabled{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<item name="network.port.pc.vlan.priority">0</item>
|
||||
|
|
@ -1249,8 +1257,8 @@
|
|||
<!-- TFTP, HTTP, HTTPS, FTP,FTPS -->
|
||||
<item name="provisioning.firmware.protocol">HTTP</item>
|
||||
<!-- Firmware Server Path -->
|
||||
{if isset($grandstream_firmware_path) && isset($firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$firmware_version}</item>
|
||||
{if isset($grandstream_firmware_path) && isset($grandstream_firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$grandstream_firmware_version}</item>
|
||||
{elseif isset($grandstream_firmware_path)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}</item>
|
||||
{else}
|
||||
|
|
@ -1614,7 +1622,11 @@
|
|||
<item name="sip.userNatIp"/>
|
||||
|
||||
<!-- STUN Server -->
|
||||
<item name="network.stunServer"/>
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -2192,7 +2204,7 @@
|
|||
<item name="sip.showError">Yes</item>
|
||||
|
||||
<!-- # Enable Missed Call Notification. Yes or No -->
|
||||
<item name="features.history.missedCallNotification">Yes</item>
|
||||
<item name="features.history.missedCallNotification">{$grandstream_missed_call_notification}</item>
|
||||
|
||||
<!-- # Enable Call Completion Service. Yes or No -->
|
||||
<item name="call.dial.callComplete.enable"/>
|
||||
|
|
@ -2424,13 +2436,25 @@
|
|||
<!-- ## Settings/Preferences / Audio Control -->
|
||||
<!-- ############################################################################## -->
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -2444,10 +2468,18 @@
|
|||
<item name="audio.headset.txGain">0</item>
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
<!-- ## Settings/Preferences / Date and Time -->
|
||||
|
|
@ -2620,10 +2652,14 @@
|
|||
|
||||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<item name="lcd.screensaver.source"/>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<item name="lcd.screensaver.showDateTime">Yes</item>
|
||||
|
|
@ -2950,6 +2986,7 @@
|
|||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id < 9}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
|
|
@ -2970,7 +3007,39 @@
|
|||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- # Key Mode for dynamic VPK. -->
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id > 8}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # Key Mode -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.keyMode">-1</item>-->
|
||||
|
||||
<!-- # Account. 0 - Account1, 1 - Account2, 2 - Account3, 3 - Account 4, 4 - Account 5, 5 - Account 6 -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.account">{$row.device_key_line}</item>
|
||||
|
||||
<!-- # Description. Max length allowed is 32 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.description">{$row.device_key_label}</item>
|
||||
|
||||
<!-- # Value. Max length allowed is 64 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.value">{$row.device_key_value}</item>
|
||||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
|
|
|
|||
|
|
@ -33,12 +33,12 @@
|
|||
|
||||
<!-- SIP Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
<!-- Secondary SIP Server -->
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}:{$row.sip_port}</item>
|
||||
|
||||
<!-- Outbound Proxy -->
|
||||
{if $row.sip_transport != 'dns srv' && isset($row.outbound_proxy_primary)}
|
||||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
<!-- BLF Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
|
||||
<!-- SIP User ID -->
|
||||
|
|
@ -107,7 +107,11 @@
|
|||
|
||||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -136,7 +140,7 @@
|
|||
|
||||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -572,64 +576,64 @@
|
|||
<item name="account.{$row.line_number}.ring.ringtone">5</item>
|
||||
|
||||
<!-- Matching Incoming Caller ID. Matching Rule 1 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId">{$grandstream_distinctive_ringtone_name_1}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId">{$grandstream_distinctive_ringtone_name_2}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId">{$grandstream_distinctive_ringtone_name_3}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId">{$grandstream_distinctive_ringtone_name_4}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId">{$grandstream_distinctive_ringtone_name_5}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId">{$grandstream_distinctive_ringtone_name_6}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId">{$grandstream_distinctive_ringtone_name_7}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId">{$grandstream_distinctive_ringtone_name_8}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId">{$grandstream_distinctive_ringtone_name_9}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId">{$grandstream_distinctive_ringtone_name_10}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -665,21 +669,21 @@
|
|||
<!-- #Enable Local Call Features. Default is Yes -->
|
||||
<!-- #Mandatory -->
|
||||
<!-- No, Yes -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">Yes</item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Always - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Always - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Always- Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -903,12 +907,13 @@
|
|||
|
||||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if $grandstream_lan_port_vlan == '0'}No{else}Yes{/if}</item>
|
||||
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -916,10 +921,14 @@
|
|||
|
||||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{else}Enabled{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<item name="network.port.pc.vlan.priority">0</item>
|
||||
|
|
@ -1249,8 +1258,8 @@
|
|||
<!-- TFTP, HTTP, HTTPS, FTP,FTPS -->
|
||||
<item name="provisioning.firmware.protocol">HTTP</item>
|
||||
<!-- Firmware Server Path -->
|
||||
{if isset($grandstream_firmware_path) && isset($firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$firmware_version}</item>
|
||||
{if isset($grandstream_firmware_path) && isset($grandstream_firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$grandstream_firmware_version}</item>
|
||||
{elseif isset($grandstream_firmware_path)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}</item>
|
||||
{else}
|
||||
|
|
@ -1614,7 +1623,11 @@
|
|||
<item name="sip.userNatIp"/>
|
||||
|
||||
<!-- STUN Server -->
|
||||
<item name="network.stunServer"/>
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -2192,7 +2205,7 @@
|
|||
<item name="sip.showError">Yes</item>
|
||||
|
||||
<!-- # Enable Missed Call Notification. Yes or No -->
|
||||
<item name="features.history.missedCallNotification">Yes</item>
|
||||
<item name="features.history.missedCallNotification">{$grandstream_missed_call_notification}</item>
|
||||
|
||||
<!-- # Enable Call Completion Service. Yes or No -->
|
||||
<item name="call.dial.callComplete.enable"/>
|
||||
|
|
@ -2424,13 +2437,25 @@
|
|||
<!-- ## Settings/Preferences / Audio Control -->
|
||||
<!-- ############################################################################## -->
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -2444,10 +2469,18 @@
|
|||
<item name="audio.headset.txGain">0</item>
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
<!-- ## Settings/Preferences / Date and Time -->
|
||||
|
|
@ -2620,10 +2653,14 @@
|
|||
|
||||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<item name="lcd.screensaver.source"/>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<item name="lcd.screensaver.showDateTime">Yes</item>
|
||||
|
|
@ -2950,6 +2987,7 @@
|
|||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id < 5}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
|
|
@ -2970,7 +3008,39 @@
|
|||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- # Key Mode for dynamic VPK. -->
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id > 4}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # Key Mode -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.keyMode">-1</item>-->
|
||||
|
||||
<!-- # Account. 0 - Account1, 1 - Account2, 2 - Account3, 3 - Account 4, 4 - Account 5, 5 - Account 6 -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.account">{$row.device_key_line}</item>
|
||||
|
||||
<!-- # Description. Max length allowed is 32 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.description">{$row.device_key_label}</item>
|
||||
|
||||
<!-- # Value. Max length allowed is 64 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.value">{$row.device_key_value}</item>
|
||||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
|
|
@ -3240,4 +3310,4 @@
|
|||
{/foreach}
|
||||
|
||||
</config>
|
||||
</gs_provision>
|
||||
</gs_provision>
|
||||
|
|
@ -33,12 +33,12 @@
|
|||
|
||||
<!-- SIP Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
<!-- Secondary SIP Server -->
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}:{$row.sip_port}</item>
|
||||
|
||||
<!-- Outbound Proxy -->
|
||||
{if $row.sip_transport != 'dns srv' && isset($row.outbound_proxy_primary)}
|
||||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
<!-- BLF Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
|
||||
<!-- SIP User ID -->
|
||||
|
|
@ -107,7 +107,11 @@
|
|||
|
||||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -136,7 +140,7 @@
|
|||
|
||||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -572,64 +576,64 @@
|
|||
<item name="account.{$row.line_number}.ring.ringtone">5</item>
|
||||
|
||||
<!-- Matching Incoming Caller ID. Matching Rule 1 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId">{$grandstream_distinctive_ringtone_name_1}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId">{$grandstream_distinctive_ringtone_name_2}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId">{$grandstream_distinctive_ringtone_name_3}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId">{$grandstream_distinctive_ringtone_name_4}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId">{$grandstream_distinctive_ringtone_name_5}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId">{$grandstream_distinctive_ringtone_name_6}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId">{$grandstream_distinctive_ringtone_name_7}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId">{$grandstream_distinctive_ringtone_name_8}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId">{$grandstream_distinctive_ringtone_name_9}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId">{$grandstream_distinctive_ringtone_name_10}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -665,21 +669,21 @@
|
|||
<!-- #Enable Local Call Features. Default is Yes -->
|
||||
<!-- #Mandatory -->
|
||||
<!-- No, Yes -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">Yes</item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Always - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Always - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Always- Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -903,12 +907,13 @@
|
|||
|
||||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if $grandstream_lan_port_vlan == '0'}No{else}Yes{/if}</item>
|
||||
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -916,10 +921,14 @@
|
|||
|
||||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{else}Enabled{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<item name="network.port.pc.vlan.priority">0</item>
|
||||
|
|
@ -1249,8 +1258,8 @@
|
|||
<!-- TFTP, HTTP, HTTPS, FTP,FTPS -->
|
||||
<item name="provisioning.firmware.protocol">HTTP</item>
|
||||
<!-- Firmware Server Path -->
|
||||
{if isset($grandstream_firmware_path) && isset($firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$firmware_version}</item>
|
||||
{if isset($grandstream_firmware_path) && isset($grandstream_firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$grandstream_firmware_version}</item>
|
||||
{elseif isset($grandstream_firmware_path)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}</item>
|
||||
{else}
|
||||
|
|
@ -1614,7 +1623,11 @@
|
|||
<item name="sip.userNatIp"/>
|
||||
|
||||
<!-- STUN Server -->
|
||||
<item name="network.stunServer"/>
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -2192,7 +2205,7 @@
|
|||
<item name="sip.showError">Yes</item>
|
||||
|
||||
<!-- # Enable Missed Call Notification. Yes or No -->
|
||||
<item name="features.history.missedCallNotification">Yes</item>
|
||||
<item name="features.history.missedCallNotification">{$grandstream_missed_call_notification}</item>
|
||||
|
||||
<!-- # Enable Call Completion Service. Yes or No -->
|
||||
<item name="call.dial.callComplete.enable"/>
|
||||
|
|
@ -2424,13 +2437,25 @@
|
|||
<!-- ## Settings/Preferences / Audio Control -->
|
||||
<!-- ############################################################################## -->
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -2444,10 +2469,18 @@
|
|||
<item name="audio.headset.txGain">0</item>
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
<!-- ## Settings/Preferences / Date and Time -->
|
||||
|
|
@ -2620,10 +2653,14 @@
|
|||
|
||||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<item name="lcd.screensaver.source"/>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<item name="lcd.screensaver.showDateTime">Yes</item>
|
||||
|
|
@ -2950,6 +2987,7 @@
|
|||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id < 7}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
|
|
@ -2970,7 +3008,39 @@
|
|||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- # Key Mode for dynamic VPK. -->
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id > 6}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # Key Mode -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.keyMode">-1</item>-->
|
||||
|
||||
<!-- # Account. 0 - Account1, 1 - Account2, 2 - Account3, 3 - Account 4, 4 - Account 5, 5 - Account 6 -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.account">{$row.device_key_line}</item>
|
||||
|
||||
<!-- # Description. Max length allowed is 32 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.description">{$row.device_key_label}</item>
|
||||
|
||||
<!-- # Value. Max length allowed is 64 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.value">{$row.device_key_value}</item>
|
||||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
|
|
@ -3240,4 +3310,4 @@
|
|||
{/foreach}
|
||||
|
||||
</config>
|
||||
</gs_provision>
|
||||
</gs_provision>
|
||||
|
|
@ -33,12 +33,12 @@
|
|||
|
||||
<!-- SIP Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.1.address">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
<!-- Secondary SIP Server -->
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}</item>
|
||||
<item name="account.{$row.line_number}.sip.server.2.address">{$row.server_address_secondary}:{$row.sip_port}</item>
|
||||
|
||||
<!-- Outbound Proxy -->
|
||||
{if $row.sip_transport != 'dns srv' && isset($row.outbound_proxy_primary)}
|
||||
|
|
@ -56,9 +56,9 @@
|
|||
|
||||
<!-- BLF Server -->
|
||||
{if isset($row.server_address_primary)}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address_primary}:{$row.sip_port}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}</item>
|
||||
<item name="account.{$row.line_number}.sip.blf.server">{$row.server_address}:{$row.sip_port}</item>
|
||||
{/if}
|
||||
|
||||
<!-- SIP User ID -->
|
||||
|
|
@ -107,7 +107,11 @@
|
|||
|
||||
<!-- NAT Traversal -->
|
||||
<!-- No, STUN, KeepAlive, UPnP, Auto, VPN -->
|
||||
{if isset($grandstream_nat_traversal)}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">{$grandstream_nat_traversal}</item>
|
||||
{else}
|
||||
<item name="account.{$row.line_number}.network.natTraversal">Auto</item>
|
||||
{/if}
|
||||
|
||||
<!-- Support Rport (RFC 3581) -->
|
||||
<!-- Yes, No -->
|
||||
|
|
@ -136,7 +140,7 @@
|
|||
|
||||
<!-- Register Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">15</item>
|
||||
<item name="account.{$row.line_number}.sip.registerExpiration">{$row.register_expires}</item>
|
||||
|
||||
<!-- Subscribe Expiration (m) -->
|
||||
<!-- Number: 0 - 64800 -->
|
||||
|
|
@ -572,64 +576,64 @@
|
|||
<item name="account.{$row.line_number}.ring.ringtone">5</item>
|
||||
|
||||
<!-- Matching Incoming Caller ID. Matching Rule 1 -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.1.callerId">{$grandstream_distinctive_ringtone_name_1}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.1.ringtone">{$grandstream_distinctive_ringtone_1}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 2 -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.2.callerId">{$grandstream_distinctive_ringtone_name_2}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.2.ringtone">{$grandstream_distinctive_ringtone_2}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 3 -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.3.callerId">{$grandstream_distinctive_ringtone_name_3}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.3.ringtone">{$grandstream_distinctive_ringtone_3}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 4 -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.4.callerId">{$grandstream_distinctive_ringtone_name_4}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.4.ringtone">{$grandstream_distinctive_ringtone_4}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 5 -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.5.callerId">{$grandstream_distinctive_ringtone_name_5}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.5.ringtone">{$grandstream_distinctive_ringtone_5}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 6 -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.6.callerId">{$grandstream_distinctive_ringtone_name_6}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.6.ringtone">{$grandstream_distinctive_ringtone_6}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 7 -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.7.callerId">{$grandstream_distinctive_ringtone_name_7}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.7.ringtone">{$grandstream_distinctive_ringtone_7}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 8 -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.8.callerId">{$grandstream_distinctive_ringtone_name_8}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.8.ringtone">{$grandstream_distinctive_ringtone_8}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 9 -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.9.callerId">{$grandstream_distinctive_ringtone_name_9}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.9.ringtone">{$grandstream_distinctive_ringtone_9}</item>
|
||||
|
||||
<!-- Match Incoming Caller ID. Matching Rule 10 -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId"/>
|
||||
<item name="account.{$row.line_number}.ring.match.10.callerId">{$grandstream_distinctive_ringtone_name_10}</item>
|
||||
|
||||
<!-- Distinctive Ring Tone -->
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">5</item>
|
||||
<item name="account.{$row.line_number}.ring.match.10.ringtone">{$grandstream_distinctive_ringtone_10}</item>
|
||||
|
||||
<!-- Ring Timeout -->
|
||||
<!-- Number: 10 - 300 -->
|
||||
|
|
@ -665,21 +669,21 @@
|
|||
<!-- #Enable Local Call Features. Default is Yes -->
|
||||
<!-- #Mandatory -->
|
||||
<!-- No, Yes -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">Yes</item>
|
||||
<item name="account.{$row.line_number}.featureCodes.callFeatures">No</item>
|
||||
|
||||
<!-- DND Call Feature On -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOn">*78</item>
|
||||
|
||||
<!-- DND Call Feature Off -->
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.dndOff">*79</item>
|
||||
|
||||
<!-- #Call Forward Always - On -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOn">*72</item>
|
||||
|
||||
<!-- #Call Forward Always - Off -->
|
||||
<!-- # String -->
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff"/>
|
||||
<item name="account.{$row.line_number}.featureCodes.callForwardUnconditionallyOff">*73</item>
|
||||
|
||||
<!-- #Call Forward Always- Target -->
|
||||
<!-- # String -->
|
||||
|
|
@ -903,12 +907,13 @@
|
|||
|
||||
<!-- # Enable Manual VLAN Configuration. Yes or No. -->
|
||||
<!-- # Mandatory -->
|
||||
<item name="network.port.eth.1.vlan.enable">Yes</item>
|
||||
<item name="network.port.eth.1.vlan.enable">{if $grandstream_lan_port_vlan == '0'}No{else}Yes{/if}</item>
|
||||
|
||||
|
||||
<!-- # Layer 2 QoS. 802.1Q/VLAN Tag (VLAN classification for RTP). Default is 0 -->
|
||||
<!-- Layer 2 QoS 802.1Q/VLAN Tag (Ethernet) -->
|
||||
<!-- Number: 0 - 4095 -->
|
||||
<item name="network.port.eth.1.vlan.tag">0</item>
|
||||
<item name="network.port.eth.1.vlan.tag">{$grandstream_lan_port_vlan}</item>
|
||||
|
||||
<!-- 802.1p Priority Value (Ethernet) -->
|
||||
<!-- Number: 0 - 7 -->
|
||||
|
|
@ -916,10 +921,14 @@
|
|||
|
||||
<!-- PC Port Mode -->
|
||||
<!-- Enabled, Disabled, Mirrored -->
|
||||
<item name="network.port.pc.mode">Enabled</item>
|
||||
{if isset($grandstream_pc_mode)}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_mode)}{$grandstream_pc_mode}{else}Enabled{/if}</item>
|
||||
{else}
|
||||
<item name="network.port.pc.mode">{if isset($grandstream_pc_port_vlan)}Enabled{else}Disabled{/if}</item>
|
||||
{/if}
|
||||
|
||||
<!-- PC Port VLAN Tag -->
|
||||
<item name="network.port.pc.vlan.tag">0</item>
|
||||
<item name="network.port.pc.vlan.tag">{$grandstream_pc_port_vlan}</item>
|
||||
|
||||
<!-- PC Port Priority Value -->
|
||||
<item name="network.port.pc.vlan.priority">0</item>
|
||||
|
|
@ -1249,8 +1258,8 @@
|
|||
<!-- TFTP, HTTP, HTTPS, FTP,FTPS -->
|
||||
<item name="provisioning.firmware.protocol">HTTP</item>
|
||||
<!-- Firmware Server Path -->
|
||||
{if isset($grandstream_firmware_path) && isset($firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$firmware_version}</item>
|
||||
{if isset($grandstream_firmware_path) && isset($grandstream_firmware_version)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}/{$grandstream_firmware_version}</item>
|
||||
{elseif isset($grandstream_firmware_path)}
|
||||
<item name="provisioning.firmware.serverPath">{$grandstream_firmware_path}</item>
|
||||
{else}
|
||||
|
|
@ -1614,7 +1623,11 @@
|
|||
<item name="sip.userNatIp"/>
|
||||
|
||||
<!-- STUN Server -->
|
||||
<item name="network.stunServer"/>
|
||||
{if isset($grandstream_stun_server) }
|
||||
<item name="network.stunServer">{$grandstream_stun_server}</item>
|
||||
{else}
|
||||
<item name="network.stunServer"></item>
|
||||
{/if}
|
||||
|
||||
<!-- # Delay Registration. Default is 0. -->
|
||||
<!-- # Number: 0 - 90 -->
|
||||
|
|
@ -2192,7 +2205,7 @@
|
|||
<item name="sip.showError">Yes</item>
|
||||
|
||||
<!-- # Enable Missed Call Notification. Yes or No -->
|
||||
<item name="features.history.missedCallNotification">Yes</item>
|
||||
<item name="features.history.missedCallNotification">{$grandstream_missed_call_notification}</item>
|
||||
|
||||
<!-- # Enable Call Completion Service. Yes or No -->
|
||||
<item name="call.dial.callComplete.enable"/>
|
||||
|
|
@ -2424,13 +2437,25 @@
|
|||
<!-- ## Settings/Preferences / Audio Control -->
|
||||
<!-- ############################################################################## -->
|
||||
<!-- # HEADSET Key Mode. DefaultMode, ToggleHeadsetOrSpeaker. -->
|
||||
{if isset($grandstream_headset_key_mode)}
|
||||
<item name="audio.headset.keyMode">{$grandstream_headset_key_mode}</item>
|
||||
{else}
|
||||
<item name="audio.headset.keyMode">DefaultMode</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Headset Type. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_ringtone)}
|
||||
<item name="audio.headset.ehs.ringtone">{$grandstream_headset_ringtone}</item>
|
||||
{else}
|
||||
<item name="audio.headset.ehs.ringtone">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # EHS Headset Ringtone. Normal, PlantronicsEHS. -->
|
||||
{if isset($grandstream_headset_type)}
|
||||
<item name="audio.headset.type">{$grandstream_headset_type}</item>
|
||||
{else}
|
||||
<item name="audio.headset.type">Normal</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Always Ring Speaker. -->
|
||||
<!-- No - 0, Yes,both - 1, Yes,speaker only - 2 -->
|
||||
|
|
@ -2444,10 +2469,18 @@
|
|||
<item name="audio.headset.txGain">0</item>
|
||||
|
||||
<!-- # Headset RX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_rx_gain)}
|
||||
<item name="audio.headset.rxGain">{$grandstream_headset_rx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.headset.rxGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Handset TX gain(dB). 1 - -6, 0 - 0, 2 - +6. Default is 0 -->
|
||||
{if isset($grandstream_headset_tx_gain)}
|
||||
<item name="audio.handset.txGain">{$grandstream_headset_tx_gain}</item>
|
||||
{else}
|
||||
<item name="audio.handset.txGain">0</item>
|
||||
{/if}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
<!-- ## Settings/Preferences / Date and Time -->
|
||||
|
|
@ -2620,10 +2653,14 @@
|
|||
|
||||
<!-- # Screensaver Settings -->
|
||||
<!-- # Screensaver. No, Yes, OnIfNoVPKIsActive. -->
|
||||
{if isset($grandstream_screensaver_enable)}
|
||||
<item name="lcd.screensaver.enable">{$grandstream_screensaver_enable}</item>
|
||||
{else}
|
||||
<item name="lcd.screensaver.enable">OnIfNoVPKIsActive</item>
|
||||
{/if}
|
||||
|
||||
<!-- # Screensaver Source. Default, USB, Download. -->
|
||||
<item name="lcd.screensaver.source"/>
|
||||
<item name="lcd.screensaver.source">{$grandstream_screensaver_source}</item>
|
||||
|
||||
<!-- # Show Date and Time. Yes or No -->
|
||||
<item name="lcd.screensaver.showDateTime">Yes</item>
|
||||
|
|
@ -2950,6 +2987,7 @@
|
|||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id < 13}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
|
|
@ -2970,7 +3008,39 @@
|
|||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- # Key Mode for dynamic VPK. -->
|
||||
{assign var=key_types value=["none"=>-1,"speed dial"=>0, "blf"=>1, "presence watcher"=>2,
|
||||
"eventlist blf"=>3,"speed dial active"=>4,"dial dtmf"=>5,"voicemail"=>6,"call return"=>7,
|
||||
"transfer"=>8,"call park"=>9,"intercom"=>10,"ldap search"=>11,"conference"=>12,"multicast paging"=>13,
|
||||
"record"=>14,"call log"=>15,"monitored call park"=>16,"menu"=>17]}
|
||||
|
||||
{foreach $keys['line'] as $row}
|
||||
{$line=$row.device_key_id}
|
||||
{if $row.device_key_id > 12}
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # VPK {$row.device_key_id} -->
|
||||
<!-- ###################################################################################### -->
|
||||
<!-- # Key Mode -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.keyMode">{$key_types[$keys.line.$line.device_key_type]}</item>
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.keyMode">-1</item>-->
|
||||
|
||||
<!-- # Account. 0 - Account1, 1 - Account2, 2 - Account3, 3 - Account 4, 4 - Account 5, 5 - Account 6 -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.account">{$row.device_key_line}</item>
|
||||
|
||||
<!-- # Description. Max length allowed is 32 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.description">{$row.device_key_label}</item>
|
||||
|
||||
<!-- # Value. Max length allowed is 64 characters. -->
|
||||
<!-- # String -->
|
||||
<item name="pks.vpk.{$row.device_key_id}.value">{$row.device_key_value}</item>
|
||||
|
||||
<!-- # Locked: uncheck, check. -->
|
||||
<!--<item name="pks.vpk.{$row.device_key_id}.lockMode"></item>-->
|
||||
{/if}
|
||||
{/foreach}
|
||||
|
||||
<!-- ############################################################################## -->
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,594 +0,0 @@
|
|||
#!version:1.0.0.1
|
||||
|
||||
##File header "#!version:1.0.0.1" can not be edited or deleted, and must be placed in the first line.##
|
||||
##account.X.*:(T5XW/T54S/T48G/T48S/T46G/T46S/T29G/T46U/T48U: X ranges from 1 to 16. T52S/T42G/T42S/T43U: X ranges from 1 to 12. T41P/T41S/T27P/T27G/T41U/T42U: X ranges from 1 to 6. T40P/T40G/T23P/T23G: X ranges from 1 to 3. T21(P) E2: X ranges from 1 to 2.)##
|
||||
#Firmware v86
|
||||
|
||||
{foreach $lines as $row}
|
||||
|
||||
#######################################################################################
|
||||
## Transfer ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.phone_setting.call_appearance.transfer_via_new_linekey=
|
||||
|
||||
#######################################################################################
|
||||
## Conference ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.phone_setting.call_appearance.conference_via_new_linekey=
|
||||
|
||||
#######################################################################################
|
||||
## Anonymous ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.anonymous_call.server_base_only =
|
||||
account.{$row.line_number}.send_anonymous_rejection_code =
|
||||
account.{$row.line_number}.anonymous_reject_offcode =
|
||||
account.{$row.line_number}.anonymous_reject_oncode =
|
||||
account.{$row.line_number}.reject_anonymous_call=
|
||||
account.{$row.line_number}.anonymous_call_offcode =
|
||||
account.{$row.line_number}.anonymous_call_oncode =
|
||||
account.{$row.line_number}.anonymous_call =
|
||||
account.{$row.line_number}.send_anonymous_code =
|
||||
|
||||
#######################################################################################
|
||||
## Call Configuration ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.music_server_uri=
|
||||
account.{$row.line_number}.music_on_hold_type=
|
||||
account.{$row.line_number}.auto_label.rule=
|
||||
account.{$row.line_number}.auto_label.enable=
|
||||
account.{$row.line_number}.number_of_linekey=
|
||||
account.{$row.line_number}.phone_setting.call_appearance.calls_per_linekey=
|
||||
|
||||
#######################################################################################
|
||||
## Anonymous ##
|
||||
#######################################################################################
|
||||
account.1.anonymous_call.server_base_only =
|
||||
account.1.send_anonymous_rejection_code =
|
||||
account.1.anonymous_reject_offcode =
|
||||
account.1.anonymous_reject_oncode =
|
||||
account.1.reject_anonymous_call=
|
||||
account.1.anonymous_call_offcode =
|
||||
account.1.anonymous_call_oncode =
|
||||
account.1.anonymous_call =
|
||||
account.1.send_anonymous_code =
|
||||
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## Call Configuration ##
|
||||
#######################################################################################
|
||||
account.1.music_server_uri=
|
||||
account.1.music_on_hold_type=
|
||||
account.1.auto_label.rule=
|
||||
account.1.auto_label.enable=
|
||||
account.1.number_of_linekey=
|
||||
account.1.phone_setting.call_appearance.calls_per_linekey=
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## Codec ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.codec.ilbc_15_2kbps.priority= 0
|
||||
account.{$row.line_number}.codec.ilbc_15_2kbps.enable= 0
|
||||
account.{$row.line_number}.codec.ilbc_13_33kbps.priority= {if isset($yealink_codec_iLBC_priority)}{$yealink_codec_iLBC_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.ilbc_13_33kbps.enable = {if isset($yealink_codec_iLBC_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.pcma.enable= {if isset($yealink_codec_pcma_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.pcma.priority= {if isset($yealink_codec_pcma_priority)}{$yealink_codec_pcma_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.pcmu.enable= {if isset($yealink_codec_pcmu_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.pcmu.priority= {if isset($yealink_codec_pcmu_priority)}{$yealink_codec_pcmu_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.opus.priority = {if isset($yealink_codec_opus_priority)}{$yealink_codec_opus_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.opus.enable= {if isset($yealink_codec_opus_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.opus.para=
|
||||
|
||||
account.{$row.line_number}.codec.g726_40.enable= {if isset($yealink_codec_g726_40_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_40.priority= {if isset($yealink_codec_g726_40_priority)}{$yealink_codec_g726_40_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_32.enable= {if isset($yealink_codec_g726_32_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_32.priority= {if isset($yealink_codec_g726_32_priority)}{$yealink_codec_g726_32_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_24.enable= {if isset($yealink_codec_g726_24_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_24.priority= {if isset($yealink_codec_g726_24_priority)}{$yealink_codec_g726_24_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_16.enable= {if isset($yealink_codec_g726_16_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g726_16.priority= {if isset($yealink_codec_g726_16_priority)}{$yealink_codec_g726_16_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g723_63.priority= {if isset($yealink_codec_g723_63_priority)}{$yealink_codec_g723_63_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g723_63.enable= {if isset($yealink_codec_g723_63_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g723_53.priority= {if isset($yealink_codec_g723_53_priority)}{$yealink_codec_g723_53_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g723_53.enable= {if isset($yealink_codec_g723_53_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g729.priority= {if isset($yealink_codec_g729_priority)}{$yealink_codec_g729_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g729.enable= {if isset($yealink_codec_g729_enable)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g722.priority= {if isset($yealink_codec_g722_priority)}{$yealink_codec_g722_priority}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.g722.enable= {if isset($yealink_codec_g722_enable)}{$yealink_codec_g722_enable}{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.codec.G722_1_24kpbs.priority=
|
||||
account.{$row.line_number}.codec.G722_1_24kpbs.enable=
|
||||
account.{$row.line_number}.codec.G722_1c_24kpbs.priority=
|
||||
account.{$row.line_number}.codec.G722_1c_24kpbs.enable=
|
||||
account.{$row.line_number}.codec.G722_1c_32kpbs.priority=
|
||||
account.{$row.line_number}.codec.G722_1c_32kpbs.enable=
|
||||
account.{$row.line_number}.codec.G722_1c_48kpbs.priority=
|
||||
account.{$row.line_number}.codec.G722_1c_48kpbs.enable=
|
||||
|
||||
################################################################
|
||||
# Account Register ##
|
||||
################################################################
|
||||
{if isset($row.password) }
|
||||
account.{$row.line_number}.enable = 1
|
||||
{else}
|
||||
account.{$row.line_number}.enable = 0
|
||||
{/if}
|
||||
account.{$row.line_number}.label = {$row.label}
|
||||
account.{$row.line_number}.display_name = {$row.display_name}
|
||||
account.{$row.line_number}.auth_name = {$row.auth_id}
|
||||
account.{$row.line_number}.password = {$row.password}
|
||||
|
||||
{if isset($row.server.1.address)}
|
||||
account.{$row.line_number}.user_name = {$row.user_id}@{$row.server_address}
|
||||
{else}
|
||||
account.{$row.line_number}.user_name = {$row.user_id}
|
||||
{/if}
|
||||
|
||||
{if isset($row.server.1.address)}
|
||||
account.{$row.line_number}.sip_server.1.address = {$row.server.1.address}
|
||||
{else}
|
||||
account.{$row.line_number}.sip_server.1.address = {$row.server_address}
|
||||
{/if}
|
||||
|
||||
account.{$row.line_number}.sip_server.1.port = {$row.sip_port}
|
||||
|
||||
{if $account.{$row.line_number}.sip_transport == 'udp'}account.{$row.line_number}.sip_server.1.transport_type = 0{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'tcp'}account.{$row.line_number}.sip_server.1.transport_type = 1{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'tls'}account.{$row.line_number}.sip_server.1.transport_type = 2{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'dns srv'}account.{$row.line_number}.sip_server.1.transport_type = 3{/if}
|
||||
|
||||
account.{$row.line_number}.sip_server.1.expires= {$row.register_expires}
|
||||
account.{$row.line_number}.sip_server.1.retry_counts= 3
|
||||
|
||||
account.{$row.line_number}.sip_server.2.address= {$row.server.2.address}
|
||||
account.{$row.line_number}.sip_server.2.port= {$row.sip_port}
|
||||
|
||||
{if $account.{$row.line_number}.sip_transport == 'udp'}account.{$row.line_number}.sip_server.2.transport_type = 0{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'tcp'}account.{$row.line_number}.sip_server.2.transport_type = 1{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'tls'}account.{$row.line_number}.sip_server.2.transport_type = 2{/if}
|
||||
{if $account.{$row.line_number}.sip_transport == 'dns srv'}account.{$row.line_number}.sip_server.2.transport_type = 3{/if}
|
||||
|
||||
account.{$row.line_number}.sip_server.2.expires= {$row.register_expires}
|
||||
account.{$row.line_number}.sip_server.2.retry_counts= 3
|
||||
|
||||
account.{$row.line_number}.outbound_proxy_enable= {if isset($row.outbound_proxy_primary)}1{else}0{/if}
|
||||
|
||||
account.{$row.line_number}.outbound_proxy.1.address= {$row.outbound_proxy_primary}
|
||||
|
||||
{if isset($outbound_proxy_1_port)}
|
||||
account.{$row.line_number}.outbound_proxy.1.port = {$outbound_proxy_1_port}
|
||||
{else}
|
||||
account.{$row.line_number}.outbound_proxy.1.port = {$row.sip_port}
|
||||
{/if}
|
||||
|
||||
account.{$row.line_number}.outbound_proxy.2.address= {$row.outbound_proxy_secondary}
|
||||
|
||||
{if isset($outbound_proxy_1_port)}
|
||||
account.{$row.line_number}.outbound_proxy.2.port = {$outbound_proxy_2_port}
|
||||
{else}
|
||||
account.{$row.line_number}.outbound_proxy.2.port = {$row.sip_port}
|
||||
{/if}
|
||||
|
||||
{if isset($outbound_proxy_fallback_interval)}
|
||||
account.{$row.line_number}.outbound_proxy_fallback_interval = {$outbound_proxy_fallback_interval}
|
||||
{else}
|
||||
account.{$row.line_number}.outbound_proxy_fallback_interval = 120
|
||||
{/if}
|
||||
|
||||
account.{$row.line_number}.nat.nat_traversal=
|
||||
|
||||
################################################################
|
||||
# Account Basic ##
|
||||
################################################################
|
||||
account.{$row.line_number}.auto_answer=
|
||||
|
||||
################################################################
|
||||
# Account Advanced ##
|
||||
################################################################
|
||||
account.{$row.line_number}.nat.udp_update_enable= 3
|
||||
account.{$row.line_number}.nat.udp_update_time= 30
|
||||
account.{$row.line_number}.nat.rport= {$yealink_rport}
|
||||
|
||||
account.{$row.line_number}.dtmf.type= {$yealink_dtmf_type}
|
||||
account.{$row.line_number}.dtmf.info_type=
|
||||
account.{$row.line_number}.dtmf.dtmf_payload=
|
||||
account.{$row.line_number}.100rel_enable= {$yealink_retransmission}
|
||||
|
||||
account.{$row.line_number}.subscribe_register=
|
||||
account.{$row.line_number}.cid_source= {$yealink_cid_source}
|
||||
account.{$row.line_number}.enable_user_equal_phone=
|
||||
account.{$row.line_number}.srtp_encryption= {$yealink_srtp_encryption}
|
||||
account.{$row.line_number}.ptime= 20
|
||||
account.{$row.line_number}.register_line=
|
||||
account.{$row.line_number}.register_mac=
|
||||
account.{$row.line_number}.reg_fail_retry_interval=
|
||||
account.{$row.line_number}.unregister_on_reboot=1
|
||||
|
||||
account.{$row.line_number}.session_timer.refresher=
|
||||
account.{$row.line_number}.session_timer.expires=
|
||||
account.{$row.line_number}.session_timer.enable= {$yealink_session_timer}
|
||||
|
||||
account.{$row.line_number}.conf_type = {if $nway_conference == 'true'}2{elseif $nway_conference == 'false'}0{/if}
|
||||
account.{$row.line_number}.sip_server_type=
|
||||
|
||||
##V83 Add
|
||||
account.{$row.line_number}.srtp.unencrypted_rtcp.enable =
|
||||
account.{$row.line_number}.srtp.unencrypted_rtp.enable =
|
||||
account.{$row.line_number}.sip_server_mode =
|
||||
|
||||
################################################################
|
||||
# SIP Backup Server ##
|
||||
################################################################
|
||||
account.{$row.line_number}.outbound_proxy.1.register_on_enable=
|
||||
account.{$row.line_number}.outbound_proxy.1.failback_timeout=
|
||||
account.{$row.line_number}.outbound_proxy.1.failback_mode=
|
||||
account.{$row.line_number}.outbound_proxy.1.retry_counts=
|
||||
account.{$row.line_number}.outbound_proxy.1.only_signal_with_registered=
|
||||
account.{$row.line_number}.outbound_proxy.1.failback_subscribe.enable=
|
||||
account.{$row.line_number}.outbound_proxy.1.invite_retry_counts=
|
||||
|
||||
account.{$row.line_number}.sip_server.1.register_on_enable= 0
|
||||
account.{$row.line_number}.sip_server.1.failback_timeout= 3600
|
||||
account.{$row.line_number}.sip_server.1.failback_mode= 0
|
||||
account.{$row.line_number}.sip_server.1.failback_subscribe.enable=
|
||||
account.{$row.line_number}.sip_server.1.only_signal_with_registered=
|
||||
account.{$row.line_number}.sip_server.1.invite_retry_counts=
|
||||
|
||||
account.{$row.line_number}.outbound_proxy.2.register_on_enable=
|
||||
account.{$row.line_number}.outbound_proxy.2.failback_timeout=
|
||||
account.{$row.line_number}.outbound_proxy.2.failback_mode=
|
||||
account.{$row.line_number}.outbound_proxy.2.retry_counts=
|
||||
account.{$row.line_number}.outbound_proxy.2.only_signal_with_registered=
|
||||
account.{$row.line_number}.outbound_proxy.2.failback_subscribe.enable=
|
||||
account.{$row.line_number}.outbound_proxy.2.invite_retry_counts=
|
||||
|
||||
account.{$row.line_number}.sip_server.2.register_on_enable=
|
||||
account.{$row.line_number}.sip_server.2.failback_timeout=
|
||||
account.{$row.line_number}.sip_server.2.failback_mode=
|
||||
account.{$row.line_number}.sip_server.2.failback_subscribe.enable=
|
||||
account.{$row.line_number}.sip_server.2.only_signal_with_registered=
|
||||
account.{$row.line_number}.sip_server.2.invite_retry_counts=
|
||||
|
||||
account.{$row.line_number}.static_cache_pri=
|
||||
account.{$row.line_number}.dns_cache_type=
|
||||
account.{$row.line_number}.naptr_build=
|
||||
account.{$row.line_number}.fallback.timeout = {$yealink_outbound_proxy_fallback_interval}
|
||||
account.{$row.line_number}.fallback.redundancy_type=
|
||||
account.{$row.line_number}.reg_failed_retry_max_time=
|
||||
account.{$row.line_number}.reg_failed_retry_min_time=
|
||||
account.{$row.line_number}.redundancy_with_reg_fail.enable =
|
||||
|
||||
##V83 Add
|
||||
account.{$row.line_number}.sip_server.1.outbound_proxy_enable =
|
||||
account.{$row.line_number}.sip_server.2.outbound_proxy_enable =
|
||||
|
||||
################################################################
|
||||
# SIP Basic config ##
|
||||
################################################################
|
||||
account.{$row.line_number}.contact_take_line_param=
|
||||
account.{$row.line_number}.update_ack_while_dialing=
|
||||
account.{$row.line_number}.srtp_lifetime=
|
||||
account.{$row.line_number}.third_part_request_with_route.enable=
|
||||
account.{$row.line_number}.insert_outbound_in_route.enable=
|
||||
account.{$row.line_number}.path.enable=
|
||||
account.{$row.line_number}.sub_fail_retry_interval=
|
||||
account.{$row.line_number}.transfer_refer_to_contact_header.enable=
|
||||
account.{$row.line_number}.hold_use_inactive=
|
||||
account.{$row.line_number}.gruu.enable=
|
||||
account.{$row.line_number}.dial_tone=
|
||||
account.{$row.line_number}.call_id_mode=
|
||||
account.{$row.line_number}.subscribe_expires_overlap=
|
||||
account.{$row.line_number}.register_expires_overlap=
|
||||
account.{$row.line_number}.call_info=
|
||||
account.{$row.line_number}.custom_ua=
|
||||
account.{$row.line_number}.mwi_parse_terminated=
|
||||
account.{$row.line_number}.check_cseq.enable=
|
||||
account.{$row.line_number}.check_to_tag.enable=
|
||||
account.{$row.line_number}.vq_rtcpxr.collector_server_port=
|
||||
account.{$row.line_number}.vq_rtcpxr.collector_server_host=
|
||||
account.{$row.line_number}.vq_rtcpxr.collector_name=
|
||||
account.{$row.line_number}.compact_header_enable=
|
||||
account.{$row.line_number}.cp_source = {$yealink_cp_source}
|
||||
account.{$row.line_number}.cid_source_ppi=
|
||||
account.{$row.line_number}.cid_source_privacy=
|
||||
account.{$row.line_number}.reg_with_pani_header.enable =
|
||||
account.{$row.line_number}.alert_info=
|
||||
account.{$row.line_number}.picture_info_enable=
|
||||
|
||||
##V83 Add
|
||||
account.{$row.line_number}.invite_with_pani_header.enable =
|
||||
|
||||
##V84 Add
|
||||
account.{$row.line_number}.invite_with_rpid_header.enable=
|
||||
|
||||
account.{$row.line_number}.auto_answer_mute_enable
|
||||
|
||||
##V84 SP4 Add
|
||||
account.1.share_line.enable_private_code =
|
||||
account.1.share_line.cancel_private_code =
|
||||
|
||||
#######################################################################################
|
||||
## History ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.missed_calllog = {$yealink_missed_calllog}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## Forward ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.timeout_fwd.off_code=
|
||||
account.{$row.line_number}.timeout_fwd.on_code=
|
||||
account.{$row.line_number}.timeout_fwd.timeout=
|
||||
account.{$row.line_number}.timeout_fwd.target=
|
||||
account.{$row.line_number}.timeout_fwd.enable=
|
||||
account.{$row.line_number}.busy_fwd.off_code=
|
||||
account.{$row.line_number}.busy_fwd.on_code=
|
||||
account.{$row.line_number}.busy_fwd.target=
|
||||
account.{$row.line_number}.busy_fwd.enable=
|
||||
account.{$row.line_number}.always_fwd.off_code=
|
||||
account.{$row.line_number}.always_fwd.on_code=
|
||||
account.{$row.line_number}.always_fwd.target=
|
||||
account.{$row.line_number}.always_fwd.enable=
|
||||
|
||||
#######################################################################################
|
||||
## DND ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.dnd.enable=
|
||||
account.{$row.line_number}.dnd.off_code=
|
||||
account.{$row.line_number}.dnd.on_code=
|
||||
|
||||
#######################################################################################
|
||||
## Voice Mail ##
|
||||
#######################################################################################
|
||||
voice_mail.number.1= {$voicemail_number}
|
||||
account.{$row.line_number}.subscribe_mwi=
|
||||
account.{$row.line_number}.subscribe_mwi_to_vm=
|
||||
account.{$row.line_number}.subscribe_mwi_expires=
|
||||
account.{$row.line_number}.display_mwi.enable=
|
||||
|
||||
#######################################################################################
|
||||
## Auto Dial ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.auto_dial_enable=
|
||||
account.{$row.line_number}.auto_dial_num=
|
||||
|
||||
#######################################################################################
|
||||
## Preference&Status ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.ringtone.ring_type=
|
||||
|
||||
#######################################################################################
|
||||
## Digitmap ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.dialplan.digitmap.enable=
|
||||
account.{$row.line_number}.dialplan.digitmap.string=
|
||||
account.{$row.line_number}.dialplan.digitmap.no_match_action=
|
||||
account.{$row.line_number}.dialplan.digitmap.interdigit_short_timer=
|
||||
account.{$row.line_number}.dialplan.digitmap.interdigit_long_timer=
|
||||
account.{$row.line_number}.dialplan.digitmap.apply_to.press_send=
|
||||
account.{$row.line_number}.dialplan.digitmap.apply_to.forward=
|
||||
account.{$row.line_number}.dialplan.digitmap.apply_to.history_dial=
|
||||
account.{$row.line_number}.dialplan.digitmap.apply_to.directory_dial=
|
||||
account.{$row.line_number}.dialplan.digitmap.apply_to.on_hook_dial=
|
||||
account.{$row.line_number}.dialplan.digitmap.active.on_hook_dialing=
|
||||
|
||||
#######################################################################################
|
||||
## Rings Settings ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.alert_info_url_enable=
|
||||
|
||||
#######################################################################################
|
||||
## BLF/BLF List ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.blf.blf_list_uri=
|
||||
account.{$row.line_number}.blf_list_barge_in_code=
|
||||
account.{$row.line_number}.blf_list_code=
|
||||
account.{$row.line_number}.blf_list_retrieve_call_parked_code =
|
||||
account.{$row.line_number}.blf.subscribe_period =
|
||||
account.{$row.line_number}.blf.match_host.enable =
|
||||
account.{$row.line_number}.out_dialog_blf_enable =
|
||||
account.{$row.line_number}.blf.subscribe_event =
|
||||
|
||||
##V84 Add
|
||||
account.{$row.line_number}.blf_list_call_parked_code=
|
||||
account.{$row.line_number}.blf_list_call_parked_list=
|
||||
|
||||
##V84 SP4 ADD
|
||||
account.{$row.line_number}.blf_list_whisper_code=
|
||||
account.{$row.line_number}.blf_list_listen_in_code=
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## SCA ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.shared_line = {$shared_line_1}
|
||||
account.{$row.line_number}.line_seize.expires =
|
||||
account.{$row.line_number}.shared_line_one_touch_bargein.enable =
|
||||
account.{$row.line_number}.shared_line_one_touch_retrieve.enable =
|
||||
account.{$row.line_number}.sca_manage_interface_display_time =
|
||||
account.{$row.line_number}.shared_line_callpull_code =
|
||||
|
||||
##V83 Add
|
||||
account.x.share_line.barge_in.enable
|
||||
|
||||
###V85 add
|
||||
account.X.shared_line.idle_details=
|
||||
|
||||
#######################################################################################
|
||||
## BLA ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.bla_number =
|
||||
account.{$row.line_number}.bla_subscribe_period =
|
||||
account.{$row.line_number}.bla.notify_with_expire.enable =
|
||||
account.{$row.line_number}.bla.subscribe_uri_build_type =
|
||||
|
||||
#######################################################################################
|
||||
## Call Park ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.callpark_enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft ACD ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.acd.enable =
|
||||
account.{$row.line_number}.acd.available =
|
||||
account.{$row.line_number}.acd.unavailable_reason_enable =
|
||||
account.{$row.line_number}.acd.initial_state =
|
||||
account.{$row.line_number}.subscribe_acd_expires =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft ACD Call Center ##
|
||||
#######################################################################################
|
||||
##account.X.reason_code.Y =
|
||||
##account.X.reason_code_name.Y =
|
||||
##account.X.bw_disp_code.Y =
|
||||
##account.X.bw_disp_code_name.Y =
|
||||
##account.X.supervisor_info_code.Y =
|
||||
##account.X.supervisor_info_code_name.Y =
|
||||
##The value Y must be continuous.
|
||||
|
||||
account.{$row.line_number}.reason_code.1 =
|
||||
account.{$row.line_number}.reason_code_name.1 =
|
||||
account.{$row.line_number}.bw_disp_code.1 =
|
||||
account.{$row.line_number}.bw_disp_code_name.1 =
|
||||
account.{$row.line_number}.supervisor_info_code.1 =
|
||||
account.{$row.line_number}.supervisor_info_code_name.1 =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Call Center ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.call_center.call_info_enable =
|
||||
account.{$row.line_number}.call_center.show_call_info_time =
|
||||
account.{$row.line_number}.call_center.disp_code_enable =
|
||||
account.{$row.line_number}.call_center.trace_enable =
|
||||
account.{$row.line_number}.call_center.emergency_enable =
|
||||
account.{$row.line_number}.call_center.queue_status_enable =
|
||||
account.{$row.line_number}.call_center.queue_status_light_enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Hoteling ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.hoteling.enable =
|
||||
account.{$row.line_number}.hoteling.user_id =
|
||||
account.{$row.line_number}.hoteling.password =
|
||||
account.{$row.line_number}.hoteling.expires =
|
||||
account.{$row.line_number}.hoteling.auto_login_enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft XSI ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.xsi.user =
|
||||
account.{$row.line_number}.xsi.password =
|
||||
account.{$row.line_number}.xsi.host =
|
||||
account.{$row.line_number}.xsi.server_type =
|
||||
account.{$row.line_number}.xsi.port =
|
||||
|
||||
#######################################################################################
|
||||
## Call Pickup ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.direct_pickup_code =
|
||||
account.{$row.line_number}.group_pickup_code =
|
||||
account.{$row.line_number}.dialoginfo_callpickup =
|
||||
account.{$row.line_number}.refresh_remote_id.enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Call Recording ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.call_recording.enable =
|
||||
|
||||
#######################################################################################
|
||||
## Network Conferene ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.conf_uri = {if $nway_conference == 'true'}nway{$row.auth_id}@{$row.server_address}{/if}
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Call Decline ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.features.call_decline.enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Security Classification ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.security_classification.enable =
|
||||
|
||||
#######################################################################################
|
||||
## Broadsoft Flexible Seating ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.flexible_seating.enable =
|
||||
account.{$row.line_number}.hoteling.pin =
|
||||
account.{$row.line_number}.hoteling.mode =
|
||||
|
||||
#######################################################################################
|
||||
## Features Sync ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.features.forward.feature_key_sync.local_processing.enable =
|
||||
account.{$row.line_number}.features.dnd.feature_key_sync.local_processing.enable =
|
||||
|
||||
##V84 Add
|
||||
account.{$row.line_number}.dnd.feature_key_sync.enable =
|
||||
account.{$row.line_number}.feature_key_sync.enable =
|
||||
account.{$row.line_number}.forward.feature_key_sync.enable =
|
||||
|
||||
#######################################################################################
|
||||
## ACD ##
|
||||
#######################################################################################
|
||||
account.{$row.line_number}.acd.available_url =
|
||||
account.{$row.line_number}.acd.away_url =
|
||||
account.{$row.line_number}.acd.refresh_url =
|
||||
account.{$row.line_number}.acd.call_information =
|
||||
|
||||
|
||||
|
||||
#######################################################################################
|
||||
## virtual_user ##
|
||||
#######################################################################################
|
||||
##V84 Add
|
||||
bw.virtual_user.1.enable =
|
||||
bw.virtual_user.1.label =
|
||||
bw.virtual_user.1.xsi.dnd.enable =
|
||||
bw.virtual_user.1.xsi.host =
|
||||
bw.virtual_user.1.xsi.password =
|
||||
bw.virtual_user.1.xsi.port =
|
||||
bw.virtual_user.1.xsi.server_type =
|
||||
bw.virtual_user.1.xsi.user =
|
||||
|
||||
##V86 Add
|
||||
pstn.account.x.enable =
|
||||
pstn.account.x.label =
|
||||
pstn.account.x.missed_calllog =
|
||||
pstn.account.x.auto_answer =
|
||||
pstn.account.x.auto_answer_mute_enable =
|
||||
pstn.account.x.ring_type =
|
||||
account.x.ume.manual_record.enable =
|
||||
account.1.codec.x.enable =
|
||||
account.1.codec.x.payload_type =
|
||||
account.1.codec.x.priority =
|
||||
account.1.codec.x.rtpmap =
|
||||
account.x.tls.srtp_encryption_compulsorily =
|
||||
account.x.codec.g729ab.enable =
|
||||
|
||||
{/foreach}
|
||||
File diff suppressed because it is too large
Load Diff
|
|
@ -2008,7 +2008,7 @@ features.doorphone.X.device_model=
|
|||
#######################################################################################
|
||||
app.install_url =
|
||||
app.uninstall =
|
||||
app.unavailable =
|
||||
{foreach $yealink_app_unavailable as $value}app.unavailable = {$value}{"\n"}{/foreach}
|
||||
app.autorun =
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -652,7 +652,7 @@ account.2.nat.udp_update_enable = {if isset($account.2.password)}{if isset($yeal
|
|||
account.2.nat.udp_update_time = 30
|
||||
|
||||
#Enable or disable the NAT Rport; 0-Disabled (default), 1-Enabled;
|
||||
account.2.nat.rport = {$yealink_rport_2}
|
||||
account.2.nat.rport = {$yealink_rport}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
|
|
@ -1161,7 +1161,7 @@ account.3.nat.udp_update_enable = {if isset($account.3.password)}{if isset($yeal
|
|||
account.3.nat.udp_update_time = 30
|
||||
|
||||
#Enable or disable the NAT Rport; 0-Disabled (default), 1-Enabled;
|
||||
account.3.nat.rport = {$yealink_rport_3}
|
||||
account.3.nat.rport = {$yealink_rport}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
|
|
@ -1653,7 +1653,7 @@ account.4.nat.udp_update_enable = {if isset($account.4.password)}{if isset($yeal
|
|||
account.4.nat.udp_update_time = 30
|
||||
|
||||
#Enable or disable the NAT Rport; 0-Disabled (default), 1-Enabled;
|
||||
account.4.nat.rport = {$yealink_rport_4}
|
||||
account.4.nat.rport = {$yealink_rport}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
|
|
@ -2145,7 +2145,7 @@ account.5.nat.udp_update_enable = {if isset($account.5.password)}{if isset($yeal
|
|||
account.5.nat.udp_update_time = 30
|
||||
|
||||
#Enable or disable the NAT Rport; 0-Disabled (default), 1-Enabled;
|
||||
account.5.nat.rport = {$yealink_rport_5}
|
||||
account.5.nat.rport = {$yealink_rport}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
|
|
@ -2636,7 +2636,7 @@ account.6.nat.udp_update_enable = {if isset($account.6.password)}{if isset($yeal
|
|||
account.6.nat.udp_update_time = 30
|
||||
|
||||
#Enable or disable the NAT Rport; 0-Disabled (default), 1-Enabled;
|
||||
account.6.nat.rport = {$yealink_rport_6}
|
||||
account.6.nat.rport = {$yealink_rport}
|
||||
|
||||
|
||||
#######################################################################################
|
||||
|
|
|
|||
|
|
@ -447,7 +447,7 @@ else { //default: white
|
|||
}
|
||||
|
||||
body {
|
||||
z-index: 1;
|
||||
z-index: auto;
|
||||
position: absolute;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue