Zabbix 5.0 Telegram: emoji by severity support ⚠️ ✅ 🔥

0
1765

By default, Zabbix 5.0 integrated Telegram Webhook Media Type, but not support emoji by Event Severity, eg:

Warning: ⚠️

Average: ⛔

Disater: 🔥

Problem Resolve: ✅

I was just modified Javascript:

var Telegram = {
    token: null,
    to: null,
    message: null,
    proxy: null,
    parse_mode: null,

    sendMessage: function() {
        var params = {
            chat_id: Telegram.to,
            text: Telegram.message,
            disable_web_page_preview: true,
            disable_notification: false
        },
        data,
        response,
        request = new CurlHttpRequest(),
        url = 'https://api.telegram.org/bot' + Telegram.token + '/sendMessage';

        if (Telegram.parse_mode !== null) {
            params['parse_mode'] = Telegram.parse_mode;
        }

        if (Telegram.proxy) {
            request.setProxy(Telegram.proxy);
        }

        request.AddHeader('Content-Type: application/json');
        data = JSON.stringify(params);

        // Remove replace() function if you want to see the exposed token in the log file.
        Zabbix.Log(4, '[Telegram Webhook] URL: ' + url.replace(Telegram.token, '<TOKEN>'));
        Zabbix.Log(4, '[Telegram Webhook] params: ' + data);
        response = request.Post(url, data);
        Zabbix.Log(4, '[Telegram Webhook] HTTP code: ' + request.Status());

        try {
            response = JSON.parse(response);
        }
        catch (error) {
            response = null;
        }

        if (request.Status() !== 200 || typeof response.ok !== 'boolean' || response.ok !== true) {
            if (typeof response.description === 'string') {
                throw response.description;
            }
            else {
                throw 'Unknown error. Check debug log for more information.'
            }
        }
    }
}

try {
    var params = JSON.parse(value);
    var icon;

    if (typeof params.Token === 'undefined') {
        throw 'Incorrect value is given for parameter "Token": parameter is missing';
    }

    Telegram.token = params.Token;

    if (params.HTTPProxy) {
        Telegram.proxy = params.HTTPProxy;
    } 

    if (['Markdown', 'HTML', 'MarkdownV2'].indexOf(params.ParseMode) !== -1) {
        Telegram.parse_mode = params.ParseMode;
    }

    if (params.Severity == 'Warning') {
        icon = '⚠️';
    } else if (params.Severity == 'Average') {
        icon = '⛔';
    } else if (params.Severity == 'High') {
        icon = '❌';
    } else {
        icon = String.fromCodePoint('0x1F525');
    }

    if (params.Trigger_status == 'OK') {
        icon = '✅';
    }
    Telegram.to = params.To;
    Telegram.message = icon + ' ' + params.Subject + '\n' + params.Message;
    Telegram.sendMessage();

    return 'OK';
}
catch (error) {
    Zabbix.Log(4, '[Telegram Webhook] notification failed: ' + error);
    throw 'Sending failed: ' + error + '.';
}

Add some Parameters:

ParseMode: Markdown for send bold text in Event Subject.

To send shortern Notification, change Message Template:

Result:

LEAVE A REPLY

Please enter your comment!
Please enter your name here