Il topic come catena di nodi
In Copilot Studio un topic rappresenta una porzione di conversazione fra l’utente e l’agente e si costruisce su un authoring canvas composto da nodi: ogni nodo esegue un’azione, come inviare un messaggio o porre una domanda. Un topic creato da zero nasce con il solo nodo Trigger e cresce premendo l’icona Add node sotto il nodo dopo il quale vuoi inserire il passo successivo. I tipi di nodo documentati sono Message, Question, Adaptive Card, Condition, i nodi di Variable management (impostare un valore, convertirlo, azzerare le variabili), quelli di Topic management (redirect, trasferimento, fine del topic o della conversazione), i nodi Tool e la categoria Advanced, che contiene fra l’altro le generative answers, il nodo HTTP e l’invio di eventi. Dal menu More del canvas puoi aprire il code editor e vedere lo stesso topic in YAML.
Tieni separati quattro oggetti che l’esame mescola volentieri. Il topic è un percorso di dialogo che decidi tu. Un tool è una capacità con cui l’agente interagisce con un sistema esterno. Un agent flow è un tipo di tool, cioè un’automazione low-code. Una knowledge source non è nessuno dei tre: serve a rispondere, non ad agire.
Aggiungere un agent flow o un tool al topic
Un agent flow si collega a due livelli, e la differenza è di visibilità. A livello di agente lo aggiungi dalla pagina Tools con Add a tool e poi Flow, e l’orchestratore può invocarlo da solo a runtime. A livello di topic apri il topic, selezioni l’icona Add node sotto un nodo qualsiasi e scegli Add a tool: scelto il flow, “A new Action node appears in the topic”. Quando aggiungi un flow esistente a un topic, diventa disponibile solo per quel topic.
Perché il flow compaia nell’elenco deve avere il trigger When an agent calls the flow e l’azione Respond to the agent, rispondere in tempo reale (il toggle Asynchronous response su Off sotto Networking), essere pubblicato e rientrare nel limite di 100 secondi dell’azione.
Lo stesso Add a tool serve per gli altri tool: la selezione mostra tre schede, Basic tools, Connector e Tool. I meccanismi documentati per estendere un agente sono i connettori Power Platform (prebuilt o custom connector), Agent flow, Prompt, REST API, Model Context Protocol e Computer use. Due dettagli di configurazione contano davvero: sotto Additional details, l’opzione Allow agent to decide dynamically when to use the tool, se non è selezionata, fa sì che l’agente usi il tool solo quando è chiamato esplicitamente da un topic; sotto Inputs, la colonna Fill using vale Dynamically fill with AI per default, ma puoi passare a Custom value e imporre un valore, una variabile o una formula Power Fx, e in quel caso l’agente non chiede nulla all’utente. Molti tool richiedono poi una connection, cioè la credenziale con cui l’agente si autentica al servizio, gestita da Settings e Connection Settings.
Formattare le risposte
Il nodo Message si aggiunge con Add node e Send a message; la barra degli strumenti del nodo offre formattazione di base (bold, italic, elenchi puntati e numerati), inserimento di variabili, message variations e speech override, immagini, video, basic card, Adaptive Cards e quick replies. Tutte queste capacità valgono anche per il nodo Question. Con più media card nello stesso nodo scegli fra Carousel, il default che ne mostra una alla volta, e List, che le impila in verticale. Le quick replies hanno un Type configurabile: Send a message, Open URL, Make a call, Send a hidden message to the agent. Sui canali vocali puoi sostituire il testo con un messaggio Speech e rifinirlo con i tag SSML Audio, Break, Emphasis e Prosody.
La formattazione si configura anche a valle di un tool. Nella sezione Completion, sotto After running, scegli Don’t respond, che è il default e lascia l’agente incorporare l’output nella propria risposta, Write the response with generative AI, Send specific response con inserimento delle variabili di output, oppure Send an adaptive card.
Gli scope delle variabili
La documentazione è esplicita: “Variables exist at four levels, or scopes”. Il default è la topic variable, usabile solo nel topic dove l’hai creata. Il pannello Variables, che apri dalla barra dei menu del topic, le elenca tutte a prescindere dal nodo in cui sono definite; dal Variable properties panel le rinomini, vedi dove sono usate e decidi se possono ricevere valori da altri topic (Receive values from other topics) o restituirli (Return values to original topics).
- kind: Question
variable: init:Topic.State
prompt: To what state will you be shipping?
entity: StatePrebuiltEntity
Nello stesso pannello, Global (any topic can access) promuove la variabile a global variable: il nome prende il prefisso Global. e la variabile diventa accessibile da tutti i topic dell’agente. La promozione è a senso unico (“You can’t convert a global variable back to a topic variable”) e il nome deve essere unico su tutti i topic.
Il punto su cui l’esame ti aspetta è la durata: “Global variables apply during a single user session”, e il valore persiste finché la sessione non termina. Il nodo Clear variable values li azzera, ed è quello usato dal system topic Reset Conversation. Una global variable è quindi stato di conversazione, non un valore di configurazione per il rilascio: quella è la environment variable, il quarto scope, creata in Power Platform, di sola lettura in Copilot Studio e da ripubblicare quando un amministratore ne cambia il valore, con l’unica eccezione delle variabili di tipo secret, recuperate a runtime. Non confonderla nemmeno con la connection reference, che trasporta una credenziale. Il terzo scope sono le system variables, create automaticamente per ogni agente e disponibili in tutti i topic: Conversation.Id, Activity.Text, Bot.Name, User.Language. Non tutte compaiono nel selettore; per quelle nascoste serve una formula Power Fx, dove il nome va prefissato con System.
Per impostare un valore tu usi Add node, Variable management e Set a variable value; per trasformare un JSON o un oggetto non tipizzato in un tipo utilizzabile usi Parse value. Il tipo si fissa al primo assegnamento e non cambia più.