Embora o Zabbix ofereça um grande número de integrações de webhook disponíveis por padrão, você pode querer criar seus próprios webhooks. Esta seção fornece exemplos de scripts de webhook personalizados (usados no parâmetro Script). Consulte a seção webhook para a descrição de outros parâmetros de webhook.
Não use atribuições não declaradas no pré-processamento do JavaScript. Use var para declarar variáveis locais.
Eventos de recuperação (sejam gerados automaticamente ou após um fechamento manual) incluem tags de eventos resolvidos (incluindo tags herdadas de templates, hosts e triggers). Os scripts de webhook são executados após a criação do alerta; as tags retornadas por um script de webhook, portanto, são aplicadas após a criação inicial do alerta e podem não estar presentes no alerta que acionou o webhook. Se uma integração exigir que as tags produzidas por um webhook estejam presentes na notificação inicial, busque as tags do evento no server (por exemplo, usando a API Event) ou armazene as tags produzidas pelo webhook em um armazenamento persistente externo e faça a correlação lá.

Este script irá criar um chamado no JIRA e retornar algumas informações sobre o chamado criado.
try {
Zabbix.log(4, '[ Jira webhook ] Started with params: ' + value);
var result = {
'tags': {
'endpoint': 'jira'
}
},
params = JSON.parse(value),
req = new HttpRequest(),
fields = {},
resp;
if (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
}
req.addHeader('Content-Type: application/json');
req.addHeader('Authorization: Basic ' + params.authentication);
fields.summary = params.summary;
fields.description = params.description;
fields.project = {key: params.project_key};
fields.issuetype = {id: params.issue_id};
resp = req.post('https://jira.example.com/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.getStatus() != 201) {
throw 'Response code: ' + req.getStatus();
}
resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
return JSON.stringify(result);
}
catch (error) {
Zabbix.log(4, '[ Jira webhook ] Issue creation failed json : ' + JSON.stringify({"fields": fields}));
Zabbix.log(3, '[ Jira webhook ] issue creation failed : ' + error);
throw 'Failed with error: ' + error;
}Este webhook encaminhará notificações do Zabbix para um canal do Slack.

try {
var params = JSON.parse(value),
req = new HttpRequest(),
response;
if (params.HTTPProxy) {
req.setProxy(params.HTTPProxy);
}
req.addHeader('Content-Type: application/x-www-form-urlencoded');
Zabbix.log(4, '[ Slack webhook ] Webhook request with value=' + value);
response = req.post(params.hook_url, 'payload=' + encodeURIComponent(value));
Zabbix.log(4, '[ Slack webhook ] Responded with code: ' + req.getStatus() + '. Response: ' + response);
try {
response = JSON.parse(response);
}
catch (error) {
if (req.getStatus() < 200 || req.getStatus() >= 300) {
throw 'Request failed with status code ' + req.getStatus();
}
else {
throw 'Request success, but response parsing failed.';
}
}
if (req.getStatus() !== 200 || !response.ok || response.ok === 'false') {
throw response.error;
}
return 'OK';
}
catch (error) {
Zabbix.log(3, '[ Slack webhook ] Sending failed. Error: ' + error);
throw 'Failed with error: ' + error;
}