Agente enviando um caso
Este caso de uso ilustra como permitir que um agente envie um caso para um cliente conhecido.
Nesse 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 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 ServiceNow instâ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.
A seguir está um exemplo de um ServiceNow formulá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 um pop-up semelhante ao seguinte é exibido. 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 Customer Master e Account Master, 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 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 em ServiceNow instâ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);
});