Loading
Identity Verification in Industries
Table of Contents
Select Filters

          No results
          No results
          Here are some search tips

          Check the spelling of your keywords.
          Use more general search terms.
          Select fewer filters to broaden your search.

          Search all of Salesforce Help
          Create a Class-Based Interaction Launcher

          Create a Class-Based Interaction Launcher

          Create a class-based interaction launcher, which uses an Apex class to get a search request and search response.

          1. Create a global Apex class that implements, for example:
            • vlocity_ins.VlocityOpenInterface
            • OR
            • vlocity_ins.VlocityOpenInterface2
            global with sharing class GetMockupSearchRequestResults implements vlocity_ins.VlocityOpenInterface2
          2. Include two methods:
            • getSearchRequest
            • getSearchResults
            global Object invokeMethod(String methodName, Map < String, Object > inputs, Map < String, Object > output, Map < String, Object > options {
               
               Boolean success = true;
               if (methodName == 'getSearchRequest') {
                
                success = getSearchRequest(inputs, output, options);
               }
               if (methodName == 'getSearchResults') {
                
                success = getSearchResults(inputs, output, options);
               }
               return success;
              }
          3. Then construct the vlocity_ins.LookupRequest interface:
            vlocity_ins.LookupRequest request =
            
            (vlocity_ins.LookupRequest) inputs.get('lookupRequest');
            
            List<Map<String, Object>> previousSearchResults = request.previousSearchResults;
            
            Map<String, Object> additionalData = request.additionalData;
            
            List<String> searchFieldList = request.searchFieldList;
            
            searchFieldList.add('FirstName');
            
            searchFieldList.add('LastName');
            
            Map<String, Map<String, String>>labelTypeMap = request.searchFieldsLabelTypeMap;
            
            Map<String, String> newType1 = new Map<String, String> ();
            
            newType1.put('label','First Name');
            
            newType1.put('datatype','text');
            
            labelTypeMap.put('FirstName',newType1);
            
            Map<String, String> newType2 = new Map<String, String> ();
            
            newType2.put('label','Last Name');
            
            newType2.put('datatype','text');
            
            labelTypeMap.put('LastName',newType2);
            
            Map<String, Object> valueMap = request.searchValueMap;
            
            valueMap.put('FirstName',null);
            
            valueMap.put('LastName',null);
            
            System.debug(' LookupRequest is '+request);
            
            output.put('lookupRequest', request);
            
          4. Construct the vlocity_ins.LookupResult interface (see example code below).
          5. Create a Vlocity Interaction Launcher record.
          6. Pick Class Based for the entry field Record Type:
            Interaction Launcher setup details
          7. Complete any pending information.
          8. Insert the class created from step 1 (GetMockupSearchRequestResults) into the entry field Invoke Class Name.
          9. Launch the class-based interaction.

            vlocity_ins.LookupResult Interface Example Code:

            List < String > contextIds = (List < String > ) inputs.get('contextIds');
            String parentId = (String) inputs.get('parentId');
            vlocity_ins.LookupRequest request = 
             (vlocity_ins.LookupRequest) inputs.get('lookupRequest');
            String lastRecordId = request.lastRecordId; // R15 pagination support
            
            Map < String, Object > resultInfo = (Map < String, Object > ) inputs.get('resultInfo');
            Integer pageSize = 0; // R15 pagination support
            
            Integer numRecords = 30; // R15 pagination support
            
            // R15 pagination support
            
            // get ClassBasedResultsPageSize from customSetting
            
            // R15 pagination support
            
            vlocity_ins__InteractionLauncherConfiguration__c myCS = 
             vlocity_ins__InteractionLauncherConfiguration__c.getInstance('ClassBasedResultsPageSize');
            if ((myCS != null) && (myCS.vlocity_ins__IsFeatureOn__c)) {
             
             pageSize = 
              String.isNotBlank(myCS.vlocity_ins__DisplayMessage__c) ? 
              Integer.valueOf(myCS.vlocity_ins__DisplayMessage__c) : 10;
            }
            Boolean hasMore = false;
            // End R15 pagination support
            
            List < String > resultFieldList = new List < String > ();
            resultFieldList.add('RelatedParty');
            resultFieldList.add('Role');
            List < String > verificationFieldList = new List < String > ();
            verificationFieldList.add('PartyName');
            verificationFieldList.add('Address');
            List < String > optionalVerificationFieldList = new List < String > ();
            optionalVerificationFieldList.add('Role');
            optionalVerificationFieldList.add('RelatedParty');
            Map < String, Map < String, String >> resultFieldsLabelTypeMap = 
             new Map < String, Map < String, String >> ();
            Map < String, String > newType1 = new Map < String, String > ();
            newType1.put('label', 'Related Party');
            newType1.put('datatype', 'text');
            resultFieldsLabelTypeMap.put('RelatedParty', newType1);
            Map < String, String > newType2 = new Map < String, String > ();
            newType2.put('label', 'Role');
            newType2.put('datatype', 'text');
            resultFieldsLabelTypeMap.put('Role', newType2);
            Map < String, String > newType3 = new Map < String, String > ();
            newType3.put('label', 'Name');
            newType3.put('datatype', 'text');
            resultFieldsLabelTypeMap.put('PartyName', newType3);
            Map < String, String > newType4 = new Map < String, String > ();
            newType4.put('label', 'Address');
            newType4.put('datatype', 'text');
            resultFieldsLabelTypeMap.put('Address', newType4);
            Map < String, Object > verificationResult = new Map < String, Object > ();
            String uniqueRequestName = (String) resultInfo.get('uniqueRequestName');
            String drBundleName = (String) resultInfo.get('drBundleName');
            String interactionObjName = (String) resultInfo.get('interactionObjName');
            List < vlocity_ins.LookupResult > results = new List < vlocity_ins.LookupResult > ();
            if ((contextIds != null) && (contextIds.size() == 1) {
              
              Map < String, Object > resultValueMap = 
               new Map < String, Object > ();
              resultValueMap.put('RelatedParty', 'John Smith');
              resultValueMap.put('Role', 'Carrier');
              resultValueMap.put('PartyName', 'John Smith');
              resultValueMap.put('Address', '50 Fremont, San Francisco, CA');
              String recordId = 'ExternalId';
              vlocity_ins.LookupResult result = 
               new vlocity_ins.LookupResul(resultFieldsLabelTypeMap, resultFieldList, 
                resultValueMap, recordId, uniqueRequestName, request, verificationResult, 
                verificationFieldList, drBundleName, interactionObjName);
              result.setOptionalVerificationFieldList(optionalVerificationFieldList);
              // R15 optional verification fields support
              
              results.add(result);
             }
             // R15 pagination support
             
             else {
              
              for (Integer k = 0; k < numRecords; k++) {
               
               Map < String, Object > resultValueMap = new Map < String, Object > ();
               resultValueMap.put('RelatedParty', 'John Smith' + String.valueOf(k));
               resultValueMap.put('Role', 'Carrier');
               resultValueMap.put('PartyName', 'John Smith' + String.valueOf(k));
               resultValueMap.put('Address', '50 Fremont, San Francisco, CA');
               String recordId = 'ExternalId' + String.valueOf(k);
               vlocity_ins.LookupResult result = 
                new vlocity_ins.LookupResult(resultFieldsLabelTypeMap, resultFieldList, 
                 resultValueMap, recordId, uniqueRequestName, request, 
                 verificationResult, verificationFieldList, drBundleName, interactionObjName);
               result.setOptionalVerificationFieldList(optionalVerificationFieldList);
               results.add(result);
              }
             }
             if ((pageSize > 0) && (results.size() > pageSize)) {
              
              List < vlocity_ins.LookupResult > resultSubSet = 
               new List < vlocity_ins.LookupResult > ();
              // results.sort();
              
              Integer startIndex = 0;
              if (String.isNotBlank(lastRecordId)) {
               
               for (Integer i = 0; i < results.size(); i++) {
                
                if (results[i].recordId == lastRecordId) {
                 
                 startIndex = i + 1;
                }
               }
              }
              Integer j = 0;
              for (j = startIndex;
               (j < results.size()) && (j < startIndex + pageSize); j++) {
               
               resultSubset.add(results[j]);
              }
              if (j < results.size()) {
               
               hasMore = true;
              }
              output.put('lookupResults', resultSubset);
              if (hasMore) {
               
               output.put('hasMore', hasMore);
              }
              // End R15 pagination support
              
             }
             else {
              
              // Logger.db('GetExternalSearchRequestResults
              
              // LookupResult is
              
              // '+JSON.serializePretty(results));
              
              output.put('lookupResults', results);
             }
           
          Loading
          Salesforce Help | Article