ServiceNow
Enables the ServiceGraph Connector for Meraki to receive webhooks and generate incidents.
This template supports the required authentication headers and password complexity implemented with the San Diego release of ServiceNow.

The ServiceNow connector relies on Basic authentication to send a webhook to the service.
The setup previously required that the Meraki admin set the HTTPS Server URL to the following format.
https://username:passwordk@venXXXX.service-now.com/api/x_caci_sg_meraki/sgmeraki_device_alerts
However, with the ServiceNow San Diego release, passwords are automatically defined for you and are too complex for embeding in the URL.
This resulted in an incompatible URL
https://MerakiAlerts:::_4KNFuh@#$%&_nkdsjfn234^6@@venXXXX.service-now.com/api/x_caci_sg_meraki/sgmeraki_device_alerts
Solution:
Instead of encoding the username:password
in the URL as before, with templates we can now base64 encode the sharedSecret
value and apply the appropriate headers.
"Authorization":"Basic {{sharedSecret | base64_encode}}"
Meraki Dashboard Webhook
- httpServer URL: https://venXXXX.service-now.com/api/x_caci_sg_meraki/sgmeraki_device_alerts
- sharedSecret:
username:password
Template
body.liquid
{
"version": "0.1",
"sentAt": "{{sentAt}}",
"organizationId": "{{organizationId}}",
"organizationName": "{{organizationName}}",
"organizationUrl": "{{organizationUrl}}",
"networkId": "{{networkId}}",
"networkName": "{{networkName}}",
"networkUrl": "{{networkUrl}}",
"networkTags": {{ networkTags | jsonify }},
"deviceSerial": "{{deviceSerial}}",
"deviceMac": "{{deviceMac}}",
"deviceName": "{{deviceName}}",
"deviceUrl": "{{deviceUrl}}",
"deviceTags": {{ deviceTags | jsonify }},
"deviceModel": "{{deviceModel}}",
"alertId": "{{alertId}}",
"alertType": "{{alertType}}",
"alertTypeId": "{{alertTypeId}}",
"alertLevel": "{{alertLevel}}",
"occurredAt": "{{occurredAt}}",
"alertData": {{ alertData | jsonify }}
}
headers.liquid
{
"Authorization":"Basic {{sharedSecret | base64_encode}}"
}