Agente enviando 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 FSO, um agente consulta as informações da conta de um cliente, que estão localizadas em uma aplicação bancária remota. Uma vez localizado, ele aparece no formulário de reclamação e o agente preenche manualmente os detalhes do caso relacionados à conta de hipoteca 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 no ServiceNowinstância.
- 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 para cada cliente. Nota:Conta de empréstimo é um tipo de conta financeira.
O exemplo a seguir é um exemplo de um ServiceNowformulário de reclamação (formulário de caso) que orienta um agente a preencher 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 uma janela pop-up semelhante à seguinte é exibida. 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 da web específico. Esses serviços web geralmente vêm de sistemas Master de cliente e mestre de conta, CRMs, mainframes de core banking e APIs de provedores de software de core banking, 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. Em seguida, o agente adiciona todas as informações adicionais necessárias para enviar o caso do cliente e clica em Enviar botão para salvar a reclamação no ServiceNowinstância.
O diagrama a seguir mostra o fluxo das chamadas da REST API para este caso de uso e fornece breves observações 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);
});