zabbix_export:
version: '7.4'
media_types:
- name: Zammad
type: WEBHOOK
parameters:
- name: alert_message
value: '{ALERT.MESSAGE}'
- name: alert_subject
value: '{ALERT.SUBJECT}'
- name: event_id
value: '{EVENT.ID}'
- name: event_nseverity
value: '{EVENT.NSEVERITY}'
- name: event_severity
value: '{EVENT.SEVERITY}'
- name: event_source
value: '{EVENT.SOURCE}'
- name: event_tags
value: '{EVENT.TAGSJSON}'
- name: event_update_nseverity
value: '{EVENT.UPDATE.NSEVERITY}'
- name: event_update_severity
value: '{EVENT.UPDATE.SEVERITY}'
- name: event_update_status
value: '{EVENT.UPDATE.STATUS}'
- name: event_value
value: '{EVENT.VALUE}'
- name: trigger_id
value: '{TRIGGER.ID}'
- name: zabbix_url
value: '{$ZABBIX.URL}'
- name: zammad_access_token
value: '<PUT YOUR ACCESS TOKEN>'
- name: zammad_customer
value: '<PUT YOUR CUSTOMER EMAIL>'
- name: zammad_enable_tags
value: 'false'
- name: zammad_group
value: Users
- name: zammad_url
value: '<PUT YOUR ZAMMAD URL>'
status: DISABLED
script: |
const CLogger = function(serviceName) {
this.serviceName = serviceName;
this.INFO = 4
this.WARN = 3
this.ERROR = 2
this.log = function(level, msg) {
Zabbix.log(level, '[' + this.serviceName + '] ' + msg);
}
}
const CWebhook = function(value) {
try {
params = JSON.parse(value);
if (['0', '1', '2', '3', '4'].indexOf(params.event_source) === -1) {
throw 'Incorrect "event_source" parameter given: ' + params.event_source + '.\nMust be 0-4.';
}
if (['0', '3', '4'].indexOf(params.event_source) !== -1 && ['0', '1'].indexOf(params.event_value) === -1) {
throw 'Incorrect "event_value" parameter given: ' + params.event_value + '.\nMust be 0 or 1.';
}
if (['0', '3', '4'].indexOf(params.event_source) !== -1) {
if (params.event_source === '1' && ['0', '1', '2', '3'].indexOf(params.event_value) === -1) {
throw 'Incorrect "event_value" parameter given: ' + params.event_value + '.\nMust be 0-3.';
}
if (params.event_source === '0' && ['0', '1'].indexOf(params.event_update_status) === -1) {
throw 'Incorrect "event_update_status" parameter given: ' + params.event_update_status + '.\nMust be 0 or 1.';
}
if (params.event_source === '4') {
if (['0', '1', '2', '3', '4', '5'].indexOf(params.event_update_nseverity) !== -1 && params.event_update_nseverity != params.event_nseverity) {
params.event_nseverity = params.event_update_nseverity;
params.event_severity = params.event_update_severity;
params.event_update_status = '1';
}
}
}
this.runCallback = function(name, params) {
if (typeof this[name] === 'function') {
return this[name].apply(this, [params]);
}
}
this.handleEvent = function(source, event) {