Aggiunta di campi di unione Apex a un modello di prompt email di vendita
Creare un modello di prompt email di vendita di esempio che utilizza Apex.
Versioni (Edition) richieste
| Disponibile in: Lightning Experience |
| Disponibile in: Enterprise Edition, Performance Edition e Unlimited Edition con Einstein per Platform, Einstein o Agentforce per Sales or Service add-on o Agentforce Foundations |
| Autorizzazioni utente richieste | |
|---|---|
| Per creare e gestire modelli di prompt nel Generatore di prompt: | Insieme di autorizzazioni Gestore modelli di prompt
O Insieme di autorizzazioni Personalizza applicazione |
Si supponga di essere un amministratore Salesforce e che il team di vendita richieda un modo più semplice per inviare email ai referenti sugli eventi di marketing nelle vicinanze.
Si crea un modello di prompt email che avvia una classe Apex per ricevere eventi di marketing nella stessa città e stato del referente. La classe Apex riceve un elenco di eventi e le relative posizioni per il LLM.
Di seguito è riportata la classe Apex a cui si accede come risorsa in un modello di prompt.
public class ContactEventsPrompt {
@InvocableMethod(label='Contact Events'
description='Find Events for a Contact'
CapabilityType='PromptTemplateType://einstein_gpt__salesEmail')
public static List<Response> getContactsPrompt(List<Request> requests) {
// validate the expected number of requests as an input
if (requests.size() != 1)
throw new ListException('The requests list must contain one entry only');
Contact c = requests[0].Recipient;
// Protect against SOQL Injection
string searchCity = '%' + c.MailingCity + '%';
string searchState = '%' + c.MailingState + '%';
List<Event> events =
[SELECT Id, Subject, Description, Location, StartDateTime
FROM Event
WHERE IsArchived = false AND Location LIKE :searchCity
AND Location LIKE :searchState WITH USER_MODE];
string responseData = '';
if(events.isEmpty()) {
responseData = 'No upcoming Marketing events near you.';
} else {
for(Event e : events) {
responseData += 'Event details: ';
responseData += e.Subject;
responseData += ', ';
responseData += e.Description;
responseData += ', ';
responseData += e.Location;
responseData += '/nStart Time: ';
responseData += e.StartDateTime.format();
responseData += '.';
}
}
List<Response> responses = new List<Response>();
Response res = new Response();
res.Prompt = responseData;
responses.add(res);
return responses;
}
public class Request {
@InvocableVariable(required=true)
public User Sender;
@InvocableVariable(required=true)
public Contact Recipient;
}
public class Response {
@InvocableVariable
public String Prompt;
}
}I requisiti della classe Apex sono descritti in Grounding con campi Apex Merge.
Poiché la copertura del test è importante, aggiungere una classe di test. La classe di test simula i dati inviati dal Generatore di prompt. Vengono forniti due casi di test: uno per il momento in cui vengono rilevati eventi e uno per il momento in cui non sono presenti eventi.
@IsTest
public class ContactEventsPrompt_Test {
@IsTest
public static void noEventsForContactResponse() {
List<ContactEventsPrompt.Request> requestsInput
= new List<ContactEventsPrompt.Request>();
ContactEventsPrompt.Request request
= new ContactEventsPrompt.Request();
request.Recipient = new Contact();
requestsInput.add(request);
List<ContactEventsPrompt.Response> responses =
ContactEventsPrompt.getContactsPrompt(requestsInput);
Assert.areEqual(1, responses.size());
ContactEventsPrompt.Response response = responses[0];
Assert.areEqual('No upcoming Marketing events near you.',
response.Prompt);
}
@IsTest
public static void findMatchingEventsForContact() {
Contact c = new Contact(LastName='TestContact',
MailingCity='San Francisco', MailingState='CA');
insert c;
Event e = new Event(Subject='Test Event', Description='Big Event',
Location='415 Mission St, San Francisco, CA 94105, USA',
StartDateTime=DateTime.newInstance(2023,09,28),
DurationInMinutes=5 );
insert e;
List<ContactEventsPrompt.Request> requestsInput
= new List<ContactEventsPrompt.Request>();
ContactEventsPrompt.Request request
= new ContactEventsPrompt.Request();
request.Recipient = c;
requestsInput.add(request);
Test.startTest();
List<ContactEventsPrompt.Response> responses =
ContactEventsPrompt.getContactsPrompt(requestsInput);
Test.stopTest();
Assert.areEqual(1, responses.size());
ContactEventsPrompt.Response response = responses[0];
Assert.areEqual(formatEventString(e), response.Prompt);
}
private static String formatEventString(Event event) {
String formattedEventString = 'Event details: ';
formattedEventString += event.Subject;
formattedEventString += ', ';
formattedEventString += event.Description;
formattedEventString += ', ';
formattedEventString += event.Location;
formattedEventString += '/nStart Time: ';
formattedEventString += event.StartDateTime.format();
formattedEventString += '.';
return formattedEventString;
}
}Ora che la classe Apex è pronta, chiamarla dal Generatore di prompt.
Nel Generatore di prompt, creare un nuovo modello di prompt.
- Nell'elenco a discesa Tipo di modello di prompt, selezionare Sales Email.
- Per Nome modello di prompt, immettere Apex: Email di marketing degli eventi nelle vicinanze.
- Per Tipo di destinatario, selezionare Referente.
- Lasciare vuoto il campo Descrizione.
- Fare clic su Crea e si verrà reindirizzati all'area di lavoro del modello di prompt.
- Nella Libreria modelli prompt di esempio, trovare il modello di prompt email di vendita "Bozza di un'email per un referente sugli eventi di marketing regionali". Copiare e incollare questo modello nell'Area di lavoro del modello di prompt.
- Prima di poter eseguire questo modello nel Generatore di prompt, nella sezione Prompt, fare clic su Inserisci risorsa. Il campo di ricerca viene visualizzato la prima volta che si fa clic su questa opzione.
-
Utilizzare la barra di ricerca per sostituire i segnaposto con campi di unione.
-
Nell'area di lavoro del modello di prompt, eliminare il segnaposto
<Get_Events_Near_Contact__Prompt__Flow>. - Nella sezione Prompt, fare clic sulla barra di ricerca Risorse e selezionare Apex.
-
Selezionare Eventi referente per aggiungere la classe Apex
ContactEventsPromptal modello. Eventi referente è l'attributo label impostato nell'annotazione@InvocableMethodnella classe ApexContactEventsPrompt.La classe Apex viene inserita nel modello di prompt comeApex:ContactEventsPrompt. -
Eliminare il segnaposto
<sender.Name__Merge_Field>. - Fare clic sulla barra di ricerca Risorse e selezionare Mittente | Nome completo .
-
Eliminare il segnaposto
<recipient.Name__Merge_Field>. - Fare clic sulla barra di ricerca Risorse e selezionare Organizzazione corrente | Nome .
-
Eliminare il segnaposto
<recipient.Company__Merge_Field>. - Fare clic sulla barra di ricerca Risorse e selezionare Organizzazione corrente | Nome .
-
Nell'area di lavoro del modello di prompt, eliminare il segnaposto
