케이스를 제출하는 에이전트

  • 릴리스 버전: Australia
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 7분
  • 이 사용 사례에서는 에이전트가 알려진 고객에 대한 케이스를 제출하는 방법을 보여줍니다.

    이 시나리오에서는 에이전트가 FSO 불만 사항 양식 내에서 원격 은행 애플리케이션에 있는 고객의 계좌 정보를 조회합니다. 찾으면 불만 양식에 표시되며 에이전트는 고객의 모기지 계정과 관련된 케이스 세부 정보를 수동으로 입력하고 불만 케이스를 저장합니다. 백그라운드에서 양식 스크립트는 고객 세부 정보 및 금융 계좌 정보를 인스턴스에 ServiceNow 로컬로 저장합니다.

    주:
    이 시나리오에서는 은행 애플리케이션이 요청된 소비자 세부 정보 및 연결된 금융 계좌 정보를 반환하는 두 개의 REST 엔드포인트인 GET /api/getConsumerDetailsGET /api/getFinancialAccounts 를 노출한다고 가정합니다.

    ServiceNow 이 시나리오에서 액세스하는 테이블은 다음과 같습니다.
    • 소비자[csm_consumer]: 고객 기록을 포함합니다.
    • 대출 계정 [sn_bom_loan_account]: 각 고객의 대출 계정 정보를 포함합니다.
      주:
      대출 계좌는 금융 계좌의 일종입니다.

    다음은 에이전트가 고객을 대신하여 불만 사항을 제출하는 과정을 안내하는 불만 사항 양식(케이스 양식)의 ServiceNow 예입니다. 이 양식에서 에이전트는 양식의 계정 검색 버튼을 클릭하여 고객의 계정 정보를 찾습니다.

    에이전트가 계정 검색 을 클릭하면 다음과 유사한 팝업이 나타납니다. 팝업을 사용하면 에이전트가 표시된 검색 매개변수를 사용하여 고객의 계정을 조회할 수 있습니다. 특정 웹 서비스에 따라 고유한 검색 기준을 만들 수 있습니다. 이러한 웹 서비스는 일반적으로 고객 마스터 및 계정 마스터 시스템, CRM, 핵심 뱅킹 메인프레임 및 Fiserv, FIS, Jack Henry, Finastra 등과 같은 핵심 뱅킹 소프트웨어 제공업체의 API에서 제공됩니다.

    검색하면 이 고객에 대한 다음 계정이 반환됩니다.

    에이전트가 적절한 계정을 선택하면 필요한 계정 정보가 케이스 양식에 자동으로 채워집니다. 그런 다음 에이전트는 고객 케이스를 제출하는 데 필요한 추가 정보를 추가하고 제출 버튼을 클릭하여 인스턴스에 불만 사항을 저장합니다 ServiceNow .

    다음 다이어그램은 이 사용 사례에 대한 REST API 호출의 플로우를 보여주고 필요한 처리에 대한 간략한 설명을 제공합니다.

    1. 에이전트가 불만 양식에 고객 조회 정보를 입력합니다. 이 정보를 사용하여 RESTMessageV2 API를 사용하여 REST 호출 /api/getConsumerDetails를 공식화하고 이를 원격 은행 애플리케이션으로 전송하여 고객의 계좌 세부 정보를 가져옵니다.
    2. /getConsumerDetails 엔드포인트는 소비자 상세 정보를 반환하거나 고객을 찾을 수 없는 경우 오류를 반환합니다.
    3. GlideRecord API를 사용하여 소비자 [csm_consumer] 테이블에 ServiceNow 소비자 정보가 포함된 연결된 고객 기록을 생성/업데이트합니다.
    4. /api/getConsumerDetails REST 호출에 의해 반환된 계정 정보를 사용하여 원격 은행 애플리케이션에서 고객 모기지 기록을 조회합니다. 다시 RESTMessageV2 API를 사용하여 호출을 공식화하고 은행 애플리케이션의 /getFinancialAccounts 엔드포인트로 전송하여 고객의 모기지 기록을 가져옵니다.
    5. /getFinancialAccounts 엔드포인트는 지정된 고객과 연결된 금융 계정을 반환합니다.
    6. GlideRecord API를 사용하여 financial_account 테이블에서 연결된 소비자의 금융 계좌 정보를 생성/업데이트합니다ServiceNow .

    코드 예시

    다음은 위에서 설명한 단계를 수행하는 JavaScript 예시입니다.
    // 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);
    });