Agente que envia um caso
Este caso de uso ilustra como permitir que um agente envie um caso para um cliente conhecido.
Neste cenário, em um formulário de reclamação de FSO, um agente pesquisa as informações da conta de um cliente, que estão localizadas em um aplicativo de banco remoto. Uma vez localizado, ele aparece no formulário de reclamação e o agente preenche manualmente os detalhes do caso relacionados à conta hipotecária do cliente e salva o caso de reclamação. Em segundo plano, o script do formulário salva os detalhes do cliente e as informações da conta financeira localmente na instância ServiceNow.
- Consumidor [csm_consumer]: contém o registro do cliente.
- Conta de empréstimo [sn_bom_loan_account]: contém informações da conta de empréstimo de cada cliente. Nota:Conta de empréstimo é um tipo de conta financeira.
A seguir está um exemplo de um formulário de reclamação ServiceNow (formulário de caso) que orienta um agente no registro de uma reclamação em nome de um cliente. Neste formulário, o agente clica no botão Pesquisa de conta no formulário para localizar as informações da conta do cliente.
Quando o agente clica em Pesquisa de conta, é exibido um pop-up semelhante ao seguinte. O pop-up permite que o agente pesquise a conta do cliente usando qualquer um dos parâmetros de pesquisa exibidos. Você pode criar seus próprios critérios de pesquisa com base em seu serviço web específico. Esses serviços web geralmente vêm de sistemas Master do cliente e Master da conta, CRMs, mainframes bancários principais e APIs de provedores de software bancário principal, como Fiserv, FIS, Jack Henry, Finastra e outros.
A pesquisa retorna as seguintes contas para este cliente.
O agente seleciona a conta apropriada e as informações de conta necessárias são preenchidas automaticamente no formulário de caso. O agente adiciona todas as informações adicionais necessárias para enviar o caso do cliente e clica no botão Enviar para salvar a reclamação na instância ServiceNow.
O diagrama a seguir mostra o fluxo das chamadas de REST API para este caso de uso e fornece breves comentários sobre qualquer processamento necessário.
|
Código de exemplo
// Fetch consumers for the given first name and last name and associated
// financial accounts from the remote bank application
function fetchConsumers(consumer_fname, consumer_lname) {
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('get');
request.setEndpoint('api/getConsumerDetails?fname=consumer_fname&lname=consumer_lname');
var response = request.execute();
var responseBody = response.getBody();
var responseObj = JSON.parse(responseBody);
var consumers = responseObj.consumers;
// Create a record in the ServiceNow Consumer [csm_consumer] table for the specified consumer
var consumerDetails = [];
consumers.foreach(function(consumer){
var consumerGR = new GlideRecord('csm_consumer');
consumerGR.initialize();
consumerGR.setValue('uid', consumer.uid);
consumerGR.setValue('name', consumer.name);
consumerGR.setValue('email', consumer.email);
consumerGR.setValue('mobile', consumer.mobile);
consumerGR.setValue('address', consumer.address);
if(consumerGR.update()){
consumer.sysId = consumerGR.getValue('sys_id');
consumer.financialAccount = fetchFinancialAccountsForConsumer(consumer);
}
});
}
// Fetch financial accounts for the specified consumer
function fetchFinancialAccountsForConsumer(consumer) {
var financialAccounts = [];
var request = new sn_ws.RESTMessageV2();
request.setHttpMethod('get');
request.setEndpoint('api/getFinancialAccounts/' + consumer);
var response = request.execute();
var responseBody = response.getBody();
var responseObj = JSON.parse(responseBody);
var financialAccounts = responseObj.financialAccounts;
// Create a record in the ServiceNow financial_account table for each of the customer's financial accounts
financialAccounts.foreach(function(finAccount){
var finAccountGR = new GlideRecord('financial_account');
finAccountGR.initialize();
finAccountGR.setValue('uid', finAccount.uid);
finAccountGR.setValue('type', finAccount.type);
finAccountGR.setValue('number', finAccount.ac_number);
finAccountGR.setValue('balance', finAccount.balance);
if(finAccountGR.update()){
finAccount.sysId = finAccountGR.getValue('balance');
financialAccounts.push(finAccount);
}
});
return financialAccounts;
}
// The following retrieves an object to display in UI page
fnmae = ‘john’;
lname = ‘brown’;
var consumerObj = fetchConsumers(fname, lname);
consumerObj.foreach(function(consumer){
// Display the details on the page and populate it in the form as necessary
console.log(consumer);
});