Loading
Opsæt og vedligehold din Salesforce-organisation
Opret en tilpasset agenthandling

Opret en tilpasset agenthandling

Opret en genanvendelig handling, og tildel derefter denne handling til agenten i appen Arkiver.

Før du konfigurerer handlingen i agentkonstruktøren, skal du oprette den Apex, der indeholder den metode, der kan kaldes. Denne klasse håndterer logikken for forespørgsel på de arkiverede registreringer. Hvis du ønsker yderligere oplysninger, kan du se Opret en Apex-klasse

Opret f.eks. en Apex-klasse med navnet ArchiveDataQueryActionWrapper.

public with sharing class ArchiveDataQueryActionWrapper {

    public class SearchRequest {
        @InvocableVariable(label='Object Name' description='Name of the object to search in, can be implicit or explicit' required=true)
        public String objectName;

        @InvocableVariable(label='Filters' description='List of field/value pairs for filtering (JSON string). Supports two formats: 1) Legacy: [{"field":"Status","value":"New"},{"field":"Status","value":"Closed"}] 2) New: {"Status":["New","Closed"]}' required=true)
        public String filtersJson;
        
        @InvocableVariable(label='Max Results' description='Maximum number of results to return')
        public Integer maxResults = 100;
        
        @InvocableVariable(label='Date Field' description='Date field name for date range filtering (optional)')
        public String dateField;
        
        @InvocableVariable(label='Start Date' description='Start date for filtering (yyyy-MM-dd format, optional, if exist must have enddate and datefield)')
        public String startDate;
        
        @InvocableVariable(label='End Date' description='End date for filtering (yyyy-MM-dd format, optional, if exist must have startdate and datefield)')
        public String endDate;        
    }
    
    public class SearchResponse {
        @InvocableVariable(label='Success' description='Whether the search was successful')
        public Boolean isSuccess;
        
        @InvocableVariable(label='Total Count' description='Total number of matching records')
        public Integer totalResultCount;
        
        @InvocableVariable(label='Records JSON' description='JSON string of matching records')
        public String recordsJson;
        
        @InvocableVariable(label='Formatted Result' description='Formatted records in rich text with 5 key fields per record')
        public String records;
        
        @InvocableVariable(label='Error Message' description='Error message if search failed')
        public String errorMessage;
        
        @InvocableVariable(label='Message' description='Status message')
        public String message;
        
        @InvocableVariable(label='Warnings' description='Warning messages about schema validation and auto-fixes')
        public String warnings;
        
        public SearchResponse() {
            this.isSuccess = false;
            this.totalResultCount = 0;
            this.recordsJson = '[]';
            this.records = '';
            this.errorMessage = '';
            this.message = '';
            this.warnings = '';
        }
    }

    @InvocableMethod(
        label='Search Archived Records' 
        description='Search archived records and return structured results for Agentforce agents.'
        category='Data Management'
    )
    public static List<SearchResponse> searchArchivedRecords(List<SearchRequest> requests) {
        List<SearchResponse> results = new List<SearchResponse>();
        for (SearchRequest req : requests) {
            SearchResponse res = new SearchResponse();
            try {
                Http http = new Http();
                HttpRequest httpReq = new HttpRequest();
                httpReq.setMethod('POST');
                httpReq.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId());
                httpReq.setHeader('Content-Type', 'application/json');

                httpReq.setEndpoint(URL.getOrgDomainUrl().toExternalForm() +
                    '/services/data/v65.0/platform/data-resilience/archive/search/agentforce');

                Map<String, Object> body = new Map<String, Object>{
                    'objectName' => req.objectName,
                    'filtersJson' => req.filtersJson,
                    'maxResults' => req.maxResults
                };
                if (String.isNotBlank(req.dateField) && 
                    String.isNotBlank(req.startDate) && 
                    String.isNotBlank(req.endDate)) {
                    body.put('dateField', req.dateField);
                    body.put('startDate', req.startDate);
                    body.put('endDate', req.endDate);
                }

                httpReq.setBody(JSON.serialize(body));
                HttpResponse httpRes = http.send(httpReq);

                Integer statusCode = httpRes.getStatusCode();
                if (statusCode == 200 || statusCode == 201) {
                    Map<String, Object> responseMap = (Map<String, Object>) JSON.deserializeUntyped(httpRes.getBody());

                    res.isSuccess = Boolean.valueOf(responseMap.get('isSuccess'));
                    res.totalResultCount = Integer.valueOf(responseMap.get('totalResultCount'));
                    res.recordsJson = String.valueOf(responseMap.get('recordsJson'));
                    res.records = String.valueOf(responseMap.get('records'));
                    res.message = String.valueOf(responseMap.get('message'));
                    res.warnings = String.valueOf(responseMap.get('warnings'));
                    res.errorMessage = String.valueOf(responseMap.get('errorMessage'));
                } else {
                    res.errorMessage = 'HTTP ' + statusCode + ': ' + httpRes.getBody();
                }
            } catch (Exception e) {
                res.errorMessage = 'Exception: ' + e.getMessage();
            }
            results.add(res);
        }
        return results;
    }
}

Konfigurer den tilpassede agenthandling

Når Apex er implementeret, skal du oprette agenthandlingen i Salesforce-opsætningen.

Bemærk
Bemærk Vi anbefaler brug af Agentforce (standard) og agentemnet: Generelt CRM.

Forudsætninger:

  • Du har Salesforce Admin-tilladelser med adgang til agentkonfiguration.
  • Aktiver Agentforce i din organisation.
  1. Skriv Agent i feltet Find hurtigt i Opsætning.
  2. Hvis du vil se alle handlingerne i din organisation, skal du vælge Agenthandlinger.
  3. Klik på Ny agenthandling.
  4. Fra Reference Action Type (Referencehandlingstype) skal du vælge Apex.
  5. Fra Reference Action Category (Handlingskategori) skal du vælge Invocable Method (Metode, der kan kaldes).
  6. Fra Reference-handling skal du vælge Søg efter arkiverede registreringer.

    Søg efter arkiverede registreringer refererer til metoden i den ArchiveDataQueryActionWrapper Apex-klasse, som du oprettede tidligere.

  7. Agenthandlingsbetegnelsen og API-navnet udfyldes med referencehandlingsnavnet og API-navnet. Gennemse disse felter, og rediger om nødvendigt værdierne, så de beskriver handlingen nøjagtigt.
  8. Klik på Næste.
  9. Instruktionerne for den tilpassede handling og hvert input og hvert output udfyldes med beskrivelserne fra referencehandlingen. Gennemse disse felter, og foretag ændringer. Hvis du ønsker yderligere oplysninger, kan du se Bedste fremgangsmåder for agenthandling instruktioner.
    Beskrivelserne fra referencehandlingen kopieres over for at give dig en god start, men instruktionerne for agenthandlinger er forskellige fra traditionelle beskrivelser. En agent bruger en stor sprogmodel (LLM) og argumentationssystemet til at bestemme, hvornår de skal starte emner og handlinger i en samtale. Instruktionerne for handlingen, inputs og output fortæller en agent, hvad din handling gør, og hvornår og hvordan den skal bruges. Gældende instruktioner varierer efter handling og anvendelsessituation. Planlæg at teste og gentage dine instruktioner for at sikre, at din handling udføres som forventet.
  10. For hvert input og output skal du angive eventuelle gældende indstillinger.
    Indstilling Detaljer
    Indsaml data fra bruger Kræv, at denne parameter angives af brugeren.
    Filtrer fra Copilot-handling Når du opretter en agenthandling, føjes alle input og output fra referencehandlingen til agenthandlingen. Aktiver denne indstilling, når du ikke ønsker at bruge en parameter fra referencehandlingen med din agenthandling. Der kræves mindst et output for at bruge agenthandlingen.
    Kræv input Kræv denne parameter for at køre handlingen. Alle andre input behandles som valgfri. Hvis der kræves et input af referencehandlingen, aktiveres denne indstilling som standard og er skrivebeskyttet.
    Vis i samtale En agent kan inkludere denne parameter i et svar til en bruger. Der kræves mindst et output.
    Tip
    Tip Når en handling ændrer en registrering, kan du kræve, at en agent beder brugeren om at bekræfte ændringen, før agenten kører den. På registreringssiden for handlingen skal du aktivere indstillingen Kræv brugerbekræftelse.

    Hvis du bruger Agentforce-agenten, skal du fravælge Vis i samtale under Output.

    Hvis du vil føje handlingen til et standardemne, skal du redigere emnekonfigurationen fra fanen Emnekonfiguration.

  11. Klik på Udfør.

Når du har oprettet din handling, skal du tildele handlingen til et emne for din agent.

Hvis du vil teste din handling og se en eksempelvisning af, hvordan outputtet vises i en agentsamtale, skal du åbne agenten i agentkonstruktøren og starte en eksempelvisningssamtale. Angiv de udtryk, som du forventer at udløse din handling, og juster derefter agenthandlingen og emneinstruktionerne baseret på dine resultater. Tildel din handling til en agent for at teste den.

Føj en tilpasset agenthandling til et emne

Hvis du vil føje en agenthandling til et emne:

Bemærk
Bemærk For at opnå den bedste ydeevne anbefaler vi, at du ikke tildeler mere end 15 handlinger til et emne.
  1. Fra siden Agenteropsætning skal du åbne din agent i Agentkonstruktør.
  2. Hvis det er aktivt, skal du deaktivere din agent.
  3. Vælg Emner.
  4. Klik på navnet på det emne, du vil føje en handling til.
  5. Gå til Dette emnes handlinger.
    Hvis du bruger Generelt CRM-agentemne, skal du vælge det.
  6. Klik på Ny.
  7. Vælg eventuelle handlinger, som du ønsker at føje til din agent fra handlingsbiblioteket, eller opret en tilpasset agenthandling.
    Når du har valgt eventuelle handlinger, som du ønsker at føje til din agent fra handlingsbiblioteket, skal du aktivere og teste din agent.
  8. Klik på Udfør.

De handlinger, du har tilføjet, tildeles til din agent og er synlige på panelet Emner i agentkonstruktøren. Hvis du vil teste dit emne med dine netop tildelte handlinger, skal du genstarte eksempelvisningssamtalen for at anvende dine ændringer.

Fjern en tilpasset arkiveringsagenthandling fra et emne

Hvis du vil fjerne en agenthandling fra dit emne:

  1. Fra panelet Emner i agentkonstruktøren skal du klikke på navnet på det emne, du vil fjerne en agenthandling fra.
  2. Gå til Dette emnes handlinger.
  3. Fra rullelisten ud for handlingen skal du vælge Fjern fra emne.

Manglende arkiveringsagenttilladelser

Arkiveringstilladelser fungerer på samme måde som Arkiver komponentbegrænsningsregler. Adgang på registreringsniveau håndhæves kun, hvis objektet er føjet til begrænsningsreglerne i Arkiveringsindstillinger. Hvis der ikke føjes nogen objekter til begrænsningsreglerne, har brugerne offentlig adgang til alle arkiverede registreringer af den pågældende type.

Hvis der f.eks. ikke er angivet nogen sagsregler, kan en bruger, der oprindeligt ikke har adgang til en bestemt sag, se den, når den er arkiveret. Tilladelser er baseret på delingsindstillingerne på tidspunktet for arkivering. Alle ændringer af delingsregler, efter registreringen er arkiveret, anvendes ikke.

 
Indlæser
Salesforce Help | Article