"Visión general"
XOps admite sincronización bidireccional entre historias de XOps y una plataforma externa de gestión de servicios. Esta integración ayuda a mantener la actividad de investigación alineada entre plataformas, de modo que las actualizaciones realizadas en una plataforma se reflejan en la otra.
Para más información, vea Creando Integraciones Bidireccionales con Plataformas de Gestión de Servicios.
Configurando la Integración de ServiceNow
Para configurar la integración de ServiceNow, complete estos cinco pasos.
Paso 1: Crear Campos Personalizados
Crear campos para ser rellenados cuando se emita un ticket en la Aplicación de Gestión de Cato (CMA).
Para crear campos personalizados:
Inicie sesión en la plataforma de ServiceNow.
Abra cualquier Incidente.
Desde el banner superior, haga clic derecho y navegue a Configurar > Constructor de Formularios.
Si es necesario, acepte probar el Constructor de Formularios y seleccione la vista Predeterminada.
Haga clic en Agregar un nuevo campo en la Tabla de Incidentes.
Agregue estos campos:
ID de Cuenta CMA
Tipo: Entero
Propiedades: Solo Lectura, Obligatorio, Activo
ID de la Historia CMA
Tipo: Cadena
Propiedades: Solo Lectura, Obligatorio, Activo
Paso 2: Crear una Clave API de Servicio en CMA
Las claves API de servicio permiten la integración escalable con herramientas y servicios externos y se crean en este formato: R=<...>|K=<...>. Para más información y detalles sobre cómo crear una clave API de Servicio, vea Generación de Claves API para la API de Cato.
Una vez que haya creado la clave API de servicio, cópiela y guárdela para que pueda ser ingresada en la Plataforma de ServiceNow.
Paso 3: Almacenar la Clave API de Forma Segura en una Propiedad de Sistema Segura
En la plataforma de ServiceNow, cree una propiedad de sistema segura para almacenar la clave API.
Para crear una propiedad de sistema segura:
Navegue a https://<su instancia>.service-now.com/sys_properties_list.do
Haga clic en New.
En el formulario Nuevo Registro de Propiedades del Sistema, agregue estos detalles:

Nombre: cma_prod_api_key
Tipo: Password2
Valor: La clave API de servicio que creó en el paso 2
Haga clic en Enviar.
Paso 4: Crear un Mensaje REST
Cree un mensaje REST para enviar detalles de los incidentes de ServiceNow a Cato:
Para crear un mensaje REST:
En su plataforma de ServiceNow, navegue a Todo > Servicios Web del Sistema > Saliente > Mensaje REST.
Haga clic en New.
En el formulario Mensaje REST, agregue estos detalles:
Nombre: Agregue un nombre para el mensaje REST
Punto final: https://<nombre de su cuenta Cato>.cc.catonetworks.com/api/v1/graphql2
Tipo de autenticación: Sin autenticación
Métodos HTTP: Haga clic en Nuevo y agregue estos detalles:
Nombre: Agregue un nombre
Método HTTP: POST
Punto final: https://<nombre de su cuenta Cato>.cc.catonetworks.com/api/v1/graphql2
Haga clic en Enviar.
Paso 5: Crear una Regla de Negocio
Cree una regla de negocio para activar el mensaje REST.
Para crear una regla de negocio:
En su plataforma de ServiceNow, navegue a Todo > Definiciones del Sistema > Regla de Negocio.
Haga clic en New.
En el formulario Nuevo Registro de Regla de Negocio, agregue estos detalles:

Nombre: Agregue un nombre para la Regla de Negocio
Tabla: Incidente
Cuando: Después
Actualizar: Verdadero (marque la casilla)
Condición de Filtro: Cambios en comentarios
En la pestaña Avanzado, agregue este script:
(function executeRule(current, previous) { try { var lastComment = current.comments.getJournalEntry(1) || ''; lastComment = stripJournalHeader(lastComment); if (!lastComment) { gs.info("GraphQL webhook: Comentario vacío, omitiendo " + current.number); return; } var accountId = current.u_cma_account_id; var storyId = current.u_cma_story_id; gs.info("GraphQL webhook: accountId " + accountId + " historia " + storyId); if (!accountId || !storyId) { gs.error("GraphQL webhook: Falta accountId/storyId para " + current.number); return; } var gqlQuery = "mutación CreateStoryComment($accountId: ID!, $input: AddStoryCommentInput!) {" + " xdr(accountId: $accountId) {" + " addStoryComment(input: $input) {" + " comentario { id tipo __typename }" + " __typename" + " }" + " __typename" + " }" + "}"; var body = { consulta: gqlQuery, variables: { accountId: accountId.toString(), input: { tipo: "USER", storyId: storyId.toString(), texto: lastComment } } }; var apiKey = gs.getProperty('cma_prod_api_key'); var r = new sn_ws.RESTMessageV2('Actualizar comentarios de historia de XDR CMA Prod', 'post'); r.setRequestHeader('Content-Type', 'application/json'); r.setRequestHeader('Accept', 'application/json'); r.setRequestHeader('x-api-key', apiKey); r.setRequestBody(JSON.stringify(body)); //var response = r.execute(); // puede cambiarse a Async - solo para propósitos de depuración var eccSysId = r.executeAsync(); gs.info("GraphQL webhook en cola, ECC sys_id=" + eccSysId); var status = response.getStatusCode(); var responseBody = response.getBody(); // Registro seguro (ver siguiente sección para enmascaramiento) gs.info("GraphQL webhook: estado=" + status); gs.info("GraphQL webhook: cuerpo de respuesta=" + responseBody); } catch (ex) { gs.info("GraphQL webhook: Fallido: " + ex.message); } function stripJournalHeader(text) { text = text || ''; if (text.indexOf('\n') > -1) { return text.split('\n').slice(1).join('\n').trim(); } return text.trim(); } })(current, previous);Haga clic en Enviar.
Resolución de problemas
Puede identificar problemas y errores en cualquiera de los siguientes lugares:
Registros del sistema: Navegue a Registros del Sistema > Todos y busque mensajes que contengan
GraphQL webhook.Registro ECC: Navegue a https://<instance>.service-now.com/sys_ecc_queue_list.do y localice el registro ECC con el
ECC sys_idregistrado.
Problemas comunes
Aquí hay una lista de problemas comunes y sus causas:
Incidente | Causa |
|---|---|
Comentario no enviado | Texto del comentario vacío |
IDs de cuenta/historia faltantes | Campos personalizados no rellenados |
API devuelve 400 | Formato de solicitud incorrecto |
API devuelve 401 | Clave API inválida |