U bent hier:
Een aangepaste agentactie maken
Maak een herbruikbare actie en wijs die actie vervolgens toe aan de agent in de app Archiveren.
Voordat u de actie configureert in de Agentsamensteller, maakt u de Apex klasse die de aanroepbare methode bevat. Deze klasse handelt de logica af voor het uitvoeren van een query op de gearchiveerde records. Zie Een Apex klasse maken voor meer informatie.
Maak bijvoorbeeld een Apex klasse met de naam 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;
}
}De actie Aangepaste agent configureren
Wanneer de Apex klasse is geïmplementeerd, maakt u de agentactie in de set-up van Salesforce.
Randvoorwaarden:
- U hebt Salesforce-beheerdersmachtigingen met toegang tot Agent-configuratie.
- Schakel Agentforce in uw organisatie in.
- Geef vanuit Set-up Agent op in het vak Snel zoeken.
- Selecteer voor het weergeven van alle acties in uw organisatie Agentacties.
- Klik op Nieuwe agentactie.
- Selecteer Apex bij Type verwijzingsactie.
- Selecteer Aanroepbare methode in Categorie verwijzingsactie.
-
Selecteer Zoeken in gearchiveerde records bij Verwijzingsactie.
Zoeken in gearchiveerde records verwijst naar de methode in de
ArchiveDataQueryActionWrapperApex klasse die u eerder hebt gemaakt. - Het label en de API-naam van de agentactie worden ingevuld met de verwijzingsactienaam en API-naam. Controleer deze velden en bewerk indien nodig de waarden zodat ze de actie nauwkeurig beschrijven.
- Klik op Volgende.
-
De instructies voor de aangepaste actie en elke invoer en uitvoer worden ingevuld met de beschrijvingen van de verwijzingsactie. Controleer deze velden en breng wijzigingen aan. Zie Best practices voor actie-instructies voor agenten voor meer informatie.
De beschrijvingen van de verwijzingsactie worden overgenomen om u een voorsprong te geven, maar actie-instructies voor agenten verschillen van traditionele beschrijvingen. Een agent gebruikt een groot taalmodel (LLM) en de redeneerengine om te bepalen wanneer onderwerpen en acties in een gesprek moeten worden gestart. De instructies voor de actie, de invoer en de uitvoer vertellen een agent wat uw actie doet en wanneer en hoe deze te gebruiken. Effectieve instructies variëren per actie en gebruikscase. Plan het testen en herhalen van uw instructies om ervoor te zorgen dat uw actie presteert zoals verwacht.
-
Geef voor elke invoer en uitvoer eventuele toepasselijke instellingen op.
Instelling Details Gegevens van gebruiker verzamelen Vereist dat deze parameter wordt opgegeven door de gebruiker. Filteren vanuit Copilot-actie Wanneer u een agentactie maakt, worden alle invoer en uitvoer van de verwijzingsactie toegevoegd aan de agentactie. Activeer deze instelling wanneer u geen parameter uit de verwijzingsactie wilt gebruiken voor uw agentactie. Minstens één uitvoer is vereist om de agentactie te gebruiken. Invoer vereisen Vereist deze parameter om de actie uit te voeren. Alle andere invoer wordt als optioneel behandeld. Als een invoer vereist is door de verwijzingsactie, wordt deze instelling standaard ingeschakeld en is deze alleen-lezen. Tonen in gesprek Een agent kan deze parameter opnemen in een reactie aan een gebruiker. Er is minstens één uitvoer vereist. Tip Wanneer een actie een record wijzigt, kunt u vereisen dat een agent de gebruiker vraagt de wijziging te bevestigen voordat de agent deze uitvoert. Activeer op de recordpagina voor de actie de instelling Gebruikersbevestiging vereisen.Als u de Agentforce Agent gebruikt, heft u de selectie van Toon in gesprek op onder Uitvoer.
Als u de actie wilt toevoegen aan een standaardonderwerp, bewerkt u de onderwerpconfiguratie vanaf het tabblad Onderwerpconfiguratie.
- Klik op Voltooien.
Nadat u uw actie hebt gemaakt, wijst u de actie toe aan een onderwerp voor uw agent.
Als u uw actie wilt testen en een voorbeeld wilt bekijken van hoe de uitvoer wordt weergegeven in een gesprek met een agent, opent u de agent in de Agentsamensteller en start u een voorbeeldgesprek. Geef zinnen op waarvan u verwacht dat ze uw actie activeren en pas vervolgens de actie- en onderwerpinstructies van agenten aan op basis van uw resultaten. Wijs uw actie toe aan een agent om deze te testen.
Een aangepaste agentactie toevoegen aan een onderwerp
Een agentactie toevoegen aan een onderwerp:
- Open uw agent in de Agentsamensteller vanaf de pagina Set-up van agenten.
- Indien actief, schakelt u uw agent uit.
- Selecteer Onderwerpen.
- Klik op de naam van het onderwerp waaraan u een actie wilt toevoegen.
-
Ga naar Acties van dit onderwerp.
Als u het onderwerp Algemeen CRM-agent gebruikt, selecteert u het.
- Klik op Nieuw.
-
Selecteer alle acties die u aan uw agent wilt toevoegen vanuit de actiebibliotheek of maak een aangepaste agentactie.
Nadat u acties hebt geselecteerd die u aan uw agent wilt toevoegen vanuit de actiebibliotheek, activeert en test u uw agent.
- Klik op Voltooien.
De acties die u hebt toegevoegd, worden toegewezen aan uw agent en zijn zichtbaar in het deelvenster Onderwerpen van de Agentsamensteller. Als u uw onderwerp wilt testen met uw nieuw toegewezen acties, start u het voorbeeldgesprek opnieuw om uw wijzigingen toe te passen.
Een aangepaste actie Agent archiveren verwijderen uit een onderwerp
Een agentactie verwijderen uit uw onderwerp:
- Klik vanuit het deelvenster Onderwerpen van de Agentsamensteller op de naam van het onderwerp waaruit u een agentactie wilt verwijderen.
- Ga naar Acties van dit onderwerp.
- Selecteer Verwijderen uit onderwerp in de vervolgkeuzelijst naast de actie.
Ontbrekende machtigingen Agent archiveren
Machtigingen voor archiveren werken op dezelfde manier als Beperkingsregels voor componenten archiveren. Toegang op recordniveau wordt alleen afgedwongen als het object is toegevoegd aan de Beperkingsregels binnen Archiefinstellingen. Als er geen objecten worden toegevoegd aan de beperkingsregels, hebben gebruikers openbare toegang tot alle gearchiveerde records van dat type.
Als er bijvoorbeeld geen caseregels zijn ingesteld, kan een gebruiker die oorspronkelijk geen toegang heeft tot een specifieke case, deze zien nadat deze is gearchiveerd. Machtigingen zijn gebaseerd op de instellingen voor delen op het moment van archiveren. Wijzigingen in Regels voor delen nadat de record is gearchiveerd, worden niet toegepast.

