Nel primo articolo di questa serie abbiamo visto come connetterci ai dati di Salesforce CRM, e nel secondo come creare una dashboard, sfruttando tutta la potenzialità dell’agente AI Einstein e il data model Customer360. Nel terzo come sfruttare le quick actions di Salesforce per agire direttamente dalla dashboard e come attivare una chat con Agentforce, l’agente AI.
Oggi vediamo come fare in modo che l’agente con cui chattiamo, compia azioni al posto nostro.
Purtroppo al momento gli agenti non hanno accesso diretto alle quick actions che abbiamo sfruttato nella dashboard, l’unico modo che abbiamo per fargli compiere azioni per noi è creare un Salesforce Flow e poi istruire l’agente su come “compilare” i dati all’interno del flow, che verrà lanciato/eseguito dall’agente.
Per continuare con lo stesso esempio dei precedenti articoli, vogliamo fare scrivere una nota all’agente.
1. Creazione del Flow
Quando creiamo a mano una nuova task, ad esempio per un’opportunità, i campi che abbiamo nella maschierina sono 5, di cui solo 1 obbligatorio (l’assegnatario):
Se apriamo una task, esistono anche altri attributi, come ad esempio lo status e la priorità.
Il nostro flow dovrà andare a creare un nuovo record di tipo task e dovremo mappare i campi in questo modo:
- Assigned to ID –> è un campo variabile, a seconda di chi parla con l’agente, l’assegnatario sarà diverso. Useremo una viariabile di sistema che cattura l’id dell’utente che parla con l’agente
- Due Date –> è un campo variabile di tipo data. L’agente dovrà chiedere all’utente che due date vuole.
- Subject –> nel nostro esempio lo creiamo come costante, il subject è sempre “Send Quote”.
- Related to ID –> è un campo variabile, parlando con l’agente identificheremo una opportunità che ci interessa e gli chiederemo di creare una task proprio per quell’opportunità. Dovrebbe capire da solo il dato dal contesto. In caso non sia in grado di capirlo, lo richiederà espressamente.
- Status –> sarà un valore costante, tutte le task create dall’agente avranno status “Not Started”
- Priority –> sarà un valore costante, tutte le task create dall’agente avranno status “Normal”
Ovviamente nulla ci vieta di avere uno status usato come variabile dove l’utente dovrà indicare uno status specifico. Ho cercato di creare il flow per usare tutti i tipi di variabili esistenti, senza rendere il tutto troppo complesso, per avere un esempio di tutte.
Possiamo creare nuovi Salesforce Flow accedendo a Setup (l’icona a forma di ruota dentata in alto a destra) e poi possiamo cercare Flow nel box di ricerca e scegliere Process Automation –> Flows.
Accederemo alla pagina con tutti i flow esistenti e possiamo usare il pulsante New Flow in alto a destra per crearne uno nuovo.
Nella schermata successiva dobbiamo scegliere che tipo di flow creare. Dato che il trigger verrà dato dall’agente (sfruttiamo l’API), dobbiamo scegliere AutoLauched Automation.
All’interno della categoria Autolaunched dobbiamo scegliere Autolaunched Flow (No Trigger).
Tutti i flow di questa tipologia nascono già con un inizio e una fine:
Immaginate come se l’agente premesse il tasto play per noi, e tutti i blocchi logici presenti tra l’inizio e la fine, vengono eseguiti in successione uno all’altro.
Se clicchiamo sul + in mezzo tra i due blocchi, possiamo aggiungere un blocco tra quelli presenti. Nel nostro caso vogliamo creare un nuovo record di tipo Task, quindi sceglieremo Create Records:
Assegnamo un nome al blocco, scriviamo una breve descrizione e scegliamo di creare un record manuale di tipo Task.
Nella parte successiva della finestra, dobbiamo andare a mappare i campi che appartengono all’oggetto Task, specificando come vogliamo compilarli.
Clicchiamo su Add Field e poi cerchiamo tra i campi la Due Date e la selezioniamo.
Attiveremo in questo modo il campo Due Date Only e alla sua destra apparirà il box per assegnare un valore.
Dobbiamo creare una nuova risorsa di tipo Variable, perché la data di scadenza è un qualcosa che l’utente potrà scegliere a piacimento. E, siccome la Due Date è un campo data (lo possiamo vedere dall’icona accanto al nome), dovrà essere una variabile data.
Come API Name possiamo usare un nome a piacimento, consiglio di usare dei nomi che ci permettano dopo di selezionare e usare in modo semplice le variabili nel flow.
Per dire al flow che questo dato deve essere usato come input, dobbiamo selezionare l’opzione in basso Available for Input. In questo modo il flow sa che senza questa info non può partire.
Ora facciamo lo stesso procedimento per il campo Related To ID, che sarebbe l’ID dell’opportunità per la quale la task deve essere creata. Il Value sarà una variabile di tipo text, available for Input.
Il prossimo campo che andiamo a mappare è lo Status, che nel mio esempio è un valore costante. Possiamo seguire lo stesso procedimento, creando però una risorsa di tipo Constant e assegnando a mano il valore che vogliamo settare:
Il data type della colonna Status è un elenco di valori possibili, quindi dovremo fare attenzione a scrivere un value tra quelli accettati come possibili status esistenti. Se al posto di Not Started scriviamo “Non iniziato”, il flow potrebbe fallire perché di fatto stiamo settando uno status inesistente per il sistema.
Ripetiamo gli stessi step per creare anche il field Priority, tipo text constant, valore: Normal.
Ripetiamo gli stessi step per creare anche il field Subject, tipo text constant, valore: Send Quote.
Alla fine dovremmo avere una situazione tipo questa:
In ultimo ci manca il field dell’assegnatario, per il quale vogliamo catturare in modo dinamico la persona che sta chattando con l’agente.
Possiamo mappare il field Assigned To ID con la variabile di sistema della categoria Running User e poi scegliere dall’elenco ID, oppure scrivere nel box {!$User.Id}
Tutte le risorse che abbiamo creato sono elencate nella toolbox a sinistra, e possiamo modificarle direttamente da lì, in caso dovessimo cambiare qualcosa.
Prima di procedere con l’assegnazione del flow all’agente, conviene fare un test per vedere che sia tutto funzionante.
Recuperate un ID di una opportunity, da usare come test e proviamo ad eseguire il flow con il pusante Debug, dopo aver salvato il nostro flow.
Accediamo all’app Sales e apriamo una opportinutà da usare come test. L’ID lo possiamo leggere nella URL del browser web:
Ora debugghiamo il flow.
Clicchiamo sul pulsante Run e pochi secondi dopo avremo il resoconto del debug.
Se non vedete errori, il flow ha funzionato e se andate a vedere la pagina dell’opportunità usata come test, avrà una task Send Quote, in status not started e con priorità Normal.
Prima di poter procedere al prossimo step, dobbiamo dotare il nostro flow di un output. Questo tipo di flow crea un nuovo record, quindi non esiste un vero e proprio output da restituire, se non l’ID della task appena creata.
Dalla toolbox di sinistra, creiamo una nuova risorsa, tipo variabile text e selezioniamo l’opzione, Available for Output.
Selezioniamo il blocco del create record in mezzo al flow, e a destra nelle configurazioni, in basso abbiamo l’opzione Manually assign variables (advanced) in cui possiamo assegnare l’ID della task che verrà creata dal flow alla variabile appena creata.
Ora possiamo salvare il flow, scegliendo Save as New version e successivamente riattivare il flow.
2. Aggiunta del flow tra le action assegnate all’agente
Ora che abbiamo un flow funzionante, possiamo assegnarlo agli asset dell’agente.
Torniamo ai settaggi di Salesforce (icona ruota dentata in alto a destra) e cerchiamo Agentforce Assets, per registrare un nuovo asset disponibile nella library per i nostri agenti.
Passiamo alla tab Actions, accanto a Topics, e creiamo una New Agent Action: 
Selezioniamo Flow come tipo di azione e cerchiamo il flow che abbiamo appena creato. Label e API Name vengono compilate automaticamente. Clicchiamo su Next in basso a destra.
Nella finestra successiva avremo la mappatura di tutto ciò che è stato settato come variabile di input nel flow e come output. A cui dovremo dare una descrizione, sotto forma di istruzione e poi due check box per gli input:
- Require input: se lo selezioniamo, l’agente non eseguirà il flow finché non avrà queste info
- Collect data for user: se lo selezioniamo, l’agente chiederà esplicitamente questa info nel caso in cui non riesca a reperirla dal contesto della chat.
E due checkbox per gli output:
- Filter from agent action: alcuni flow potrebbero avere svariati output intermedi che creano array o elenchi di id come output, ad esempio, che vengono usati come input dai blocchetti logici successivi del flow. Magari non ci interessa restituire proprio tutti gli output ma filtrarne solo alcuni. Quindi filtrando l’output eviteremo che venga resitutito tutto.
- Show in conversation: una volta che il flow è stato eseguito, l’output viene restituito in chat, a mo di feeback di ciò che è successo.
Nel nostro caso il related record id sarà required e non sarà necessario chiederlo all’utente, lo capirà dalla chat stessa. Anche perché sarebbe scomodo chiedere a un utente di recuperare un id e scriverlo.
Per la due date invece dovremo settarla required e chiederemo di collezionare i dati dall’utente e richiedere una data nel formato necessario.
L’output invece non abbiamo bisogno di filtrarlo, perché è già un singolo id e vogliamo che venga restituito all’utente l’esito della creazione della task con id tal dei tali.
Clicchiamo su Finish.
Ora che abbiamo l’azione nella libreria, possiamo assegnarla al nostro agente.
Torniamo al setup di Salesforce e cerchiamo Agentforce Agents. Selezioniamo l’agente Analytics and Visualization che abbiamo attivato per poter chattare in Tablau Next.
Apriamo il Builder col pulsante in alto a destra, e per poter aggiungere un nuovo topic al nostro agente, dovremo disattivare l’agente col pusante Deactivate in alto a destra.
Se l’agente è disattivo, apparirà il pusante per aggiungere un New Topic:
Per prima cosa descriviamo cosa fa la nostra action:
A seconda di quanto siamo stati bravi a descrivere il nostro flow nello step precedente, la prossima schermata potrebbe cambiare ed essere già parzialmente compilata.
- Classification Description: questa descrizione viene usata dall’agente per capire quando deve usare questo topic. Nel nostro caso potremmo scrivere qualcosa tipo: “Handles user requests to create new tasks for opportunities with a specified due date.”
- Scope: dice all’agente cosa è possibile fare con questo topic. Nel nostro caso potremmo scrivere qualcosa tipo: “My job is only to assist users in creating new tasks for opportunities, by gathering necessary details, including the task due date, the opportunity id, assigning the task to the user that is talking to me, and confirming the task creation.”
- Instructions: in questa sezione abbiamo l’elenco delle istruzioni necessarie per eseguire la task. Nel nostro caso potremmo settare 3 istruzioni:
- Get the ID of the opportunity from the context conversation
- If the user does not provide a due date, ask to set one
- Ensure the task is sucessfully created and notify the user of the outcome
In generale più siamo bravi e minuziosi a descrivere il tutto, più l’agente sarà agevolato nell’utilizzo del topic.
Infine cliccando su Next possiamo passare all’ultimo step in cui andremo ad assegnare il flow al topic.
Clicchiamo su Finish e ora possiamo riattivare l’agente con il pusante blu Activate in alto a destra, accedere a Next, alla nostra dashboard e testare se il nostro agente riesce a creare la task per noi.
Se evito di scrivere direttamente la due date, l’agente me lo chiederà:
E voilà! Abbiamo creato il flow che esegue l’azione che ci interessa e successivamente “istruito” l’agente come utilizzare questo flow.
Spero che questa serie di articoli vi siano stati utili per avere un’overview su cosa sia possibile fare grazie a Next e gli agenti AI e magari avervi anche aiutato nel muovere i primi passi con questi strumenti.





































