ServiceNow: Configurando Integração com Histórias de XOps

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:

  1. Inicie sessão na plataforma ServiceNow.
  2. Abra qualquer Incidente.
  3. Do banner superior, clique com o botão direito do mouse e navegue até Configurar > Construtor de Formulários.
  4. Se necessário, concorde em testar o Construtor de Formulários e selecione a visualização Padrão.
  5. Clique em Adicionar um novo campo na Tabela de Incidentes.
  6. 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:

  1. Navegue para https://<sua instância>.service-now.com/sys_properties_list.do
  2. Clique em Novo.
  3. No formulário Nova Propriedade do Sistema, adicione estes detalhes:

    SN5.png
    • Nome: cma_prod_api_key
    • Tipo: Password2
    • Valor: A chave de API de serviço que você criou no passo 2
  4. 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:

  1. Na sua Plataforma ServiceNow, navegue até Todos > Serviços Web do Sistema > Saídas > Mensagem REST.
  2. Clique em Novo.
  3. 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
  4. 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:

  1. Na sua Plataforma ServiceNow, navegue até Todos > Definições do Sistema > Regra de Negócio.
  2. Clique em Novo.
  3. No formulário Nova Regra de Negócio, adicione estes detalhes:

    SN6.png
    • 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
  4. 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);
  5. Clique em Enviar.

Solução de Problemas

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 sys_id ECC registrado.

Problemas Comuns

Estes são uma lista de problemas comuns e suas causas:

Problema 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

Esse artigo foi útil?

Usuários que acharam isso útil: 0 de 0

0 comentário