ServiceNow La integración te permite:

  • Crear un incidente en Rootly creará un incidente en ServiceNow si así lo eliges.

  • Cambiar el título, descripción, estado del incidente en Rootly actualizará el incidente en ServiceNow.

Instalación

Puedes configurar esta integración como un usuario administrador conectado en la página de integraciones:

Configuración

Primero, inicia sesión en tu instancia de ServiceNow y vamos a crear una aplicación OAuth:

  1. Haz clic en System OAuth > Application Registry como se muestra a continuación:

  2. Haz clic en New como se muestra a continuación:

  3. Haz clic en Crear un punto final de API OAuth para clientes externos como se muestra a continuación:

  4. Completa como se muestra a continuación:

    Name: Rootly

    URL de redirección: https://rootly.com/auth/service_now/callback

  5. Copia tu URL de instancia y ID de cliente y secreto de cliente generated:

¡Ya está todo listo!

Webhooks

  1. En tu instancia de ServiceNow, ve a System Definition > Business Rules.

  2. Selecciona New.

  3. Dale a tu nueva Regla de Negocio un nombre descriptivo, elige en qué tabla quieres que se active y marca la casilla Advanced.

  4. Luego, elige After para cuando quieres que se ejecute. También puedes elegir añadir condiciones de filtro, pero en este ejemplo queremos que se active para todos los tickets de incidentes. Además, para este ejemplo, queremos seleccionar Insert porque queremos que se active cuando se crea un nuevo ticket de incidente.

  5. Navega a la pestaña Advanced. En el editor de Script, añade el siguiente código. Asegúrate de reemplazar <insert webhook public URL> con cualquier que sea el objetivo del webhook. La URL objetivo puede ser un servidor web que analizará y utilizará los datos u otro servicio que acepte webhooks entrantes.

  6. Por último, reemplaza el <secret> campo con la clave secreta de tu API de webhook.

    (function executeRule(current, previous /*null when async*/ ) {
        try {
            var r = new sn_ws.RESTMessageV2();
            r.setEndpoint("<insert webhook public URL>");
            r.setHttpMethod("post");
            r.setRequestHeader("secret", "<secret>");
    
            // getValue(string) does not support dot walking, 
            // so I had to do a bit more to get the user’s email address
            var usr = new GlideRecord('sys_user');
            usr.get('sys_id', current.getValue("caller_id"));
            var reported_by_email = usr.getValue('email');
    
            // Make sure to convert object references to values.
            // More info at: 
            // https://swissbytes.blogspot.com/2017/11/service-now-script-includes-make-sure.html
    
            var number = current.getValue("number");		
            var opened_at = current.getValue("opened_at");
            var impact = current.getValue("impact");
            var urgency = current.getValue("urgency");
            var short_description = current.getValue("short_description");
            var description = current.getValue("description");
            var category = current.getValue("category");
            var priority = current.getValue("priority");
            var sys_id = current.getValue("sys_id");
            var subcategory = current.getValue("subcategory");
            var state = current.getValue("state");
    
            var obj = {
                "number": number,
                "reported_by_email": reported_by_email,
                "opened_at": opened_at,
                "impact": impact,
                "urgency": urgency,
                "short_description": short_description,
                "description": description,
                "category": category,
                "priority": priority,
                "sys_id": sys_id,
                "subcategory": subcategory,
                "state": state
            };
            
            var body = JSON.stringify(obj);
            gs.info("Webhook body: " + body);
            r.setRequestBody(body);
    
            var response = r.execute();
            var httpStatus = response.getStatusCode();
        } catch (ex) {
            var message = ex.message;
            gs.error("Error message: " + message);
        }
    
        gs.info("Webhook target HTTP status response: " + httpStatus);
    
    })(current, previous);
    

Desinstalación

Puedes desinstalar esta integración en el panel de integraciones haciendo clic en Configure > Delete

Soporte

Si necesitas ayuda o más información sobre esta integración, por favor contacta a support@rootly.com o usa el widget de chat en la esquina inferior derecha para conectarte con un ingeniero.