Skip to Content

Configura le functions dell'agente

Le functions danno all'agente vocale modi controllati per agire durante la chiamata: trasferire la chiamata, salvare un callback, registrare dati strutturati o chiamare un'API.

Il punto più importante è collegare RocketAiFlow agli strumenti che l'azienda usa già. Tramite functions basate su API, l'agente può aggiornare CRM, controllare disponibilità, creare follow-up, instradare richieste o usare software interni automaticamente seguendo le regole che definisci.

Come decidere cosa mettere in una function

Usa una function quando l'agente deve eseguire un'azione reale, non solo parlare.

Le functions collegano la conversazione al workflow aziendale. Con una function, l'agente può trasferire una chiamata, salvare dati, creare un follow-up o usare un software aziendale tramite API.

Non creare una function per regole che possono stare nel prompt. Tono di voce, frasi da dire, domande da fare e comportamento conversazionale vanno nel prompt.

Crea una function quando l'agente deve:

  • trasferire la chiamata
  • chiudere la chiamata
  • salvare dati raccolti durante la conversazione
  • recuperare informazioni da un altro sistema
  • aggiornare un CRM o un altro software tramite API
  • creare follow-up, callback, task, ticket, lead o appuntamenti

Dove si configurano le functions

Apri l'AI Voice Agent e usa l'area Functions per aggiungere functions preconfigurate o creare una function custom basata su API.

Per ogni function configura nome, descrizione, comportamento endpoint, parametri, campi required, valori enum e valori dinamici necessari.

  • usa le functions preconfigurate per call control e azioni comuni del workflow
  • usa functions custom quando l'agente deve chiamare software usati dall'azienda
  • salva la function, poi cita nel prompt dell'agente il nome esatto della function e la condizione in cui deve essere chiamata
Area Functions dell'agente RocketAiFlow con opzioni per creare e configurare azioni dell'agente.

Esempi di functions preconfigurate

RocketAiFlow include funzioni pronte che puoi usare come base di partenza invece di costruire ogni azione da zero.

Usa prima questi esempi quando corrispondono al workflow. Quando l'agente deve chiamare sistemi aziendali tramite API, RocketAiFlow ti permette di creare e chiamare tutte le functions custom necessarie al workflow.

Per hangup_call, transfer e rescheduled_contact, mantieni i parametri preconfigurati esattamente come sono. Non eliminarli, non rinominarli e non modificarne la struttura. Sono già allineati alle API interne di RocketAiFlow. Adatta solo descrizioni e valori consentiti dove la funzione lo richiede.

  • hangup_call: chiude la chiamata quando il workflow è completo.
  • transfer: trasferisce la chiamata a una destinazione umana o a un interno.
  • rescheduled_contact: salva una data futura di callback per il contatto.
  • save_lead_qualification: registra il risultato di qualificazione lead raccolto dall'agente.

hangup_call

Usa hangup_call quando l'agente deve chiudere la chiamata attiva dopo aver completato il workflow.

Quando selezioni questa funzione preconfigurata, RocketAiFlow imposta automaticamente l'endpoint interno usato per chiudere la chiamata. Non devi configurare manualmente l'endpoint.

Mantieni il parametro reason esattamente come viene fornito. Non eliminarlo, non rinominarlo e non modificarne la struttura. Cambia solo le descrizioni:

In questo modo l'endpoint resta sicuro e l'LLM si concentra sul decidere quando la chiamata è completa e quale motivo di chiusura deve essere registrato.

  • descrizione funzione: spiega quando l'agente deve terminare la chiamata
  • setup di reason: lascialo come string required e mantieni Use enum abilitato
  • descrizione del parametro reason: spiega quale motivo l'agente deve passare quando chiude la chiamata
  • booking_completed: usalo quando l'obiettivo principale della conversazione è stato completato
  • goodbye: usalo quando la conversazione si è conclusa naturalmente e non c'è altro da dire
  • abandoned_call: usalo quando l'utente smette di partecipare o la chiamata non è più utilizzabile
Funzione preconfigurata hangup_call con reason required, Use enum abilitato e valori consentiti per chiudere la chiamata.

transfer

Usa una funzione di transfer quando l'agente deve spostare la chiamata attiva verso un'altra destinazione.

RocketAiFlow include opzioni di transfer preconfigurate che usano automaticamente l'API interna di transfer. Scegli l'opzione più adatta al workflow, poi modifica solo descrizioni e valori consentiti. Non eliminare, rinominare o sostituire il parametro exten fornito.

Se non selezioni un contesto di transfer personalizzato, RocketAiFlow usa il contesto di default raf-internal. Mantieni Priority a 1, salvo routing telefonico specifico.

  • transfer: trasferisce la chiamata al numero di telefono o interno fornito nel parametro exten.
  • transfer_call: viene creata da Transfer To Extension. Usala per un interno o numero noto. Mantieni exten required e lascia Use enum disattivato. Esempio: transfer a 600.
  • transfer_to_service: viene creata da Transfer To Service. Usala per un reparto supportato. Mantieni exten required e Use enum abilitato con valori come sales, support e administration.
  • Mode e Priority: usa Custom solo quando serve un contesto di transfer diverso, e cambia la priority solo quando la rotta lo richiede.
Preset Transfer To Extension con transfer_call, parametro exten required, mode custom, context raf-internal e priority 1.
Transfer To Extension
Preset Transfer To Service con transfer_to_service, exten enum required, valori consentiti sales support administration, mode custom, context raf-internal e priority 1.
Transfer To Service

rescheduled_contact

Usa rescheduled_contact quando il contatto chiede di essere richiamato più avanti o quando il workflow deve salvare un callback futuro.

Questa funzione preconfigurata usa il parametro data. Non eliminarlo, non rinominarlo e non modificarne la struttura. Il parametro data serve a salvare data e ora richieste dall'utente per la prossima chiamata.

Quando la funzione viene eseguita, la chiamata rischedulata può essere salvata in:

Per questa funzione cambia solo descrizioni e valore campagna quando serve. Mantieni la struttura dei parametri fornita, così l'agente può raccogliere l'orario di callback richiesto e salvare il contatto nella campagna corretta.

  • la campagna selezionata nella configurazione della funzione
  • la campagna di default associata all'agente, se non viene selezionata una campagna specifica
Funzione preconfigurata rescheduled_contact con parametro data, descrizione data e ora callback, selezione campagna e JSON preview.
Fai attenzione: in un workflow inbound, se vuoi salvare il callback dentro una campagna, la campagna deve essere selezionata obbligatoriamente. Altrimenti la chiamata da rischedulare non viene salvata nella campagna.

save_lead_qualification

Usa save_lead_qualification quando l'agente deve raccogliere informazioni strutturate e salvare il risultato di qualificazione di un lead.

A differenza delle funzioni di call control come hangup_call o transfer, questa funzione è pensata per essere adattata all'obiettivo di business. Mantieni solo i parametri utili al tuo flusso di qualificazione e aggiungine di nuovi quando l'agente deve raccogliere più informazioni.

In molti workflow, save_lead_qualification può essere chiamata più volte durante la stessa chiamata. Usa chiamate ripetute per salvare informazioni parziali man mano che l'agente le raccoglie, invece di aspettare solo la fine e rischiare di perdere dati utili.

Parti dallo schema di esempio, poi rimuovi i campi che non servono alla campagna o al flusso inbound. Mantieni solo i dati che andrai davvero a rivedere, riportare o inviare a un altro sistema.

Dopo aver cambiato lo schema, aggiorna descrizione della function e descrizioni dei parametri, così l'LLM sa cosa raccogliere prima di ogni salvataggio.

  • parametri di esempio preimpostati: lead_name, phone, email, company_name, role, interested, qualification_status
  • salvataggio progressivo: chiama la function dopo aver raccolto campi importanti, poi richiamala quando sono disponibili nuovi dati di qualificazione
  • campi utili: interesse del customer, range di budget, dimensione azienda, canale di follow-up preferito, outcome di qualificazione e note chiamata
Funzione preconfigurata save_lead_qualification con parametri modificabili come lead_name, phone, email, company_name, role, interested e qualification_status.

Le functions possono usare software aziendali tramite API

Questo è il valore principale delle functions: l'agente non si limita a parlare. Può usare le API degli strumenti che l'azienda usa già ed eseguire automaticamente azioni strutturate.

Usa functions basate su API solo dove il workflow richiede un'azione esterna controllata. L'agente decide quando la function deve partire; RocketAiFlow invia la richiesta strutturata all'endpoint configurato.

  • aggiornare un CRM dopo la qualificazione di un lead
  • controllare disponibilità o recuperare dettagli account
  • creare follow-up, ticket, task, opportunità, note, preventivi o appuntamenti
  • chiamare software interni che espongono un endpoint API sicuro

Functions custom con API

Usa una function custom con API quando una function preconfigurata non basta e l'agente deve chiamare un tool aziendale, un provider o un servizio interno.

RocketAiFlow può creare functions custom per qualunque workflow che espone un endpoint API raggiungibile. Puoi aggiungere più functions custom allo stesso agente quando il workflow richiede azioni aziendali diverse.

Una function custom definisce la chiamata API: metodo, URL, headers, body o valori query, parametri generati dall'LLM, valori renderizzati dal contatto, uso della risposta e gestione errori.

  • Method e URL: scegli GET, POST, PUT, PATCH o DELETE e usa una URL fissa o una template URL come https://api.example.com/contacts/{t.externalId}/notes.
  • Headers e auth: aggiungi autenticazione e header richiesti dall'API, come Authorization o Content-Type.
  • Parametri LLM: valori che l'agente raccoglie o decide durante la chiamata, come location, callback_reason, interest_level, note o appointment_date.
  • Parametri contact/template: valori renderizzati dal contatto attivo, come {t.name}, {t.phone}, {t.email}, {t.externalId} o dati custom del contatto.
  • Campi required ed enum: marca un valore come required quando l'API non può partire senza quel dato, e usa enum quando l'API accetta solo opzioni fisse.
  • Risposta ed errori: descrivi come l'agente deve usare la risposta API e quale fallback usare se l'API non è disponibile, rifiuta la richiesta o restituisce dati mancanti.
Function builder per endpoint custom con metodo, URL, headers, body e configurazione parametri.
Esempio function custom GET con parametro location required e template URL.
Esempio GET
Esempio function custom APINome: create_crm_followupMethod: POSTURL: https://crm.example.com/contacts/{t.externalId}/tasksParametri LLM: motivo follow-up, summary, priorità, data preferita.Valori contact/template: id contatto, nome, telefono, email o metadata campagna.Regola prompt: chiama questa function solo dopo che il chiamante ha confermato di volere un follow-up e l'agente ha raccolto i campi required.

I valori dinamici appartengono agli input delle functions

Gli input delle functions non devono restare statici. Possono combinare valori raccolti dall'LLM con valori renderizzati dal contatto attivo o dal contesto del workflow.

Quando i dati del contatto sono disponibili, usa i campi del contatto in descrizioni, template URL, body o query. Così una stessa function funziona su contatti diversi senza hardcodare URL specifiche.

Esempio: se una function custom PUT deve aggiornare un contatto nel tuo CRM e l'id del CRM è stato caricato nei dati del contatto come externalId, puoi usare quel valore nella URL API, per esempio https://crm.example.com/contacts/{t.externalId}. RocketAiFlow renderizza l'id dal contatto attivo, mentre l'LLM genera solo i campi da aggiornare, come stato, note o risultato della qualificazione.

Usa valori dinamici quando la stessa function deve comportarsi diversamente per contatto, campagna, route, metadata chiamata o informazioni raccolte durante la conversazione.

  • campi del contatto come name, phone, email, campaign id, externalId o chiavi custom dentro data
  • template URL API che includono valori del contatto quando l'endpoint ne ha bisogno
  • metadata di workflow, campagna, route o chiamata
  • valori raccolti durante la conversazione

Come strutturare le descrizioni delle functions

OpenAI raccomanda nomi funzione, descrizioni parametro e istruzioni chiare. In RocketAiFlow, considera la descrizione della function come il contratto di chiamata: deve dire all'LLM cosa fa la function, quando chiamarla, quali dati servono e quando non chiamarla.

OpenAI non richiede heading Markdown come # dentro la description della function. Usa testo chiaro oppure label brevi come Scopo, Chiamala quando, Non chiamarla quando e Argomenti solo se rendono la descrizione più leggibile.

Tieni la policy del workflow nel prompt dell'agente, poi usa descrizione della function e descrizione dei parametri per rendere precisa ogni azione API.

  • Nome function: usa un nome azione stabile, per esempio save_lead_qualification o transfer_to_service.
  • Descrizione function: parti dall'azione di business, poi aggiungi la condizione di attivazione: chiamala quando...
  • Regola negativa: spiega quando la function non deve essere chiamata, soprattutto se mancano informazioni required.
  • Parametri required: descrivi cosa l'agente deve raccogliere prima della chiamata. Se manca un valore required, l'agente deve fare prima una breve domanda di follow-up.
  • Descrizione parametri: specifica significato, origine del valore, formato, esempi e valori consentiti.
  • Enum: usali solo per insiemi chiusi e rendi chiaro il significato di ogni valore consentito.
  • Valori renderizzati dal contatto: indica quando un valore arriva dal contatto attivo, per esempio {t.externalId}, invece di essere generato dall'LLM.
  • Una function deve rappresentare una sola azione di business. Evita di mischiare transfer, salvataggio dati, lookup e update nella stessa function.
  • Mantieni allineati prompt e descrizioni: stesso nome function, stesso trigger, stessi campi required.
Template descrizione functionScopo: cosa fa la function in una frase di business.Chiamala quando: intenzione utente o condizione del workflow che deve attivarla.Non chiamarla quando: informazione mancante, richiesta non supportata o condizione non sicura.Prima di chiamarla: campi required da raccogliere o confermare.Argomenti: ogni parametro con origine, formato, esempio e valori consentiti.

Spiega all'LLM quando chiamare ogni function

In RocketAiFlow non basta dare un nome chiaro alla function. Nel prompt dell'agente aggiungi una breve sezione Functions e collega ogni situazione di business al nome esatto della function da chiamare. Vedi Configura il prompt.

OpenAI descrive le function come strumenti che permettono al modello di usare funzionalità e dati esterni quando servono per seguire le istruzioni. Vedi la guida OpenAI sulle function calling e la prompt guidance di OpenAI.

Scrivi il prompt come una regola operativa, non come una descrizione generica della funzionalità.

  • transfer_to_service: chiamala solo quando il chiamante chiede un reparto supportato, per esempio sales, support o administration. Usa il valore enum corretto in exten.
  • transfer_call: chiamala quando il chiamante chiede esplicitamente di parlare con una persona o quando il workflow richiede un trasferimento a un interno noto.
  • rescheduled_contact: chiamala solo dopo che il chiamante ha chiesto di essere ricontattato e l'agente ha raccolto o confermato data e ora del callback.
  • save_lead_qualification: chiamala quando sono stati raccolti campi utili per la qualificazione. Può essere chiamata più volte durante la stessa chiamata per salvare progressivamente i dati, poi richiamata quando sono disponibili nuove informazioni. Se manca un campo required per quell'aggiornamento, fai prima una breve domanda di follow-up.
  • hangup_call: chiamala solo quando la conversazione ha raggiunto un punto di chiusura chiaro, per esempio prenotazione completata, saluto finale, chiamata abbandonata o silence timeout.
  • Per ogni function, aggiungi anche una regola negativa: non chiamarla se mancano le informazioni richieste o se l'utente non ha espresso l'intenzione corretta.
Come citare le functions nel promptRichiama la function con il suo nome esatto, poi descrivi l'azione o la condizione in cui deve essere chiamata.Esempio: “Quando l'utente chiede di completare [obiettivo], chiama function_name per eseguire [azione]. Prima di chiamarla, raccogli [campi richiesti]. Se manca un campo required, fai prima una domanda breve.”
Esempio promptUsa save_lead_qualification dopo aver raccolto campi utili per qualificare il lead.Puoi chiamarla più volte durante la stessa chiamata per salvare dati parziali, poi aggiornarli mentre la conversazione prosegue.Se manca un campo obbligatorio per l'aggiornamento corrente, fai prima una breve domanda di follow-up.Non chiamare la function se il cliente non ha dato abbastanza informazioni per valutare il lead.

Prima validazione

Dopo aver salvato le functions, conferma che:

  • i nomi delle funzioni siano chiari
  • i parametri required siano presenti
  • le destinazioni di transfer siano valide
  • il prompt dica all'agente quando chiamare ogni funzione
  • l'agente non chiami una function quando mancano informazioni required
  • le functions basate su API inviino il payload atteso allo strumento aziendale di destinazione
  • i callback rischedulati vengano salvati nella campagna prevista quando serve salvarli in campagna

Errori comuni sulle functions

  • aggiungere troppe functions non correlate nello stesso agente
  • usare nomi parametro poco chiari
  • non allineare il prompt alle funzioni disponibili
  • testare transfer senza una destinazione valida
  • usare un'API aziendale senza controllare autenticazione, campi required e gestione errori
  • mettere troppe azioni di business non correlate dentro la stessa function

Passaggi successivi

Last updated on