mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
* Add support for using Markdown. Alert templates can be written using Webex Teams (i.e., Spark) Markdown, which makes for some richer alerts. This option defaults to false to maintain Principle of Least Astonishment. * Update Cisco Spark docs. * Mention that Cisco Spark is now called Webex Teams * Add support for Markdown * Refactor text. Do not exceed 80 characters per line. * Refactor code to meet style guidelines. * Remove errant tabs and use spaces instead * Correct type check * Remove use of 'else'
94 lines
2.8 KiB
PHP
94 lines
2.8 KiB
PHP
<?php
|
|
/*
|
|
* LibreNMS
|
|
*
|
|
* Copyright (c) 2017 Søren Friis Rosiak <sorenrosiak@gmail.com>
|
|
* This program is free software: you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation, either version 3 of the License, or (at your
|
|
* option) any later version. Please see LICENSE.txt at the top level of
|
|
* the source code distribution for details.
|
|
*/
|
|
namespace LibreNMS\Alert\Transport;
|
|
|
|
use LibreNMS\Alert\Transport;
|
|
|
|
class Ciscospark extends Transport
|
|
{
|
|
public function deliverAlert($obj, $opts)
|
|
{
|
|
if (empty($this->config)) {
|
|
$room_id = $opts['roomid'];
|
|
$token = $opts['token'];
|
|
} else {
|
|
$room_id = $this->config['room-id'];
|
|
$token = $this->config['api-token'];
|
|
}
|
|
return $this->contactCiscospark($obj, $room_id, $token);
|
|
}
|
|
|
|
public function contactCiscospark($obj, $room_id, $token)
|
|
{
|
|
$text = strip_tags($obj['msg']);
|
|
$data = array (
|
|
'roomId' => $room_id
|
|
);
|
|
|
|
$akey = 'text';
|
|
if ($this->config['use-markdown'] === 'on') {
|
|
$akey = 'markdown';
|
|
}
|
|
$data[$akey] = $text;
|
|
|
|
$curl = curl_init();
|
|
set_curl_proxy($curl);
|
|
curl_setopt($curl, CURLOPT_URL, 'https://api.ciscospark.com/v1/messages');
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
|
|
'Content-type' => 'application/json',
|
|
'Expect:',
|
|
'Authorization: Bearer ' . $token
|
|
));
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
|
$ret = curl_exec($curl);
|
|
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
|
|
|
if ($code != 200) {
|
|
echo("Cisco Spark returned Error, retry later\r\n");
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public static function configTemplate()
|
|
{
|
|
return [
|
|
'config' => [
|
|
[
|
|
'title' => 'API Token',
|
|
'name' => 'api-token',
|
|
'descr' => 'CiscoSpark API Token',
|
|
'type' => 'text',
|
|
],
|
|
[
|
|
'title' => 'RoomID',
|
|
'name' => 'room-id',
|
|
'descr' => 'CiscoSpark Room ID',
|
|
'type' => 'text',
|
|
],
|
|
[
|
|
'title' => 'Use Markdown?',
|
|
'name' => 'use-markdown',
|
|
'descr' => 'Use Markdown when sending the alert',
|
|
'type' => 'checkbox',
|
|
'default' => false,
|
|
]
|
|
],
|
|
'validation' => [
|
|
'api-token' => 'required|string',
|
|
'room-id' => 'required|string'
|
|
]
|
|
];
|
|
}
|
|
}
|