Usando conexões externas com suporte a OAuth
As conexões externas permitem enriquecimentos para recuperar dados de sistemas de terceiros para aprimorar as configurações. Quando a segurança requer OAuth, você pode configurar um handshake do OAuth usando credenciais de cliente para autenticar e acessar APIs externas. Essa abordagem garante a troca segura de dados para tarefas como atualizações de preços ou preenchimento de atributos durante a configuração.
Aprimoramentos são scripts executados fora do mecanismo de regras e afetam as configurações no CPQ. Há cinco tipos de enriquecimentos que podem ser habilitados em A. CPQ ambiente:
- 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 CPQ configuração de algo externo CPQ. As conexões externas só podem ser chamadas a partir de um aprimoramento.
Ocasionalmente, uma conexão externa requer 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:
- Defina a conexão externa visitando Administrador > Utilitários > Conexões externas.
- 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, CPQ cuida do token de autenticação para você.
- Se a autenticação oferecer suporte a um token de portador, insira o token de portador fornecido pelo serviço externo para fins de autenticação.
- Se a autenticação exigir autenticação OAuth:
- Selecione OAuth - Fluxo de credenciais do cliente
- Insira o ID do cliente
- Insira o segredo do cliente
- Insira o campo URL do token
Entradas de OAuth necessárias:
Tabela 1. Entradas de OAuth necessárias Campo Tipo Descrição Validações ID do cliente (obrigatório) varchar (ilimitado) Contém o ID do cliente criado para CPQ com o servidor de autorização Não está vazio Segredo do cliente (obrigatório) varchar (ilimitado) Contém uma referência tokenizada para o segredo do cliente
O valor real é armazenado no armazenamento secreto do GCP, exceto em ambientes de desenvolvimento, onde 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 enviados com a solicitação de token Nenhum(a)
- 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/, onde(InputVariable)é a seção do caminho que é usada como 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". R CPQ O campo que armazena os dados desejados é encapsulado em encodeURIComponent e conclui o caminho inputVariable.
As linhas 2 e 3 acionam a conexão externa
ExchangeRatesAPIusando a entrada definida. Scripts adicionais são necessários para que a 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, você pode aumentar esse valor. No entanto, isso pode retardar o desempenho da configuração do usuário final.
O script de aprimoramento a seguir usa uma conexão externa. Este aprimoramento da lista de materiais (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;