Usando conexões externas com suporte a OAuth

  • Versão de lançamento: Zurich
  • Atualizado 22 de out. de 2025
  • 3 min. de leitura
  • Saiba o que fazer quando uma conexão externa requer um handshake OAuth.

    Os aprimoramentos são scripts executados fora do mecanismo de regras e afetam as configurações internas ServiceNow CPQ. Atualmente, existem cinco tipos de aprimoramentos que podem ser habilitados em um ambiente Logik:

    • Em configurar/reconfigurar
    • Na resposta da BOM
    • Validação
    • Preço da extensão da lista de seleção
    • Mediante solicitação

    As conexões externas obtêm dados para um ServiceNow CPQconfiguração de algo externo ServiceNow CPQ. As conexões externas só podem ser chamadas a partir de um aprimoramento.

    Ocasionalmente, uma conexão externa exigirá um handshake OAuth para fins de segurança. Por exemplo, talvez você precise preencher um campo ou um script de aprimoramento com dados de uma aplicação de terceiros, como preços ou outros atributos.

    Para definir uma conexão externa OAuth, siga estas etapas:

    1. Defina a conexão externa visitando Administrador > Utilitários > Conexões externas.

      Interface do usuário de conexões externas

    2. Defina seu token de autenticação.
      • Se a conexão externa chamar uma API aberta, nenhum token de autenticação será necessário.
      • Se a conexão externa for Salesforce, ServiceNow CPQcuida do token de autenticação para você.
      • Se a autenticação oferecer suporte a um token do portador, insira o token do portador fornecido pelo serviço externo para fins de autenticação.
      • Se a autenticação exigir autenticação OAuth:
        1. Selecione OAuth - Fluxo de credenciais do cliente
        2. Insira o ID do cliente
        3. Insira o segredo do cliente
        4. Insira o campo URL do token

        OAuth necessárias:

        Campo Tipo Descrição Validações
        ID do cliente (obrigatório) VARCHAR (ilimitado) Contém o ID do cliente criado para o Logik com o Servidor de autorização Não está vazio
        Segredo do cliente (obrigatório) VARCHAR (ilimitado)

        Contém uma referência tokenizada ao segredo do cliente.

        Valor real armazenado no armazenamento secreto do GCP, exceto em ambientes de desenvolvimento em que o valor é armazenado diretamente.

        Não está vazio
        URL do token (obrigatório) VARCHAR (ilimitado)

        O URL do servidor de autorização para trocar o ID/segredo do cliente por um token

        Não está vazio
        Escopo (opcional) VARCHAR (ilimitado) Opcional. Pode ser usado para especificar os escopos que enviamos com nossa solicitação de token. Nenhum(a)
    3. Especifique os parâmetros que precisam ser passados para o servidor de destino na entrada Caminho.

      As variáveis de parâmetro podem ser usadas para definir dinamicamente o caminho. Um caminho de exemplo é "/v4/latest/ . InputVariable . ", em que "" é a seção do Caminho que será a variável de parâmetro.

      Se um caminho estiver usando uma variável de parâmetro, use Component() no script de aprimoramento quando você define a variável. Para obter um exemplo, consulte o código a seguir.

      let inputs = {"inputVariable":encodeURIComponent(cfgRequest.baseCurrency.value)};
      let results = External.exchangeRatesAPI(inputs);
      var resultsMap = results.body.rates;

      A linha 1 define a variável, referenciando a variável de parâmetro da nossa conexão externa "inputVariable". Um campo Logik que está armazenando os dados que queremos é encapsulado em encodeURIComponent conclui o caminho inputVariable.

      As linhas 2 e 3 acionam a conexão externa "exchangeRatesAPI" usando a entrada definida. Scripts adicionais serão necessários para que sua chamada seja restrita para recuperar os dados desejados e definir um campo, se esse for um caso de uso desejado.

      É necessário um limite de tempo limite. Sugerimos 500 milissegundos como ponto de partida. Se você descobrir que a conexão externa excede regularmente esse limite, aumente o valor fornecido aqui. A compensação terá um impacto negativo no desempenho da configuração observado pelo usuário.

      O script de aprimoramento a seguir usa uma conexão externa. Este aprimoramento de BOM consulta uma API powerPricing com dados do cliente. Com a data da taxa específica do cliente recuperada do serviço, o aprimoramento ajusta o preço dos registros ProductList existentes.

      var powerInputs = {"membershipCode":cfg.eCMembershipCode, "icp":cfg.eCICPNumber}; let powerResponse = External.powerPricing(powerInputs);
      
      let dailyCharge = 0; let ratesArr = [];
      
      if(powerResponse.status == 200) {
      
      for(var record of powerResponse.body) { if(record.chargeType == cfg.expectedUsage) {
      
      dailyCharge = record.dailyCharges; ratesArr = record.rates;
      
      }
      
      }
      
      for(var prod of ProductList) { if(prod.id=="electricBillEstimator") {
      
      let addedPrice = dailyCharge * cfg.serviceDurationInDays; prod.price = addedPrice;
      
      }
      
      if(prod.id=="Standard Rate" || prod.id=="Low Rate") { prod.price = dailyCharge;
      
      }
      
      }
      
      for(var rateVal of ratesArr) {
      
      ProductList.id = "Additional Charge Per KWH: " + rateVal.name; ProductList.quantity = 1;
      ductList.bomType="Manufacturing"; ProductList.orderNumber = 2;
      
      ProductList.price = rateVal.rate; ProductList.notes = rateVal.measure;
      ductList.parentProduct="electricBillEstimator"; ProductList.next();
      
      }
      
      }
      
      return ProductList;