<?xml version="1.0" encoding="UTF-8"?>
<zabbix_export>
    <version>6.2</version>
    <date>2022-07-16T18:29:53Z</date>
    <media_types>
        <media_type>
            <name>ZBX Viewer</name>
            <type>WEBHOOK</type>
            <parameters>
                <parameter>
                    <name>endpoint</name>
                    <value>https://zbx.vovanys.com/push/sendPush_json.php</value>
                </parameter>
                <parameter>
                    <name>message</name>
                    <value>{ALERT.MESSAGE}</value>
                </parameter>
                <parameter>
                    <name>title</name>
                    <value>{ALERT.SUBJECT}</value>
                </parameter>
                <parameter>
                    <name>token</name>
                    <value>{ALERT.SENDTO}</value>
                </parameter>
            </parameters>
            <script>try {
    var params = JSON.parse(value),
        request = new HttpRequest(),
        data,
        response;

    if (typeof params.HTTPProxy === 'string' &amp;&amp; params.HTTPProxy.trim() !== '') {
        request.SetProxy(params.HTTPProxy);
    }

    data = {
        token: params.token,
        title: params.title,
        desc: params.message
    };

    data = JSON.stringify(data);
    Zabbix.Log(4, '[ ZBXViewer Webhook ] Sending request: ' + params.endpoint + '\n' + data);

    request.addHeader('Content-Type: application/json');
    response = request.post(params.endpoint, data);


    Zabbix.Log(4, '[ ZBXViewer Webhook ] Received response with status code ' + request.getStatus() + '\n' + response);

    if (response !== null) {
        try {
            response = JSON.parse(response);
        }
        catch (error) {
            Zabbix.Log(4, '[ ZBXViewer Webhook ] Failed to parse response received from ZBXViewer');
            response = null;
        }
    }

    if (request.getStatus() != 200) {
        if (response !== null &amp;&amp; typeof response === 'object' &amp;&amp; typeof response.errors === 'object'
                &amp;&amp; typeof response.errors[0] === 'string') {
            throw response.errors[0];
        }
        else {
            throw 'Unknown error. Check debug log for more information.';
        }
    }

    return 'OK';
}
catch (error) {
    Zabbix.Log(4, '[ ZBXViewer Webhook ] ZBXViewer notification failed: ' + error);
    throw 'ZBXViewer notification failed: ' + error;
}</script>
            <description>Please refer to setup guide here: https://zbx.vovanys.com/push/

Set token parameter with to your ZBXViewer application key.
When assigning ZBXViewer media to the Zabbix user - add user key into send to field.</description>
        </media_type>
    </media_types>
</zabbix_export>
