Loading
AI generativa Agentforce ed Einstein
Esempio: Invio di una risposta a scelta completa a un cliente con una classe Apex

Esempio: Invio di una risposta a scelta completa a un cliente con una classe Apex

In questo esempio, si inviano più link con immagini associate a opzioni alimentari utilizzando una classe Apex e una risposta a scelta completa.

Versioni (Edition) richieste

Disponibile nelle versioni: Lightning Experience
Disponibile in: Enterprise Edition, Performance Edition, Unlimited Edition e Developer Edition. Le licenze aggiuntive richieste variano a seconda del tipo di agente.
Autorizzazioni utente richieste
Per creare e gestire gli agenti dell'assistenza:

Gestisci agenti dell'assistenza Agentforce E Gestisci agenti AI

OPPURE

Personalizza applicazione

Per definire, modificare, eliminare, impostare la protezione e definire le impostazioni di versione per le classi Apex: Apex autore

Prima di iniziare:

Creazione di una classe Apex

Per memorizzare e restituire un elenco di opzioni e dettagli relativi agli alimenti, creare una classe Apex.

Creare una classe Apex. Nell'editor di classe, aggiungere questo snippet di codice.
public class GetFoodDetailsInvocable {

    @InvocableMethod(label='Get Food Details' description='Returns linkURL, linkTitle, image linkURL, image MIME Type, and description text for a given food name')
    public static List<FoodDetailResponse> getFoodDetails(List<FoodDetailRequest> requests) {
        List<FoodDetailResponse> responses = new List<FoodDetailResponse>();

        for (FoodDetailRequest request : requests) {
            FoodDetailResponse response = new FoodDetailResponse();
            FoodDetail foodDetail = new FoodDetail();
            String foodName = request.foodName.toLowerCase();

            // Populate food details dynamically from GetFoodOptionsInvocable selections
            if (foodName.contains('pizza')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/pizza';
                foodDetail.linkTitle = 'Delicious Pizza';
                foodDetail.linkImageURL = 'https://www.publicdomainpictures.net/pictures/240000/velka/pizza-1508086895mrm.jpg';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'Our pizza is made with the most flavorful tomato sauce and fresh cheese so that you can indulge all of your senses.'
            } else if (foodName.contains('pasta')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/pasta';
                foodDetail.linkTitle = 'Tasty Pasta';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1606761568499-5ddd45e43b32';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'Our pasta is topped with the most flavorful tomato sauce and fresh cheese so that you can indulge all of your senses.'
            } else if (foodName.contains('tiramisu')) {
                foodDetail.linkURL = 'https://tastesbetterfromscratch.com/easy-tiramisu/';
                foodDetail.linkTitle = 'Classic Tiramisu';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1571877227200-a0d98ea607e9';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'Our tiramisu is made with the freshest ingredients so that you can indulge all of your senses.'
            } else if (foodName.contains('tacos')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/tacos';
                foodDetail.linkTitle = 'Authentic Mexican Tacos';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1551504734-5ee1c4a127da';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'Our tacos are made with the freshest ingredients so that you can indulge all of your senses.'
            } else if (foodName.contains('quesadilla')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/quesadilla';
                foodDetail.linkTitle = 'Cheesy Quesadilla';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1613952273499-5de42c1789c7';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('nachos')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/nachos';
                foodDetail.linkTitle = 'Loaded Nachos';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1606755962773-b35f5d518c46';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('croissant')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/croissant';
                foodDetail.linkTitle = 'Fresh Croissant';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1587049352907-23d8ff0ceac3';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('ratatouille')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/ratatouille';
                foodDetail.linkTitle = 'Traditional Ratatouille';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1633527076476-f847fc6d16a2';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('creme brulee')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/creme-brulee';
                foodDetail.linkTitle = 'French Crème Brûlée';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1609767400465-45e06f28a680';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('sushi')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/sushi';
                foodDetail.linkTitle = 'Japanese Sushi';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1589308078050-cf38fe054d63';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('ramen')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/ramen';
                foodDetail.linkTitle = 'Delicious Ramen';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1602334872613-3ab02f3c95a7';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('tempura')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/tempura';
                foodDetail.linkTitle = 'Crispy Tempura';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1571771439241-89b31f5092c7';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('dumplings')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/dumplings';
                foodDetail.linkTitle = 'Chinese Dumplings';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1617196036851-20ce58a15b1b';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('peking duck')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/peking-duck';
                foodDetail.linkTitle = 'Peking Duck';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1643989946129-73e3a872ad80';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('spring rolls')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/spring-rolls';
                foodDetail.linkTitle = 'Fresh Spring Rolls';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1604328698692-80d9b81baf4d';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('burger')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/burger';
                foodDetail.linkTitle = 'Classic Burger';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1551782450-a2132b4ba21d';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('hot dog')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/hot-dog';
                foodDetail.linkTitle = 'Grilled Hot Dog';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1621248313959-d6c0e480c54e';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else if (foodName.contains('apple pie')) {
                foodDetail.linkURL = 'https://www.foodwebsite.com/apple-pie';
                foodDetail.linkTitle = 'Homemade Apple Pie';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1606760225157-145fe46c0b7f';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            } else {
                foodDetail.linkURL = 'https://www.foodwebsite.com/food';
                foodDetail.linkTitle = 'Unknown Food';
                foodDetail.linkImageURL = 'https://images.unsplash.com/photo-1606851093480-b24197b5fd6a';
                foodDetail.linkImageMimeType = 'image/jpeg';
                foodDetail linkDescriptionText = 'All of our food is delicious.'
            }
            response.foodDetails.add(foodDetail);
            responses.add(response);
            return responses;
        }
        
        return responses;
    }

    // Request Wrapper Class
    public class FoodDetailRequest {
        @InvocableVariable(label='Food Name' description='The name of the food item' required=true)
        public String foodName;
    }

    public class FoodDetail { 
        public String linkURL;
        public String linkTitle;
        public String linkImageURL;
        public String linkImageMimeType;
        public String linkDescriptionText;
    }

    // Response Wrapper Class
    public class FoodDetailResponse {

        @InvocableVariable(label='Food Details' required=true)
        public List<FoodDetail> foodDetails;

         public FoodDetailResponse() {
            this.foodDetails = new List<FoodDetail>();
        }
    }
}

In questa classe Apex, la classe GetFoodDetailsInvocable ottiene un elenco di nomi di alimenti e restituisce un elenco di alimenti in base ai nomi assegnati. La classe accetta come input la classe wrapper FoodDetailRequest, che contiene un nome alimento e variabili che possono contenere i dettagli degli alimenti. Per ogni nome di alimento, la classe GetFoodDetailsInvocable cerca una corrispondenza con alimenti predefiniti. Se è presente una corrispondenza, la classe assegna il link al sito Web, il titolo, l'URL dell'immagine, il tipo MIME dell'immagine e il testo della descrizione dell'elemento a un oggetto personalizzato definito dalla classe wrapper FoodDetailResponse.

Assicurarsi che l'utente agente abbia accesso alla classe Apex.

Creazione di un'azione agente personalizzata

Creare un'azione agente personalizzata che utilizza la classe Apex Get Food Details come azione di riferimento.

  1. Tipo di azione di riferimento: Apex
  2. Azione di riferimento: Ottenere i dettagli degli alimenti
  3. Istruzioni azione agente: Trova e recupera i dettagli delle opzioni alimentari. Per ogni opzione alimentare, recupera il nome, l'immagine, il tipo MIME, l'URL e il testo della descrizione. Questa azione si riferisce al momento in cui un utente chiede cosa è presente nel menu.
  4. Dettagli caricamento: Ottenere opzioni alimentari
  5. Istruzioni di input foodName: Nome dell'opzione alimentare. Selezionare Richiedi input.
  6. Istruzioni di output foodDetails: Dettagli di un'opzione alimentare, inclusi link, titolo, URL immagine, tipo MIME immagine e testo della descrizione. Selezionare Mostra nella conversazione.

Creazione di un subagente personalizzato

Creare un subagente personalizzato che includa l'azione Ottieni dettagli cibo.

  1. Aprire l'agente dell'assistenza Agentforce in Agentforce Builder.
  2. Creare un subagente personalizzato con queste proprietà.
    1. Descrizione classificazione: Questo sottoagente fornisce all'utente un elenco di opzioni alimentari e dettagli. Ad esempio, utilizzare questo subagente quando l'utente dice: "cosa c'è nel menu".
    2. Ambito: Il tuo compito è solo quello di fornire opzioni e dettagli sul cibo.
    3. Istruzioni:
      Utilizzare l'azione Get_Food_Details per ottenere opzioni e dettagli sugli alimenti.
      Quando l'utente dice: "cosa c'è nel menu", fornire sempre un elenco di opzioni alimentari. Ad esempio, Tiramisù classico, Torta di mele fatta in casa e Ramen delizioso. Quindi è previsto che l'utente selezioni un'opzione cibo. Utilizzando il nome dell'opzione alimentare selezionato dall'utente, passare il nome all'azione Get_Food_Details per ottenere i dettagli sull'elemento.
      Quando l'utente seleziona un'opzione cibo, utilizzare l'azione Get_Food_Details per fornire all'utente il link e l'immagine per l'opzione cibo. Ad esempio, se l'utente seleziona Rame delizioso, inviare Rame delizioso come input all'azione Get_Food_Details.
    4. Includere l'azione Ottieni dettagli cibo nel subagente.

Per testare l'agente, attivarlo e chattare con l'agente su un canale connesso.

 
Caricamento
Salesforce Help | Article