Apesar de o Áú»¢¶Ä²© oferecer um grande n¨²mero de integra??es webhook dispon¨ªveis de forma nativa, voc¨º pode querer criar seus pr¨®prios webhooks. Esta se??o prov¨º exemplos de scripts webhook customizados (usados no par?metro Script). Consulte a se??o webhook para descri??o de outros par?metros de webhook.
Este script criar¨¢ um chamado (issue) no JIRA e retornar¨¢ informa??es sobre o chamado criado.
try {
Áú»¢¶Ä²©.log(4, '[ Jira webhook ] Iniciado com 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://tsupport.zabbix.lan/rest/api/2/issue/',
JSON.stringify({"fields": fields})
);
if (req.getStatus() != 201) {
throw 'Codigo de resposta: ' + req.getStatus();
}
resp = JSON.parse(resp);
result.tags.issue_id = resp.id;
result.tags.issue_key = resp.key;
return JSON.stringify(result);
}
catch (error) {
Áú»¢¶Ä²©.log(4, '[ Jira webhook ] Criacao de chamado falhou (json) : ' + JSON.stringify({"fields": fields}));
Áú»¢¶Ä²©.log(3, '[ Jira webhook ] Criacao de chamado falhou : ' + error);
throw 'Falhou com erro: ' + error;
}
Este webhook encaminhar¨¢ notifica??es do Áú»¢¶Ä²© 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');
Áú»¢¶Ä²©.log(4, '[ Slack webhook ] Requisicao webhook com valor=' + value);
response = req.post(params.hook_url, 'payload=' + encodeURIComponent(value));
Áú»¢¶Ä²©.log(4, '[ Slack webhook ] Respondido com codigo: ' + req.Status() + '. Resposta: ' + response);
try {
response = JSON.parse(response);
}
catch (error) {
if (req.getStatus() < 200 || req.getStatus() >= 300) {
throw 'Requisicao falhou com codigo de estado ' + req.getStatus();
}
else {
throw 'Requisicao bem-sucedida, mas analise da resposta falhou.';
}
}
if (req.getStatus() !== 200 || !response.ok || response.ok === 'false') {
throw response.error;
}
return 'OK';
}
catch (error) {
Áú»¢¶Ä²©.log(3, '[ Jira webhook ] Envio falhou. Erro: ' + error);
throw 'Falhou com erro: ' + error;
}