{
    "zabbix_export": {
        "version": "7.0",
        "media_types": [
            {
                "name": "BigPanda",
                "type": "WEBHOOK",
                "parameters": [
                    {
                        "name": "ack_status",
                        "value": "{EVENT.ACK.STATUS}"
                    },
                    {
                        "name": "BP_app_key",
                        "value": ""
                    },
                    {
                        "name": "BP_endpoint",
                        "value": ""
                    },
                    {
                        "name": "BP_token",
                        "value": ""
                    },
                    {
                        "name": "check",
                        "value": "{EVENT.NAME}"
                    },
                    {
                        "name": "description",
                        "value": "{TRIGGER.NAME} - {TRIGGER.EXPRESSION}"
                    },
                    {
                        "name": "eventid",
                        "value": "{EVENT.ID}"
                    },
                    {
                        "name": "event_opdata",
                        "value": "{EVENT.OPDATA}"
                    },
                    {
                        "name": "event_recovery_status",
                        "value": "{EVENT.RECOVERY.STATUS}"
                    },
                    {
                        "name": "event_recovery_tags",
                        "value": "{EVENT.RECOVERY.TAGS}"
                    },
                    {
                        "name": "event_status",
                        "value": "{EVENT.STATUS}"
                    },
                    {
                        "name": "event_update_status",
                        "value": "{EVENT.UPDATE.STATUS}"
                    },
                    {
                        "name": "event_value",
                        "value": "{EVENT.VALUE}"
                    },
                    {
                        "name": "host",
                        "value": "{HOST.NAME}"
                    },
                    {
                        "name": "host_description",
                        "value": "{HOST.DESCRIPTION}"
                    },
                    {
                        "name": "host_dns",
                        "value": "{HOST.DNS}"
                    },
                    {
                        "name": "host_ip",
                        "value": "{HOST.IP}"
                    },
                    {
                        "name": "message",
                        "value": "{ALERT.MESSAGE}"
                    },
                    {
                        "name": "nSeverity",
                        "value": "{EVENT.NSEVERITY}"
                    },
                    {
                        "name": "service",
                        "value": "{TRIGGER.HOSTGROUP.NAME}"
                    },
                    {
                        "name": "severity",
                        "value": "{EVENT.SEVERITY}"
                    },
                    {
                        "name": "source",
                        "value": "{HOST.HOST}"
                    },
                    {
                        "name": "subject",
                        "value": "{ALERT.SUBJECT}"
                    },
                    {
                        "name": "tags",
                        "value": "{EVENT.TAGS}"
                    },
                    {
                        "name": "tags_json",
                        "value": "{EVENT.TAGSJSON}"
                    },
                    {
                        "name": "trigger_id",
                        "value": "{TRIGGER.ID}"
                    },
                    {
                        "name": "zbx_url",
                        "value": "http://3.89.241.137/zabbix/"
                    }
                ],
                "max_sessions": "15",
                "script": "try {\n    var result = {};\n    var params = JSON.parse(value);\n    var req = new HttpRequest();\n    var url = params.BP_endpoint + '?access_token=' + params.BP_token + '&app_key=' + params.BP_app_key;\n    req.addHeader('Content-Type: application/json; charset=utf-8');\n    var recovery_status = (params.event_status).toLowerCase();\n    var paramSeverity = params.severity;\n    var severity = paramSeverity != undefined && paramSeverity != null ? paramSeverity : 'None';\n    var tagsJSON = {};\n    var fields = {}\n\n    try {\n        // Create a single Object containing all tag/value pairs\n        JSON.parse(params.tags_json).forEach(function (obj) {\n            tagsJSON[obj.tag] = obj.value\n        });\n\n        // Add tags properties to fields\n        for (var key in tagsJSON) { \n            fields[key] = tagsJSON[key]; \n        }\n    } catch (e) {\n        Zabbix.Log(4, '[BigPanda Webhook] Failed to parse tags JSON');\n    }\n\n    fields.ack_status = params.ack_status;\n    fields.alerturl = params.zbx_url + '/zabbix/tr_events.php?triggerid=' + params.trigger_id + '&eventid=' + params.eventid;\n    fields.check = params.check;\n    fields.description = params.description;\n    fields.eventid = params.eventid;\n    fields.event_opdata = params.event_opdata;\n    fields.event_recovery_status = params.event_recovery_status;\n    fields.event_recovery_tags = params.event_recovery_tags;\n    fields.event_status = params.event_status;\n    fields.event_update_status = params.event_update_status;\n    fields.event_value = params.event_value;\n    fields.host = params.host;\n    fields.host_description = params.host_description;\n    fields.host_dns = params.host_description;\n    fields.host_ip = params.host_ip;\n    fields.message = params.message;\n    fields.nSeverity = params.nSeverity;\n    fields.recovery_status = recovery_status;\n    fields.reg_tags = params.tags;\n    fields.severity = severity;\n    fields.source = params.source;\n    fields.subject = params.subject;\n    fields.trigger_id = params.trigger_id;\n    fields.zabbixURL = params.zbx_url;\n\n    if (params.service != null && params.service.trim() != '') {\n        fields.service = [params.service];\n    }\n\n    var resp = req.post(url,\n        JSON.stringify(fields)\n    );\n\n    Zabbix.Log(4, '[BigPanda Webhook] POST Status: ' + req.getStatus());\n\n    if (req.getStatus() === 403) {\n        Zabbix.Log(3, '[BigPanda Webhook] POST Response: ' + JSON.stringify(resp, null, 4));\n        throw 'Authentication Error: Check the API key being used';\n    } else if (req.getStatus() < 200 || req.getStatus() >= 300) {\n        Zabbix.Log(3, '[BigPanda Webhook] POST Response: ' + JSON.stringify(resp, null, 4));\n        throw 'Response HTTP Status: ' + req.getStatus();\n    }\n    result = JSON.parse(resp);\n} catch (error) {\n    Zabbix.Log(2, '[BigPanda Webhook] Notification Failure ' + error);\n    throw '[BigPanda Webhook] Notification Failure' + error;\n}\nreturn JSON.stringify(result);",
                "process_tags": "YES",
                "description": "Sends problems to BigPanda ",
                "message_templates": [
                    {
                        "event_source": "TRIGGERS",
                        "operation_mode": "PROBLEM",
                        "subject": "Problem: {EVENT.NAME}",
                        "message": "Problem started at {EVENT.TIME} on {EVENT.DATE}\nProblem name: {EVENT.NAME}\nHost: {HOST.NAME}\nSeverity: {EVENT.SEVERITY}\nOperational data: {EVENT.OPDATA}\nOriginal problem ID: {EVENT.ID}\n{TRIGGER.URL}"
                    },
                    {
                        "event_source": "TRIGGERS",
                        "operation_mode": "RECOVERY",
                        "subject": "Resolved in {EVENT.DURATION}: {EVENT.NAME}",
                        "message": "Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}\nProblem name: {EVENT.NAME}\nProblem duration: {EVENT.DURATION}\nHost: {HOST.NAME}\nSeverity: {EVENT.SEVERITY}\nOriginal problem ID: {EVENT.ID}\n{TRIGGER.URL}"
                    },
                    {
                        "event_source": "TRIGGERS",
                        "operation_mode": "UPDATE",
                        "subject": "Updated problem in {EVENT.AGE}: {EVENT.NAME}",
                        "message": "{USER.FULLNAME} {EVENT.UPDATE.ACTION} problem at {EVENT.UPDATE.DATE} {EVENT.UPDATE.TIME}.\n{EVENT.UPDATE.MESSAGE}\n\nCurrent problem status is {EVENT.STATUS}, age is {EVENT.AGE}, acknowledged: {EVENT.ACK.STATUS}."
                    }
                ]
            }
        ]
    }
}
