zabbix_export:
version: '7.0'
media_types:
- name: Brevis.one
type: WEBHOOK
parameters:
- name: endpoint
value: '<PLACE HTTP API URL>'
- name: flash
value: 'false'
- name: password
value: '<PLACE PASSWORD>'
- name: ring
value: 'false'
- name: send_to
value: '{ALERT.SENDTO}'
- name: telauto
value: 'true'
- name: text
value: '{ALERT.MESSAGE}'
- name: username
value: '<PLACE USERNAME>'
status: DISABLED
script: |
var BrevisOne = {
params: [],
addParam: function (name, value) {
BrevisOne.params.push(name + '=' + encodeURIComponent(value));
},
setProxy: function (HTTPProxy) {
BrevisOne.HTTPProxy = HTTPProxy;
},
setPayload: function (params) {
var parts = params.send_to.split(':'),
defaultValues = {
ring: 'true',
flash: 'true',
telauto: 'false'
};
BrevisOne.addParam('username', params.username);
BrevisOne.addParam('password', params.password);
BrevisOne.addParam('text', params.text);
if (parts.length > 1) {
BrevisOne.addParam('mode', parts[0]);
BrevisOne.addParam('to', parts[1]);
}
else {
BrevisOne.addParam('to', parts[0]);
}
Object.keys(defaultValues)
.forEach(function (key) {
if (params[key] && params[key].trim() && params[key].toLowerCase() === defaultValues[key]) {
BrevisOne.addParam(key, defaultValues[key]);
}
});
},
request: function () {
var response,
request = new HttpRequest(),
data = '?' + BrevisOne.params.join('&');
request.addHeader('Content-Type: multipart/form-data');
if (typeof BrevisOne.HTTPProxy !== 'undefined' && BrevisOne.HTTPProxy !== '') {
request.setProxy(BrevisOne.HTTPProxy);
}
Zabbix.log(4, '[ BrevisOne Webhook ] Sending request.');
response = request.post(params.endpoint + data);
Zabbix.log(4, '[ BrevisOne Webhook ] Received response with status code ' +
request.getStatus() + '\n' + response);
if (request.getStatus() < 200 || request.getStatus() >= 300) {
var message = 'Request failed with status code ' + request.getStatus();
if (response) {
message += ': ' + response;
}
throw message + '. Check debug log for more information.';
}
}