Visão geral
XOps suporta sincronização bidirecional entre histórias de XOps e uma plataforma externa de gerenciamento de serviços. Essa integração ajuda a manter a atividade de investigação alinhada entre as plataformas, então atualizações feitas em uma plataforma são refletidas na outra.
Para mais informações, veja Criar Integrações Bidirecionais com Plataformas de Gerenciamento de Serviços.
Configurando a Integração com ServiceNow
Para configurar a integração com o ServiceNow, complete estes cinco passos.
Passo 1: Criar Campos Personalizados
Crie campos para serem preenchidos quando um bilhete for gerado no Aplicativo de Gerenciamento Cato (CMA).
Para criar campos personalizados:
Inicie sessão na plataforma ServiceNow.
Abra qualquer Incidente.
Do banner superior, clique com o botão direito do mouse e navegue até Configurar > Construtor de Formulários.
Se necessário, concorde em testar o Construtor de Formulários e selecione a visualização Padrão.
Clique em Adicionar um novo campo na Tabela de Incidentes.
Adicione esses campos:
ID da Conta CMA
Tipo: Inteiro
Propriedades: Somente Leitura, Obrigatório, Ativo
ID da História CMA
Tipo: String
Propriedades: Somente Leitura, Obrigatório, Ativo
Passo 2: Criar uma Chave de API de Serviço no CMA
Chaves de API de serviço permitem integração escalável com ferramentas e serviços externos e são criadas neste formato: R=<...>|K=<...>. Para mais informações e informações detalhadas sobre como criar uma chave de API de Serviço, veja Gerando Chaves de API para a API do Cato.
Uma vez que você criou a chave de API de serviço, copie e salve-a para que possa ser inserida na Plataforma ServiceNow.
Passo 3: Armazenar a Chave de API com Segurança em uma Propriedade do Sistema Segura
Na Plataforma ServiceNow, crie uma propriedade de sistema segura para armazenar a chave de API.
Para criar uma propriedade de sistema segura:
Navegue para https://<sua instância>.service-now.com/sys_properties_list.do
Clique em Novo.
No formulário Nova Propriedade do Sistema, adicione estes detalhes:

Nome: cma_prod_api_key
Tipo: Password2
Valor: A chave de API de serviço que você criou no passo 2
Clique em Enviar.
Passo 4: Criar uma Mensagem REST
Crie uma mensagem REST para enviar detalhes dos incidentes ServiceNow para a Cato:
Para criar uma mensagem REST:
Na sua Plataforma ServiceNow, navegue até Todos > Serviços Web do Sistema > Saídas > Mensagem REST.
Clique Novo.
No formulário Mensagem REST, adicione estes detalhes:
Nome: Adicione um nome para a Mensagem REST
Endpoint: https://<seu nome de conta Cato>.cc.catonetworks.com/api/v1/graphql2
Tipo de autenticação: Sem autenticação
Métodos HTTP: Clique em Novo e adicione estes detalhes:
Nome: Adicione um nome
Método HTTP: POST
Endpoint: https://<seu nome de conta Cato>.cc.catonetworks.com/api/v1/graphql2
Clique em Enviar.
Passo 5: Criar uma Regra de Negócio
Crie uma regra de negócio para acionar a mensagem REST.
Para criar uma regra de negócio:
Na sua Plataforma ServiceNow, navegue até Todos > Definições do Sistema > Regra de Negócio.
Clique em Novo.
No formulário Nova Regra de Negócio, adicione estes detalhes:

Nome: Adicione um nome para a Regra de Negócio
Tabela: Incidente
Quando: Após
Atualizar: Verdadeiro (marque a caixa de seleção)
Condição de Filtro: Mudanças nos comentários
Na aba Avançado, adicione este script:
(function executeRule(current, previous) { try { var lastComment = current.comments.getJournalEntry(1) || ''; lastComment = stripJournalHeader(lastComment); if (!lastComment) { gs.info("GraphQL webhook: Empty comment, skipping " + current.number); return; } var accountId = current.u_cma_account_id; var storyId = current.u_cma_story_id; gs.info("GraphQL webhook: accountId " + accountId + " story " + storyId); if (!accountId || !storyId) { gs.error("GraphQL webhook: Missing accountId/storyId for " + current.number); return; } var gqlQuery = "mutation CreateStoryComment($accountId: ID!, $input: AddStoryCommentInput!) {" + " xdr(accountId: $accountId) {" + " addStoryComment(input: $input) {" + " comment { id type __typename }" + " __typename" + " }" + " __typename" + " }" + "}"; var body = { query: gqlQuery, variables: { accountId: accountId.toString(), input: { type: "USER", storyId: storyId.toString(), text: lastComment } } }; var apiKey = gs.getProperty('cma_prod_api_key'); var r = new sn_ws.RESTMessageV2('Update XDR story comments 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(); // can be changed to Async - only for debug purposes var eccSysId = r.executeAsync(); gs.info("GraphQL webhook queued, ECC sys_id=" + eccSysId); var status = response.getStatusCode(); var responseBody = response.getBody(); // Safe logging (see next section for masking) gs.info("GraphQL webhook: status=" + status); gs.info("GraphQL webhook: responseBody=" + responseBody); } catch (ex) { gs.info("GraphQL webhook: Failed: " + 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);Clique em Enviar.
Troubleshooting
Você pode identificar problemas e erros em:
Logs de Sistema: Navegue até Logs de Sistema > Todos e busque por mensagens contendo
GraphQL webhook.Registro ECC: Navegue para https://<instance>.service-now.com/sys_ecc_queue_list.do e localize o registro ECC com o
ECC sys_idregistrado.
Problemas Comuns
Estes são uma lista de problemas comuns e suas causas:
Problemas | Causa |
|---|---|
Comentário não enviado | Texto do comentário vazio |
IDs de conta/história ausentes | Campos personalizados não preenchidos |
API retorna 400 | Formato de solicitação incorreto |
API retorna 401 | Chave API inválida |