VoiceBooker

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.

In questa pagina