Add more variables for webhook json
To allow status specific icons and a special Text defined in the json, not only provide #message as variable, but also #server_ip, #server_label, #server_last_offline_duration and #status.pull/1016/head
parent
aad1a1eda7
commit
3120b68df1
|
@ -1068,23 +1068,22 @@ namespace {
|
||||||
{
|
{
|
||||||
protected $url;
|
protected $url;
|
||||||
protected $json;
|
protected $json;
|
||||||
protected $message;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send Webhook
|
* Send Webhook
|
||||||
*
|
*
|
||||||
* @return bool|string
|
* @return bool|string
|
||||||
* @var string $message
|
* @var array $replacements an array of the replacements
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public function sendWebhook($message)
|
public function sendWebhook($replacements)
|
||||||
{
|
{
|
||||||
$error = "";
|
$error = "";
|
||||||
$success = 1;
|
$success = 1;
|
||||||
|
|
||||||
$this->setMessage($message);
|
$replacements['#message'] = $this->stripTagsFromMessage($replacements['#message']);
|
||||||
$jsonMessage = strtr($this->json, array('#message' => $this->message));
|
$jsonMessage = strtr($this->json, $replacements);
|
||||||
|
|
||||||
$curl = curl_init($this->url);
|
$curl = curl_init($this->url);
|
||||||
curl_setopt($curl, CURLOPT_POST, 1);
|
curl_setopt($curl, CURLOPT_POST, 1);
|
||||||
|
@ -1160,7 +1159,7 @@ namespace {
|
||||||
* @var string $message
|
* @var string $message
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public function setMessage($message)
|
public function stripTagsFromMessage($message)
|
||||||
{
|
{
|
||||||
$message = str_replace("<ul>", "", $message);
|
$message = str_replace("<ul>", "", $message);
|
||||||
$message = str_replace("</ul>", "\n", $message);
|
$message = str_replace("</ul>", "\n", $message);
|
||||||
|
@ -1171,7 +1170,7 @@ namespace {
|
||||||
$message = str_replace("<b>", "", $message);
|
$message = str_replace("<b>", "", $message);
|
||||||
$message = str_replace("<b/>", "", $message);
|
$message = str_replace("<b/>", "", $message);
|
||||||
$message = strip_tags($message);
|
$message = strip_tags($message);
|
||||||
$this->message = (string)$message;
|
return (string)$message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,7 @@ $sm_lang = array(
|
||||||
'webhook_url' => 'Webhook Url',
|
'webhook_url' => 'Webhook Url',
|
||||||
'webhook_url_description' => 'Webhook public endpoint url, should start with https://.',
|
'webhook_url_description' => 'Webhook public endpoint url, should start with https://.',
|
||||||
'webhook_json' => 'Webhook JSON',
|
'webhook_json' => 'Webhook JSON',
|
||||||
'webhook_json_description' => 'Define a custom json, use #message as message variable.',
|
'webhook_json_description' => 'Define a custom json, use #message as message variable, other variables are #server_ip, #server_label, #server_last_offline_duration and #status',
|
||||||
'delete_title' => 'Delete User',
|
'delete_title' => 'Delete User',
|
||||||
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
'delete_message' => 'Are you sure you want to delete user \'%1\'?',
|
||||||
'deleted' => 'User deleted.',
|
'deleted' => 'User deleted.',
|
||||||
|
@ -315,7 +315,7 @@ $sm_lang = array(
|
||||||
'webhook_url' => 'Webhook Url',
|
'webhook_url' => 'Webhook Url',
|
||||||
'webhook_url_description' => 'Url to webhook endpoint',
|
'webhook_url_description' => 'Url to webhook endpoint',
|
||||||
'webhook_json' => 'Webhook Json',
|
'webhook_json' => 'Webhook Json',
|
||||||
'webhook_json_description' => 'Customized Json, use #message as message variable.',
|
'webhook_json_description' => 'Customized Json, use #message as message variable, other variables are #server_ip, #server_label, #server_last_offline_duration and #status.',
|
||||||
'pushover_status' => 'Allow sending Pushover messages',
|
'pushover_status' => 'Allow sending Pushover messages',
|
||||||
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/" target="_blank">their website</a> for more info.',
|
'pushover_description' => 'Pushover is a service that makes it easy to get real-time notifications. See <a href="https://pushover.net/" target="_blank">their website</a> for more info.',
|
||||||
'pushover_clone_app' => 'Click here to create your Pushover app',
|
'pushover_clone_app' => 'Click here to create your Pushover app',
|
||||||
|
|
|
@ -316,7 +316,7 @@ class StatusNotifier
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->combiNotification['notifications'][$method][$status][$this->server_id] =
|
$this->combiNotification['notifications'][$method][$status][$this->server_id] =
|
||||||
psm_parse_msg($this->status_new, $method . '_message', $this->server, true);
|
psm_parse_msg($this->status_new, $method . '_message', $this->server, true);
|
||||||
}
|
}
|
||||||
|
@ -631,7 +631,13 @@ class StatusNotifier
|
||||||
}
|
}
|
||||||
$webhook->setUrl($user['webhook_url']);
|
$webhook->setUrl($user['webhook_url']);
|
||||||
$webhook->setJson($user['webhook_json']);
|
$webhook->setJson($user['webhook_json']);
|
||||||
$webhook->sendWebhook($message);
|
$webhook->sendWebhook([
|
||||||
|
'#message' => $message,
|
||||||
|
'#server_ip' => $this->server['ip'],
|
||||||
|
'#server_label' => $this->server['label'],
|
||||||
|
'#server_last_offline_duration' => $this->status_new ? $this->server['last_offline_duration'] : '',
|
||||||
|
'#status' => $this->status_new ? 'online' : 'offline'
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
@ -697,12 +703,12 @@ class StatusNotifier
|
||||||
psm_parse_msg($this->status_new, 'telegram_message', $this->server);
|
psm_parse_msg($this->status_new, 'telegram_message', $this->server);
|
||||||
$telegram = psm_build_telegram();
|
$telegram = psm_build_telegram();
|
||||||
$telegram->setMessage($message);
|
$telegram->setMessage($message);
|
||||||
|
|
||||||
// Log
|
// Log
|
||||||
if (psm_get_conf('log_telegram')) {
|
if (psm_get_conf('log_telegram')) {
|
||||||
$log_id = psm_add_log($this->server_id, 'telegram', $message);
|
$log_id = psm_add_log($this->server_id, 'telegram', $message);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
// Log
|
// Log
|
||||||
if (!empty($log_id)) {
|
if (!empty($log_id)) {
|
||||||
|
|
Loading…
Reference in New Issue