Stato
Introduzione
Gli agenti vocali sono spesso usati per raccogliere vari dati da clienti, utenti o pazienti. Ad esempio, ai clienti vengono chiesti nome, data di nascita e il prodotto che vogliono prenotare o annullare, oltre allo slot orario preferito. I pazienti, invece, possono richiedere prescrizioni.
Questi dati vengono di solito raccolti tramite gli azioni/strumenti definiti, dove i parametri o le variabili contengono le informazioni estratte dal LLM dalle risposte del cliente.
Per memorizzare questi dati tra chiamate di funzione e stages e passarli ai sistemi backend (ad es. CRM, ticketing o sistemi PVS) tramite un webhook, esiste un oggetto stato che è attivo per l’intera sessione di chiamata e può essere utilizzato per memorizzare e recuperare queste informazioni.
L’oggetto stato
L’oggetto stato è un semplice oggetto JavaScript che può contenere informazioni piatte o annidate.
All’inizio di una chiamata, l’oggetto contiene già informazioni standard come il numero di telefono del chiamante, purché non lo abbia nascosto.
{
"call": {
"from": "+49-351-1234567",
"to": "+49-351-7654321"
}
}Approccio no‑code
La raccolta dei dati avviene durante un’azione, cioè una chiamata di funzione.
Pertanto, puoi definire dove devono essere memorizzate le informazioni raccolte nell’oggetto stato direttamente nella sezione azioni/strumenti di una definizione/configurazione di funzione:

La chiave/percorso definisce dove i dati raccolti/estratti vengono memorizzati all’interno dell’oggetto stato. La notazione con punti consente di memorizzare i dati in una struttura annidata.
Approccio low‑code
Abilitare lo stato
Per accedere all’oggetto stato in un prompt dinamico o all’interno di una chiamata di funzione di un azione/strumento, lo stato deve essere abilitato esplicitamente:
Abilitare per una funzione prompt

Abilitare per una funzione azione/strumento

Usare/modificare lo stato
Esempio
Supponiamo che la funzione collectName catturi il nome di un chiamante e lo fornisca come campo name nell’oggetto params. Puoi quindi salvare quel nome nello stato come segue:
function collectName(params) {
if (!params["state"]["user"]) params["state"]["user"] = {};
params["state"]["user"]["name"] = params["name"];
return { state: params["state"] };
}Dopo l’esecuzione della funzione, l’oggetto stato contiene le seguenti informazioni:
{
"call": {
"from": "+49-351-1234567",
"to": "+49-351-7654321"
},
"user": {
"name": "Max"
}
}Importante: dopo qualsiasi modifica, l’oggetto stato modificato deve essere restituito — in modo simile alla stack — altrimenti le modifiche non saranno visibili nelle chiamate di funzione e nelle stages successive.