Loading
Configuración y mantenimiento de su organización de Salesforce
Crear una acción de agente personalizada

Crear una acción de agente personalizada

Cree una acción reutilizable y luego asigne esa acción al agente en la aplicación Archivar.

Antes de configurar la acción en el Generador de agentes, cree la clase Apex que contiene el método invocable. Esta clase gestiona la lógica para consultar los registros archivados. Para obtener más información, consulte Crear una clase Apex.

Por ejemplo, cree una clase Apex denominada 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;
    }
}

Configurar la acción de agente personalizado

Cuando se implemente la clase Apex, cree la acción de agente en la configuración de Salesforce.

Nota
Nota Recomendamos utilizar Agentforce (Predeterminado) Agent y el Tema de agente: CRM general.

Requisitos previos:

  • Tiene permisos Administrador de Salesforce con acceso a la configuración de Agente.
  • Active Agentforce en su organización.
  1. Desde Configuración, en el cuadro Búsqueda rápida, ingrese Agente.
  2. Para ver todas las acciones en su organización, seleccione Acciones de agente.
  3. Haga clic en Nueva acción agente.
  4. Desde Tipo de acción de referencia, seleccione Apex.
  5. Desde Categoría de acción de referencia, seleccione Método invocable.
  6. Desde Acción de referencia, seleccione Buscar registros archivados.

    Buscar registros archivados hace referencia al método en la clase Apex ArchiveDataQueryActionWrapper que creó anteriormente.

  7. La etiqueta de acción de agente y el nombre de API se rellenan con el nombre de acción de referencia y el nombre de API. Revise estos campos y, si es necesario, modifique los valores de modo que describan con precisión la acción.
  8. Haga clic en Siguiente.
  9. Las instrucciones para la acción personalizada y cada entrada y salida se rellenan con las descripciones de la acción de referencia. Revise estos campos y realice cambios. Para obtener más información, consulte Mejores prácticas para instrucciones de acción de agentes.
    Las descripciones de la acción de referencia se copian para darle una ventaja inicial, pero las instrucciones de acción del agente difieren de las descripciones tradicionales. Un agente utiliza un modelo de lenguaje grande (LLM) y el motor de razonamiento para determinar cuándo iniciar temas y acciones en una plática. Las instrucciones para la acción, las entradas y las salidas indican a un agente qué hace su acción y cuándo y cómo utilizarla. Las instrucciones efectivas varían por acción y caso de uso. Planifique probar e iterar en sus instrucciones para asegurarse de que su acción tiene el desempeño esperado.
  10. Para cada entrada y salida, especifique cualquier configuración aplicable.
    Configuración Detalles
    Recopilar datos del usuario Requiera que el usuario proporcione este parámetro.
    Filtrar desde Acción de Copilot Cuando crea una acción de agente, todas las entradas y salidas de la acción de referencia se agregan a la acción de agente. Active este parámetro cuando no desee utilizar un parámetro de la acción de referencia con su acción de agente. Se requiere al menos una salida para utilizar la acción de agente.
    Requerir entrada Requiera este parámetro para ejecutar la acción. El resto de entradas se tratan como opcionales. Si la acción de referencia requiere una entrada, este parámetro se activa de forma predeterminada y es de solo lectura.
    Mostrar en plática Un agente puede incluir este parámetro en una respuesta a un usuario. Se requiere al menos una salida.
    Sugerencia
    Sugerencia Cuando una acción cambia un registro, puede requerir que un agente solicite al usuario confirmar el cambio antes de que el agente lo ejecute. En la página de registro para la acción, active el parámetro Requerir confirmación de usuario.

    Si está utilizando Agentforce Agent, anule la selección de Mostrar en plática bajo Salida.

    Para agregar la acción a un tema estándar, modifique la configuración del tema desde la ficha Configuración de tema.

  11. Haga clic en Finalizar.

Después de crear su acción, asigne la acción a un tema para su agente.

Para probar su acción y realizar una vista previa de cómo aparece el resultado en una plática de agente, abra el agente en el Generador de agentes e inicie una plática de vista previa. Ingrese frases que espera que desencadenen su acción, y luego ajuste la acción del agente y las instrucciones del tema basándose en sus resultados. Asigne su acción a un agente para probarla.

Agregar una acción de agente personalizado a un tema

Para agregar una acción de agente a un tema:

Nota
Nota Para un mejor desempeño, recomendamos asignar no más de 15 acciones a un tema.
  1. Desde la página Configuración de agentes, abra su agente en el Generador de agentes.
  2. Si está activo, desactive su agente.
  3. Seleccione Temas.
  4. Haga clic en el nombre del tema al que desea agregar una acción.
  5. Vaya a Acciones de este tema.
    Si está utilizando el tema Agente de CRM general, selecciónelo.
  6. Haga clic en Nuevo.
  7. Seleccione cualquier acción que desee agregar a su agente desde la biblioteca de acciones o cree una acción de agente personalizada.
    Después de seleccionar cualquier acción que desee agregar a su agente desde la biblioteca de acciones, active y pruebe su agente.
  8. Haga clic en Finalizar.

Las acciones que agregó se asignan a su agente y son visibles en el panel Temas del Generador de agentes. Para probar su tema con sus acciones recién asignadas, reinicie la plática de vista previa para aplicar sus cambios.

Eliminar una acción de agente de archivo personalizado de un tema

Para eliminar una acción de agente de su tema:

  1. Desde el panel Temas del Generador de agentes, haga clic en el nombre del tema del que desea eliminar una acción de agente.
  2. Vaya a Acciones de este tema.
  3. Desde la lista desplegable junto a la acción, seleccione Eliminar del tema.

Faltan permisos de agente de archivo

Los permisos de archivado funcionan de forma similar a Reglas de restricción de componentes de archivado. El acceso a nivel de registro solo se aplica si el objeto se agregó a las Reglas de restricción en Configuración de archivo. Si no se agregan objetos a las reglas de restricción, los usuarios tienen acceso público a todos los registros archivados de ese tipo.

Por ejemplo, si no se establecen reglas de Caso, un usuario que no puede acceder originalmente a un caso específico puede verlo después de archivarlo. Los permisos se basan en la configuración de colaboración en el momento del archivado. Cualquier cambio en Reglas de colaboración después de archivar el registro no se aplica.

 
Cargando
Salesforce Help | Article