Skip to content

Commit

Permalink
feature: Add Microsoft Teams Alert Transport (#5023)
Browse files Browse the repository at this point in the history
  • Loading branch information
Rosiak authored and laf committed Nov 19, 2016
1 parent 120a005 commit 9fb02bb
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
17 changes: 17 additions & 0 deletions doc/Extensions/Alerting.md
Expand Up @@ -26,6 +26,7 @@ Table of Content:
- [VictorOps](#transports-victorops)
- [Canopsis](#transports-canopsis)
- [osTicket](#transports-osticket)
- [Microsoft Teams](#transports-msteams)
- [Entities](#entities)
- [Devices](#entity-devices)
- [BGP Peers](#entity-bgppeers)
Expand Down Expand Up @@ -542,6 +543,22 @@ $config['alert']['transports']['osticket']['token'] = '123456789';
```
~~

## <a name="transports-msteams">Microsoft Teams</a>

[Using a proxy?](../Support/Configuration.md#proxy-support)

Microsoft Teams. LibreNMS can send alerts to Microsoft Teams Connector API which are then posted to a specific channel. To configure the transport, go to:

Global Settings -> Alerting Settings -> Microsoft Teams Transport.

This can also be done manually in config.php :

~
```php
$config['alert']['transports']['msteams']['url'] = 'https://outlook.office365.com/webhook/123456789';
```
~

# <a name="entities">Entities

Entities as described earlier are based on the table and column names within the database, if you are unsure of what the entity is you want then have a browse around inside MySQL using `show tables` and `desc <tablename>`.
Expand Down
22 changes: 22 additions & 0 deletions html/pages/settings/alerting.inc.php
Expand Up @@ -985,6 +985,28 @@
<input id="osticket_token" class="form-control" type="text" name="global-config-input" value="'.$osticket_token['config_value'].'" data-config_id="'.$osticket_token['config_id'].'">
<span class="form-control-feedback">
<i class="fa" aria-hidden="true"></i>
</span>
</div>
</div>
</div>
</div>
</div>';
$msteams_url = get_config_by_name('alert.transports.msteams.url');
echo '
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#msteams_transport_expand"><i class="fa fa-caret-down"></i> Microsoft Teams transport</a> <button name="test-alert" id="test-alert" type="button" data-transport="msteams" class="btn btn-primary btn-xs pull-right">Test transport</button>
</h4>
</div>
<div id="msteams_transport_expand" class="panel-collapse collapse">
<div class="panel-body">
<div class="form-group has-feedback">
<label for="msteams_url" class="col-sm-4 control-label">Microsoft Teams Webhook URL</label>
<div class="col-sm-4">
<input id="msteams_url" class="form-control" type="text" name="global-config-input" value="'.$msteams_url['config_value'].'" data-config_id="'.$msteams_url['config_id'].'">
<span class="form-control-feedback">
<i class="fa" aria-hidden="true"></i>
</span>
</div>
</div>
Expand Down
36 changes: 36 additions & 0 deletions includes/alerts/transport.msteams.php
@@ -0,0 +1,36 @@
/*
* LibreNMS
*
* Copyright (c) 2016 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.
*/

$url = $opts['url'];
$color = ($obj['state'] == 0 ? '#00FF00' : '#FF0000');
$data = array(
'title' => ($obj['name'] ? $obj['name'] . ' on ' . $obj['hostname'] : $obj['title']) ,
'themeColor' => $color ,
'text' => strip_tags($obj['msg'])
);
$curl = curl_init();
set_curl_proxy($curl);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
'Content-type' => 'application/json',
'Expect:'
));
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data));
$ret = curl_exec($curl);
$code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if ($code != 200) {
var_dump("Microsoft Teams returned Error, retry later");
return false;
}

return true;
1 change: 1 addition & 0 deletions sql-schema/151.sql
@@ -0,0 +1 @@
INSERT INTO config VALUES ('','alert.transports.msteams.url','','','Microsoft Teams Webhook URL','alerting',0, 'transports', 0, 0, 0);

0 comments on commit 9fb02bb

Please sign in to comment.