diff --git a/doc/Extensions/Alerting.md b/doc/Extensions/Alerting.md
index 02e9ea6c3..d1b93e3d4 100644
--- a/doc/Extensions/Alerting.md
+++ b/doc/Extensions/Alerting.md
@@ -11,6 +11,7 @@ Table of Content:
- [API](#transports-api)
- [Nagios-Compatible](#transports-nagios)
- [IRC](#transports-irc)
+ - [Slack](#transports-slack)
# About
@@ -170,3 +171,13 @@ Configuration of the LibreNMS IRC-Bot is described [here](https://github.com/lib
$config['alert']['transports']['irc'] = true;
```
+## Slack
+
+The Slack transport will POST the alert message to your Slack Incoming WebHook, you are able to specify multiple webhooks along with the relevant options to go with it. All options are optional, the only required value is for url, without this then no call to Slack will be made. Below is an example of how to send alerts to two channels with different customised options:
+
+```php
+$config['alert']['transports']['slack'][] = array('url' => "https://hooks.slack.com/services/A12B34CDE/F56GH78JK/L901LmNopqrSTUVw2w3XYZAB4C", 'channel' => '#Alerting');
+
+$config['alert']['transports']['slack'][] = array('url' => "https://hooks.slack.com/services/A12B34CDE/F56GH78JK/L901LmNopqrSTUVw2w3XYZAB4C", 'channel' => '@john', 'username' => 'LibreNMS', 'icon_emoji' => ':ghost:');
+
+```
diff --git a/includes/alerts/transport.slack.php b/includes/alerts/transport.slack.php
new file mode 100644
index 000000000..15ba3ea19
--- /dev/null
+++ b/includes/alerts/transport.slack.php
@@ -0,0 +1,51 @@
+/* Copyright (C) 2014 Daniel Preussker
+ * 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.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see . */
+
+/**
+ * API Transport
+ * @author f0o
+ * @copyright 2014 f0o, LibreNMS
+ * @license GPL
+ * @package LibreNMS
+ * @subpackage Alerts
+ */
+
+foreach( $opts as $tmp_api ) {
+ $host = $tmp_api['url'];
+ foreach( $obj as $k=>$v ) {
+ $api = str_replace("%".$k,$method == "get" ? urlencode($v) : $v, $api);
+ }
+ $curl = curl_init();
+ $data = array(
+ 'text' => $obj['msg'],
+ 'channel' => $tmp_api['channel'],
+ 'username' => $tmp_api['username'],
+ 'icon_url' => $tmp_api['icon_url'],
+ 'icon_emoji' => $tmp_api['icon_emoji'],
+ );
+ $alert_message = "payload=" . json_encode($data);
+ curl_setopt($curl, CURLOPT_URL, $host);
+ curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($curl, CURLOPT_POST,true);
+ curl_setopt($curl, CURLOPT_POSTFIELDS, $alert_message );
+ $ret = curl_exec($curl);
+ $code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
+ if( $code != 200 ) {
+ var_dump("API '$host' returnd Error"); //FIXME: propper debuging
+ var_dump("Params: ".$alert_message); //FIXME: propper debuging
+ var_dump("Return: ".$ret); //FIXME: propper debuging
+ return false;
+ }
+}
+return true;