Scripted REST API Azure Webhook for alerts error 500
Options
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-20-2025 05:11 AM
Hi!
I want to run a script to bring all Azure Alerts as incidents on ServiceNow. I've work on a script but I've got this error on Postman:
{
"error": {
"message": "Script Evaluation Exception",
"detail": "Cannot convert {\"status\":\"error\",\"message\":\"Internal Server Error:Cannot convert {\\\"status\\\":\\\"error\\\",\\\"message\\\":\\\"Unauthorized\\\"} to org.mozilla.javascript.ScriptableObject (sys_ws_operation.e1b2d62583e1621010b97629feaad38c.operation_script; line 9)\"} to org.mozilla.javascript.ScriptableObject (sys_ws_operation.e1b2d62583e1621010b97629feaad38c.operation_script; line 53)"
},
"status": "failure"
}
This is the script:
(function process(/*RESTAPIRequest*/ request, /*RESTAPIResponse*/ response) {
try {
// Validate token
var apiKey = request.queryParams['apiKey'];
var secret = '********' ; // token
if (apiKey == secret) {
response.setStatus(401);
response.setHeader("Content-Type", "application/json");
response.setBody(JSON.stringify({ status: "error", message: "Unauthorized" }));
return;
}
// Parse request body
var rawBody = request.body.data;
var payload = (typeof rawBody === "string") ? JSON.parse(rawBody) : rawBody;
if (!payload || !payload.data || !payload.data.essentials) {
response.setStatus(400);
response.setHeader("Content-Type", "application/json");
response.setBody(JSON.stringify({ status: "error", message: "Missing essentials in payload" }));
return;
}
var e = payload.data.essentials;
// Create incident
var gr = new GlideRecord("incident");
gr.initialize();
gr.short_description = "Azure Alert: " + e.alertRule;
gr.description =
"Severity: " + e.severity + "\n" +
"Signal Type: " + e.signalType + "\n" +
"Condition: " + e.monitorCondition + "\n" +
"Fired At: " + e.firedDateTime + "\n\n" +
"Description:\n" + e.description;
var sysId = gr.insert();
// Return success to Azure
response.setStatus(200);
response.setHeader("Content-Type", "application/json");
response.setBody(JSON.stringify({
status: "success",
message: "Incident created",
sys_id: sysId
}));
} catch (err) {
gs.error("Azure Webhook Script Error: " + err.message);
response.setStatus(500);
response.setHeader("Content-Type", "application/json");
response.setBody(JSON.stringify({
status: "error",
message: "Internal Server Error:" + err.message
}));
}
})(request, response);
This is the POST: https://dev186149.service-now.com/api/1731864/azure_alerts/create_incident?apiKey=************
Can someone help me on this?
0 REPLIES 0