Your AI Connector Docs

Funzioni personalizzate

Le funzioni personalizzate consentono al tuo bot AI di connettersi ad altri sistemi durante le conversazioni dal vivo. Invece di dire “Controllo e ti faccio sapere”, il bot può cercare lo stato di un ordine, verificare l’inventario o creare un record nel tuo CRM (sistema di gestione delle relazioni con i clienti - il software che utilizzi per tracciare lead e clienti, come HubSpot o Salesforce) - tutto in tempo reale, mentre il cliente attende.


Funzioni personalizzate vs Webhook

Questo è il punto di confusione più comune, quindi vale la pena chiarirlo prima di costruire qualsiasi cosa.

Webhook Funzioni personalizzate
Direzione Unidirezionale (fire-and-forget) Bidirezionale (chiama e attendi)
Cosa fa il bot Invia una notifica quando succede qualcosa, poi prosegue. Chiama, si mette in pausa, attende la risposta e usa ciò che riceve per continuare la conversazione.
Visibilità nella conversazione Il risultato a valle è invisibile al bot: non vede mai cosa è successo. La risposta viene reinserita direttamente nell’IA, così il bot può citarla, ragionarci sopra e rispondere al cliente con essa.
Ideale per Registrare eventi, sincronizzare dati con un CRM, attivare automazioni esterne (Zapier, Make, n8n). Qualsiasi cosa per cui il bot abbia bisogno di una risposta prima di poter replicare: ricerche dal vivo, prezzi in tempo reale, generazione di contenuti al volo.

Quando scegliere cosa: Se devi solo comunicare a un altro sistema che è successo qualcosa, usa un webhook - un messaggio automatizzato unidirezionale inviato a un altro sistema (vedi Impostazioni → Integrazioni → Webhook). Se il bot deve apprendere qualcosa da un altro sistema prima di continuare la conversazione, usa una funzione personalizzata.


Esempi di ciò che sbloccano le funzioni personalizzate

Poiché la risposta viene reinserita nella conversazione, le funzioni personalizzate rendono possibili operazioni che i webhook semplicemente non possono fare:

  • Ricerca dell’inventario Shopify o WooCommerce in tempo reale — Prima di fare un preventivo a un cliente, il bot controlla le scorte in tempo reale e risponde “Sì, ne abbiamo 12 nella taglia M” invece di “faccia controllare e le faccio sapere”.
  • Prezzi dinamici da un foglio Google — Il tuo team di vendita aggiorna i prezzi in un foglio; il bot legge l’ultima riga a metà conversazione e cita il prezzo corrente senza che nessuno debba toccare la configurazione dell’IA.
  • Agente di richiamata Voice-AI — Quando il bot qualifica un lead, attiva un agente vocale (ad esempio, un chiamante basato su ElevenLabs) per richiamare il lead entro pochi minuti e conferma al cliente “ottimo, si aspetti una chiamata nei prossimi 5 minuti”.
  • PDF di preventivo personalizzato, generato e inviato via email durante la chat — Il bot raccoglie i requisiti, chiama il tuo generatore di preventivi, ottiene un URL del PDF e dice al cliente “Ho appena inviato il suo preventivo via email, controlli la posta in arrivo”.

Cosa possono fare le funzioni personalizzate?

Pensa alle funzioni personalizzate come a un modo per dare al tuo bot superpoteri che vanno oltre la semplice chat. Ecco esempi reali:

  • Tracciamento ordini - Un cliente chiede “Dov’è il mio ordine?” e il bot controlla il tuo sistema di e-commerce e risponde con lo stato della spedizione e il link di tracciamento
  • Controllo inventario - “Lo avete nella taglia 10?” Il bot controlla il tuo sistema di magazzino e fornisce una risposta in tempo reale
  • Aggiornamenti CRM - Quando il bot qualifica un lead, crea o aggiorna automaticamente un record in HubSpot, Salesforce o qualsiasi altro CRM
  • Generazione preventivi - Il bot raccoglie i requisiti del cliente e genera un preventivo personalizzato dal tuo sistema di prezzi
  • Prenotazioni - Il bot crea un appuntamento nel tuo sistema di prenotazione esterno
  • Verifica sconti - “Questo codice coupon è valido?” Il bot controlla e conferma
  • Ricerca account - Un cliente abituale viene riconosciuto automaticamente e i dettagli del suo account vengono recuperati

Il cliente non vede mai cosa succede dietro le quinte. Sperimenta semplicemente un bot in grado di rispondere alle sue domande con informazioni reali e aggiornate.


Come funzionano le funzioni personalizzate (versione semplice)

Ecco cosa succede quando una funzione personalizzata viene attivata durante una conversazione:

  1. Il cliente chiede qualcosa che richiede dati in tempo reale (ad es. “Dov’è il mio ordine?”)
  2. Il bot riconosce che deve utilizzare una funzione personalizzata per rispondere
  3. Il bot raccoglie eventuali informazioni mancanti dal cliente (ad es. “Qual è il numero del tuo ordine?”)
  4. La piattaforma invia una richiesta al tuo sistema (il tuo sito web, CRM o qualsiasi altro strumento) con i dettagli pertinenti
  5. Il tuo sistema risponde con i dati (ad es. stato dell’ordine, numero di tracciamento, data di consegna)
  6. Il bot legge la risposta e crea una replica naturale: “Il tuo ordine ORD-4582 è stato spedito e dovrebbe arrivare entro venerdì!”

Quanto costa una chiamata a una funzione personalizzata

Ogni chiamata a una funzione personalizzata viene fatturata in base al livello di qualità AI del tuo Agente:

Livello di qualità AI Crediti per chiamata a funzione personalizzata Con la tua chiave Anthropic (BYOK) collegata
Pro 1 credito 0 crediti: viene eseguita con la tua chiave
Economy (deprecato) 0,5 crediti 0 crediti: viene eseguita con la tua chiave
Max 0,25 crediti ancora 0,25 crediti, fatturati anche con la tua chiave collegata, perché Max viene eseguito sul nostro modello
Mini 0,15 crediti ancora 0,15 crediti, fatturati anche con la tua chiave collegata, perché Mini viene eseguito sul nostro modello

Configurazione di una funzione personalizzata (passo dopo passo)

  1. Nella barra laterale principale, sotto AI Studio, fai clic su Custom Functions.
  1. Fai clic sul pulsante verde + Add Function (o New function) in alto a destra.

L’elenco delle funzioni personalizzate visualizza una tabella con le seguenti colonne:

Colonna Cosa mostra
Nome Il nome della funzione (ad es. check_order_status)
Descrizione Un breve riepilogo di ciò che fa la funzione (troncato a 50 caratteri nella tabella)
Metodo Il metodo HTTP utilizzato, mostrato come badge colorato: GET (blu), POST (verde), PUT (arancione), DELETE (rosso)
Creato La data in cui la funzione è stata creata

Questo rende facile scansionare le tue funzioni a colpo d’occhio e trovare quella di cui hai bisogno.

Passaggio 1: Assegna un nome e una descrizione

Campo Cosa inserire Esempio
Nome Un nome breve che utilizzi lettere, numeri e trattini bassi check_order_status
Descrizione Spiega cosa fa questa funzione (l’IA la legge per decidere quando usarla) “Cerca lo stato attuale dell’ordine di un cliente utilizzando il numero d’ordine”
Scopo (Azione IA) Indica all’IA esattamente quando e come utilizzare questa funzione “Usala quando un cliente chiede informazioni sullo stato dell’ordine, sulla spedizione o sulla consegna. Chiedi prima il numero dell’ordine.”

Suggerimento: Sii molto specifico nella descrizione e nello scopo. Più sei chiaro su quando la funzione dovrebbe essere utilizzata, più affidabile sarà il bot nell’usarla al momento giusto.

Passaggio 2: Configura la connessione

Devi indicare all’app dove inviare la richiesta:

Campo Cosa inserire Esempio
URL L’indirizzo web dell’endpoint del tuo sistema (l’indirizzo specifico sul tuo sistema che riceve la richiesta e invia i dati) https://api.yourstore.com/v1/orders/status
Metodo Il tipo di richiesta da inviare Vedi le opzioni sotto

Quale metodo scegliere:

Metodo Quando utilizzarlo
GET Ricerca di informazioni (stato dell’ordine, inventario, dettagli dell’account)
POST Creazione di nuovi record (ticket di supporto, lead, prenotazioni) o ricerche complesse
PUT Aggiornamento completo di un record esistente
PATCH Aggiornamento parziale di un record esistente
DELETE Rimozione di un record

Se non sei sicuro di quale utilizzare, verifica con il tuo sviluppatore o consulta la documentazione del sistema a cui ti stai connettendo. GET (per le ricerche) e POST (per la creazione di record) sono i più comuni.

Passaggio 3: Aggiungi le intestazioni di autenticazione

La maggior parte dei sistemi richiede l’autenticazione per accettare le richieste. Aggiungi le intestazioni necessarie:

Intestazione Valore di esempio
Authorization Bearer your-api-key-here
Content-Type application/json

Suggerimento di sicurezza: utilizza una chiave API dedicata con autorizzazioni limitate. Non utilizzare credenziali di livello amministratore.

Dove trovare le chiavi API: controlla le impostazioni o la sezione sviluppatori del sistema a cui ti stai connettendo (ad esempio, il tuo CRM, la piattaforma di e-commerce o lo strumento di prenotazione).

Passaggio 4: Definisci l’input (cosa invia il bot)

I parametri di input sono le informazioni che il bot raccoglie dalla conversazione e invia al tuo sistema.

Per ogni parametro, specifica:

Proprietà Cosa significa
Nome Il nome del parametro (deve corrispondere a ciò che il tuo sistema si aspetta)
Tipo Il tipo di dati (testo, numero, vero/falso, ecc.)
Descrizione Indica all’IA cos’è questa informazione e dove trovarla nella conversazione
Obbligatorio Se impostato su Sì, il bot chiederà al cliente questa informazione prima di procedere

Tipi di parametri disponibili:

Tipo Cosa significa
string Testo (nomi, numeri d’ordine, indirizzi)
number Un valore numerico (quantità, prezzo)
boolean Vero o falso (valori sì/no)
array Un elenco di elementi. Inviato come un vero elenco JSON — in Esegui test puoi digitarlo come [8624], ["a", "b"] o semplicemente separato da virgole (8624, 8625) e verrà convertito per te. Se la tua API è rigorosa riguardo al contenuto dell’elenco — ad esempio solo numeri — imposta il Tipo di elemento opzionale accanto al tipo e ogni valore nell’elenco verrà convertito in esso.
query_param Testo inviato come parametro URL invece che nel corpo della richiesta. Usalo quando la tua API si aspetta dati nell’URL (ad esempio, ?order_id=123).

Ogni parametro ha anche un campo opzionale Percorso del corpo della richiesta. Normalmente un parametro viene inviato come campo di primo livello nel corpo della richiesta (o come valore di una stringa di query, per il tipo query_param). Se l’endpoint lo richiede annidato — ad esempio {"order": {"id": "ORD-123"}} — imposta il percorso su order.id e la piattaforma anniderà il valore per te.

Esempio: per una ricerca dello stato dell’ordine, potresti definire:

  • order_number (string, obbligatorio): “Il numero d’ordine del cliente. Di solito inizia con ORD- seguito da cifre. Chiedi al cliente questo dato se non lo ha menzionato.”
  • email (string, facoltativo): “L’indirizzo email del cliente per un’ulteriore verifica. Necessario solo se il numero d’ordine da solo non trova una corrispondenza.”

Cosa riceve automaticamente il tuo sistema

Oltre ai parametri di input definiti, la piattaforma include automaticamente dati di sistema in ogni richiesta. Il tuo endpoint li riceve in un campo system:

Campo di sistema Cosa contiene
system.contactId L’ID della piattaforma del contatto nella conversazione
system.campaignId L’ID della campagna a cui appartiene la conversazione
system.userId Il tuo ID utente
system.channel Il canale di messaggistica (es. "whatsapp", "instagram")
system.contact Il record completo del contatto (nome, telefono, email, tag, ecc.)
system.campaign La configurazione della campagna
system.test true se si tratta di un test di prova, false per conversazioni dal vivo

Questo è utile se il tuo sistema deve identificare il contatto, verificare quale campagna ha attivato la funzione o comportarsi in modo diverso durante i test.

Non ti servono i dati di sistema? Attiva l’opzione Salta dati di sistema nel generatore di funzioni. Il bot invierà quindi solo i parametri di input definiti, senza dati sul contatto o sulla campagna. Utilizza questa opzione se il tuo endpoint rifiuta campi imprevisti o se desideri semplicemente un payload più leggero.

Passaggio 5: Testalo, poi lascia che il bot legga la risposta

Normalmente non è necessario mappare affatto i campi di risposta. Una volta che l’endpoint risponde, il bot legge l’intera risposta JSON e utilizza la Descrizione e lo Scopo (Azione AI) della funzione — oltre alla descrizione di ogni parametro — per capire cosa è importante e presentarlo in modo naturale. Una descrizione chiara della funzione stessa (“Recupera lo stato attuale di un ordine cliente, incluse le informazioni di spedizione e il tracciamento”) è più efficace di una mappatura campo per campo.

Se l’endpoint restituisce una risposta di grandi dimensioni e vuoi che il bot veda solo alcuni valori specifici, apri la sezione Mappatura della risposta (compressa per impostazione predefinita, appena sopra Test). Ogni riga seleziona un campo di primo livello dalla risposta: Campo di risposta è il nome del campo nella risposta JSON della tua API, e Campo di output è il nome con cui il bot lo riceve. Con almeno una riga compilata, il bot riceve solo i valori mappati invece dell’intero corpo della risposta. Lascia la sezione vuota per mantenere il comportamento predefinito di risposta completa.

Prima di salvare, utilizza la sezione Test in fondo al generatore per inviare la richiesta esattamente come configurata e vedere la risposta reale, senza uscire dall’app:

La risposta che vedi qui è la risposta grezza dell’endpoint. Se hai configurato la Mappatura della risposta qui sopra, il bot in una chat reale riceverà solo quei campi mappati — il test mostra sempre la risposta grezza completa in modo che tu possa vedere cosa è disponibile per la mappatura. Se qualcosa sembra non corretto (nomi di campo imprevisti, nidificazione extra), correggilo sul tuo endpoint o modifica la tua mappatura.


Assegnazione di funzioni a un Agente

Dopo aver creato una funzione personalizzata, devi indicare a ciascun Agente quali funzioni può utilizzare:

  1. Apri l’Agente sotto AI Studio → Agenti AI.
  2. Vai alla scheda Abilità AI. (Per una campagna che mantiene ancora le proprie impostazioni AI direttamente anziché tramite un Agente separato, lo stesso elenco appare invece nel passaggio Abilità AI della campagna stessa.)
  3. Vedrai un elenco di ogni funzione personalizzata che hai creato. Attiva ogni funzione che vuoi che il bot di questo Agente sia in grado di chiamare.
  4. Fai clic su Salva modifiche in basso. Le selezioni vengono applicate solo una volta salvate.

Solo le funzioni assegnate sono disponibili al bot per quell’Agente. Questo impedisce al bot di utilizzare accidentalmente funzioni non pertinenti.


Test delle funzioni personalizzate

Prima di andare online, esegui dei test approfonditi:

  1. Esegui il test integrato - Utilizza la sezione Test all’interno del generatore di funzioni (vedi sopra) per un controllo rapido senza uscire dall’app: inserisci valori realistici e fai clic su Esegui test.
  2. Testa direttamente l’endpoint del tuo sistema - Per la lista di controllo completa qui sotto, uno strumento dedicato come Postman (o il tuo sviluppatore) scava più a fondo di un singolo Esegui test.
  3. Testa in Prova - Simula una conversazione in cui il cliente chiede qualcosa che dovrebbe attivare la funzione.
  4. Controlla la risposta - Assicurati che il bot legga e presenti correttamente i dati.
  5. Testa gli scenari di errore - Cosa succede se il cliente fornisce un numero d’ordine non valido? Cosa succede se il tuo sistema è temporaneamente fuori servizio?

Quando il test restituisce 401 o 403

Un errore 401 o 403 significa che il tuo endpoint ha ricevuto la richiesta ma l’ha rifiutata. L’indizio principale è che non appare nulla nei tuoi log — la maggior parte degli strumenti rifiuta una chiamata non autorizzata prima ancora di avviare il flusso di lavoro, quindi non c’è nulla da vedere dalla tua parte e sembra che la richiesta non sia mai arrivata.

Quasi sempre si tratta di una mancata corrispondenza nell’autenticazione: il tuo endpoint richiede un tipo di credenziale e la funzione ne sta inviando una diversa. Verifica che l’intestazione aggiunta nel Passaggio 3 sia esattamente quella prevista dal tuo sistema.

La versione più comune di questo problema è un webhook protetto con Basic Auth (n8n, Make e la maggior parte degli strumenti self-hosted offrono questa opzione tramite una casella di controllo sul webhook stesso) mentre la funzione invia un’intestazione segreta personalizzata come X-My-Secret. La Basic Auth accetta solo un’intestazione Authorization, quindi un’intestazione personalizzata viene ignorata e la chiamata viene rifiutata. Hai due opzioni:

  • Disattiva la Basic Auth sul webhook e verifica invece l’intestazione personalizzata all’interno del flusso di lavoro.
  • Mantieni attiva la Basic Auth e aggiungi un’intestazione Authorization alla funzione il cui valore sia la parola Basic seguita dal tuo username:password codificato in base64.

Entrambe le soluzioni funzionano: assicurati solo che entrambe le parti concordino.

Quando il test restituisce 404

L’URL dell’endpoint è errato o il flusso di lavoro non è pubblicato. In n8n nello specifico, ogni webhook ha un URL di Test e un URL di Produzione separati, e quello di Test rimane in ascolto solo mentre l’editor è aperto. Copia l’URL di Produzione e assicurati che il flusso di lavoro sia attivo.

Visualizzazione degli errori in Prova e Chat

Quando l’IA richiama una funzione personalizzata durante una conversazione e la chiamata fallisce — credenziali errate, endpoint non raggiungibile, timeout — la conversazione ora lo mostra: un indicatore rosso “(nome funzione) non riuscita” appare nel thread, sia nella scheda Prova dell’agente che nelle conversazioni reali in Chat. Fai clic sull’indicatore per espandere i dettagli: il codice di stato restituito dal tuo endpoint e il corpo della risposta, che di solito sono sufficienti per capire esattamente cosa correggere (un 401 con un messaggio “unauthorized” indica l’intestazione di autenticazione, un timeout significa che il tuo endpoint ha impiegato più di 30 secondi).

Anche le chiamate riuscite mostrano un indicatore: fai clic su di esso per vedere cosa ha effettivamente restituito il tuo endpoint. Questo è il modo più rapido per eseguire il debug di un’integrazione end-to-end: effettua la conversazione di test in Prova, quindi fai clic sull’indicatore della funzione per vedere il risultato reale della richiesta senza lasciare la pagina.


Esempio completo: Ricerca stato ordine

Ecco un esempio completamente configurato che puoi utilizzare come modello:

Informazioni di base:

  • Nome: check_order_status
  • Descrizione: “Recupera lo stato attuale di un ordine cliente, incluse le informazioni di spedizione e il tracciamento”
  • Azione AI: “Chiama questa funzione quando un cliente chiede informazioni sullo stato del proprio ordine, su dove si trovi il pacco o su quando arriverà. Chiedi sempre prima il numero d’ordine.”

Connessione:

  • URL: https://api.mystore.com/orders/lookup
  • Metodo: POST

Intestazioni:

  • Authorization: Bearer sk_live_abc123
  • Content-Type: application/json

Parametri di input:

  • order_number (testo, obbligatorio): “Il numero d’ordine fornito dal cliente”
  • customer_email (testo, facoltativo): “Email del cliente per un’ulteriore verifica”

Nessuna mappatura della risposta necessaria — con una Descrizione e un’Azione AI chiare già impostate sopra, il bot legge qualsiasi JSON restituito dal tuo endpoint (stato, numero di tracciamento, data di consegna, articoli) e capisce come parlarne.

Come appare la conversazione:

Cliente: Ehi, dov’è il mio ordine?

Bot: Ciao! Sarei felice di controllare il tuo ordine. Potresti condividere con me il numero d’ordine?

Cliente: È ORD-78234

Bot: Fammi controllare per te…

Il tuo ordine ORD-78234 è stato spedito ed è in viaggio! La data di consegna stimata è il 10 marzo. Puoi tracciare il tuo pacco qui: https://tracking.example.com/1Z999AA1

C’è qualcos’altro in cui posso aiutarti?


Esempio completo: Stato dell’ordine Shopify

Se il negozio utilizza Shopify, non è necessario uno sviluppatore per creare un endpoint di ricerca: il sistema di Shopify può rispondere direttamente alle domande sugli ordini. (Per domande su prodotti e scorte in un negozio Shopify non serve affatto una funzione personalizzata: connetti invece il server integrato del negozio — vedi Connettere un negozio Shopify.)

Per prima cosa, crea un token di accesso in Shopify. Shopify ha modificato questa procedura nel corso del 2026: le app non possono più essere create all’interno dell’amministrazione di Shopify e la nuova schermata delle app fornisce un Client ID e un Client secret invece di un token già pronto. I passaggi seguenti trasformano questi dati in un token permanente. Prevedi circa dieci minuti, una volta per negozio. (Se il negozio ha già un’app creata con il vecchio metodo, il token esistente continuerà a funzionare: passa direttamente alla funzione personalizzata qui sotto.)

  1. Vai alla Dashboard per sviluppatori Shopify su dev.shopify.com, apri la tua organizzazione e clicca su App → Crea app. Dalle un nome come Order lookup.
  2. Assegna all’app l’autorizzazione read_orders, rilascia una versione e installa l’app sul negozio.
  3. Apri le Impostazioni dell’app e aggiungi l’indirizzo web del negozio (ad esempio https://www.yourstore.com/) agli URL di reindirizzamento consentiti. Salva.
  4. Sempre in Impostazioni, copia l’ID cliente e il Segreto cliente.
  5. In un browser in cui hai effettuato l’accesso all’amministrazione Shopify di quel negozio, apri l’indirizzo sottostante, sostituendo il nome del negozio, l’ID cliente e l’indirizzo di reindirizzamento con i tuoi: https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345 Approva la schermata che appare. Il browser approderà al tuo indirizzo di reindirizzamento e la barra degli indirizzi ora conterrà code= seguito da un lungo valore: copia quel valore. È valido solo per un paio di minuti, quindi passa subito al passaggio successivo.
  6. Scambia quel codice con il token, operazione che puoi fare all’interno di Your AI Connector. Nel generatore di funzioni personalizzate, imposta Metodo su POST e URL su https://YOUR-STORE.myshopify.com/admin/oauth/access_token, aggiungi tre parametri di input di testo denominati client_id, client_secret e code, quindi clicca su Test, inserisci i tre valori ed eseguilo. La risposta contiene access_token: quello è il tuo token permanente. Copialo in un posto sicuro, quindi svuota il generatore e configura la funzione reale qui sotto.

Quindi configura la funzione personalizzata:

Informazioni di base:

  • Nome: check_shopify_order
  • Descrizione: “Cerca un ordine nel sistema Shopify del negozio e ne restituisce lo stato, il tracciamento e gli articoli”
  • Azione IA: “Chiama questa funzione quando un cliente chiede informazioni sullo stato dell’ordine o sulla consegna. Chiedi sempre prima il numero dell’ordine.”

Connessione:

  • URL: https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any — sostituisci YOUR-STORE con il nome .myshopify.com del negozio (questo indirizzo utilizza il dominio tecnico di Shopify, non il dominio personalizzato del negozio)
  • Metodo: GET

Intestazioni:

  • X-Shopify-Access-Token: shpat_... (il token ottenuto in precedenza)

Parametri di input:

  • name (query_param, obbligatorio): “Il numero dell’ordine del cliente esattamente come appare nella conferma d’ordine, incluso il simbolo # — ad esempio #1001. Chiedilo al cliente se non lo ha menzionato.”

Nessuna mappatura della risposta necessaria — il bot legge l’ordine restituito (stato del pagamento, stato dell’evasione, tracciamento, articoli) e risponde in modo naturale.

Buono a sapersi: un token creato in questo modo può visualizzare gli ordini degli ultimi 60 giorni — sufficienti per le domande di assistenza quotidiane, ma non per uno storico completo degli ordini.


Esempio completo: Prenotare un appuntamento

Informazioni di base:

  • Nome: create_booking
  • Descrizione: “Crea un nuovo appuntamento nel nostro sistema di prenotazione”
  • Azione AI: “Usa questa funzione dopo aver confermato data, ora e dettagli di contatto con il cliente. Non chiamarla finché il cliente non conferma esplicitamente di voler prenotare.”

Connessione:

  • URL: https://booking.mycompany.com/api/appointments
  • Metodo: POST

Parametri di input:

  • date (testo, obbligatorio): “Data dell’appuntamento nel formato AAAA-MM-GG”
  • time (testo, obbligatorio): “Ora dell’appuntamento nel formato HH:MM”
  • name (testo, obbligatorio): “Nome completo del cliente”
  • phone (testo, obbligatorio): “Numero di telefono del cliente”
  • service_type (testo, obbligatorio): “Il tipo di servizio da prenotare”

Esempio completo: Aggiungere un iscritto alla newsletter al proprio CRM

Un modello molto comune: il bot termina la risposta, propone la newsletter, il contatto risponde con il proprio indirizzo email e tale indirizzo deve finire immediatamente nel proprio strumento di email marketing. La maggior parte dei CRM (FluentCRM, ActiveCampaign, MailerLite, Brevo e altri) accetta un semplice POST proprio per questo scopo, quindi non è necessaria alcuna piattaforma di automazione intermedia.

Questo esempio utilizza FluentCRM su WordPress. La struttura è la stessa per qualsiasi altro strumento che fornisca un “webhook in entrata” o un endpoint per “creare un iscritto”.

Per prima cosa, ottieni l’URL dal tuo CRM. In WordPress, apri FluentCRM → Impostazioni → Webhook in entrata e crea un webhook. Scegli l’elenco, i tag e lo stato di iscrizione che i nuovi contatti dovrebbero ricevere, quindi copia l’URL del webhook generato. Tutto ciò che imposti qui viene applicato automaticamente, quindi il bot deve solo inviare l’indirizzo email.

Quindi configura la funzione personalizzata:

Informazioni di base:

  • Nome: add_newsletter_subscriber
  • Descrizione: “Aggiunge una persona alla nostra lista newsletter utilizzando l’indirizzo email fornito nella chat”
  • Azione AI: “Utilizza questa funzione nel momento in cui il contatto accetta di iscriversi alla newsletter e fornisce il proprio indirizzo email. Non chiamarla prima che abbiano effettivamente fornito un indirizzo e non chiamarla due volte per la stessa persona.”

Connessione:

  • URL: l’URL del webhook copiato dal tuo CRM
  • Metodo: POST

Parametri di input:

  • email (stringa, obbligatorio): “L’indirizzo email fornito dal contatto nella conversazione”
  • first_name (stringa, facoltativo): “Il nome del contatto, se menzionato”

Ignora dati di sistema: attiva questa opzione. Il tuo CRM ha bisogno solo dei campi sopra indicati e un payload più snello evita errori da parte di strumenti che rifiutano campi imprevisti.

Mappatura della risposta: non necessaria in questo caso. Non è necessario che torni nulla affinché il bot possa continuare.

Non dimenticare di attivare la funzione per l’Agente che gestisce la conversazione (vedi Assegnazione di funzioni a un Agente). Questo è il motivo più comune per cui una funzione costruita correttamente non viene mai attivata.

Suggerimento: il bot dispone anche di uno strumento integrato Aggiorna email contatto, che salva l’indirizzo nella scheda del contatto all’interno della piattaforma. Questo è separato da tale funzione ed è utile usarlo insieme: lo strumento integrato mantiene completa la tua scheda contatto, la funzione personalizzata invia l’indirizzo al tuo CRM.


Suggerimenti per funzioni personalizzate affidabili

  1. Assicurati che le richieste ripetute siano sicure. Se la stessa richiesta viene inviata accidentalmente due volte, non dovrebbe creare record duplicati. Problemi di rete possono occasionalmente causare questo inconveniente.

  2. Restituisci messaggi di errore chiari. Se qualcosa va storto lato sistema, restituisci un errore leggibile dall’utente. Il bot lo inoltrerà al cliente in modo appropriato.

  3. Mantieni i tempi di risposta sotto i 10 secondi. Se il tuo sistema impiega più tempo, valuta di restituire prima una rapida conferma.

  4. Gestisci credenziali scadute o non valide. Se la tua chiave API scade, assicurati che il messaggio di errore sia chiaro in modo che il bot sappia di dover avvisare un operatore umano invece di riprovare.

  5. Scrivi descrizioni dettagliate. L’IA utilizza le tue descrizioni per capire quando chiamare la funzione e come estrarre le informazioni corrette dalla conversazione. Descrizioni vaghe portano a errori.

  6. Testa con conversazioni reali. La funzione Prova (Try Out) è ottima per i test iniziali, ma monitora le tue prime conversazioni dal vivo per assicurarti che tutto funzioni con le richieste reali dei clienti.

  7. Mantieni i log lato tuo. Chiedi al tuo sviluppatore di registrare le richieste provenienti dall’app in modo da poter risolvere rapidamente eventuali problemi.

  8. Utilizza un URL finale pubblico. L’URL della tua funzione deve essere un indirizzo web pubblico (HTTP/HTTPS). Gli indirizzi interni, localhost e di rete privata vengono rifiutati per motivi di sicurezza e la piattaforma non segue i reindirizzamenti: punta la funzione direttamente all’URL finale, non a uno che reindirizza ad esso.


Limiti di esecuzione

Ogni funzione personalizzata dispone di una sezione opzionale Limiti di esecuzione nella parte inferiore dell’editor. Controlla con quale frequenza l’IA può eseguire la funzione e se un risultato precedente può essere riutilizzato. Tutto ciò che si trova qui è facoltativo: lascia tutto vuoto e la funzione si comporterà esattamente come prima.

Funzione di sola lettura. Attiva questa opzione se la tua funzione legge solo i dati (una ricerca di azioni, un controllo prezzi, una ricerca dello stato dell’ordine) e non crea o modifica mai nulla. Quando un temporaneo problema di rete interrompe l’IA a metà risposta, la piattaforma può ritentare in sicurezza il turno di conversazione invece di lasciare il cliente senza una risposta. Abilitala solo se la funzione non scrive mai nulla: una funzione che crea record deve rimanere disattivata, in modo che un nuovo tentativo non possa mai eseguirla accidentalmente due volte.

Fornisci risultato memorizzato nella cache su chiamate ripetute. Quando l’IA chiama nuovamente la funzione con gli stessi input (ad esempio, il cliente pone la stessa domanda due volte), il risultato precedente viene riutilizzato invece di chiamare nuovamente il tuo endpoint. I risultati memorizzati nella cache vengono conservati fino a 24 ore e una chiamata con input diversi viene sempre inviata al tuo endpoint come nuova.

Esecuzioni massime per conversazione. Un limite rigido sul numero di volte in cui la funzione può essere eseguita all’interno di una conversazione. Impostalo su 1 per le funzioni che dovrebbero essere attivate solo una volta per chat: generare un preventivo, attivare una richiamata, avviare un’automazione. Quando viene raggiunto il limite, l’IA viene informata che la funzione è già stata eseguita e riceve il risultato più recente, così può ancora rispondere al cliente invece di rimanere in silenzio.

Esecuzioni massime per intervallo di tempo. Un limite di frequenza nel tempo: ad esempio, al massimo 5 esecuzioni entro 60 minuti. Utile per funzioni che chiamano servizi di terze parti a pagamento o attivano automazioni più pesanti. Entrambe le caselle devono essere compilate insieme (un numero di esecuzioni e una finestra in minuti, fino a 7 giorni).

Un paio di cose da sapere:

  • I limiti contano solo le esecuzioni riuscite. Una chiamata fallita dal lato del tuo endpoint non consuma il budget.
  • Quando un’esecuzione viene bloccata da un limite, il cliente non viene mai lasciato in sospeso: l’IA viene informata del motivo e lavora con le informazioni di cui dispone già.
  • I limiti si applicano ovunque venga eseguita la funzione: chat regolari su ogni canale e funzioni gestite da un’automazione. Le conversazioni di prova in “Try Out” non vengono conteggiate e non sono limitate.

Strumenti bot integrati

Oltre alle funzioni personalizzate che crei tu stesso, la piattaforma include una libreria di strumenti predefiniti che il bot IA può utilizzare durante una conversazione. Questi coprono le operazioni più comuni che un bot deve eseguire — avvisare un membro del team, prenotare un appuntamento, etichettare un contatto, cercare sul tuo sito web, programmare un follow-up e altro ancora — così non devi configurarli da zero.

Il bot decide quando utilizzare ogni strumento in base a ciò che accade nella conversazione e a come sono configurati il tuo Agente (e la campagna ad esso collegata). La maggior parte di questi strumenti si attiva automaticamente quando viene abilitata la funzionalità correlata (ad esempio, gli strumenti di prenotazione diventano disponibili solo dopo aver collegato un calendario e abilitato le prenotazioni).

Costo in crediti: Ogni chiamata a uno strumento viene fatturata in base al livello di qualità AI del tuo Agente, e le funzioni personalizzate che crei tu stesso vengono fatturate allo stesso modo:

Livello di qualità AI Crediti per chiamata a strumento Con la tua chiave Anthropic (BYOK) collegata
Pro 1 credito 0 crediti: viene eseguita con la tua chiave
Economy (deprecato) 0,5 crediti 0 crediti: viene eseguita con la tua chiave
Max 0,25 crediti ancora 0,25 crediti, fatturati anche con la tua chiave collegata, perché Max viene eseguito sul nostro modello
Mini 0,15 crediti ancora 0,15 crediti, fatturati anche con la tua chiave collegata, perché Mini viene eseguito sul nostro modello

Strumenti per Team e Attività

Strumento Cosa fa Quando lo usa il bot
Avvisa un membro del team Mette in pausa il bot per questo contatto e invia un’email al tuo team indicando che è necessario un intervento umano. La chat viene contrassegnata in modo che un collega possa prenderla in carico. Quando il cliente chiede un operatore umano, è frustrato o chiede qualcosa che il bot non è autorizzato o in grado di rispondere.
Crea un’attività Crea una nuova attività sulla tua bacheca, facoltativamente collegata al contatto e alla conversazione. Il bot continua a rispondere normalmente: l’attività è solo un promemoria per il tuo team per il follow-up. Per elementi non urgenti come una richiesta di funzionalità, un’opportunità di upsell o un richiamo che il team dovrebbe gestire in seguito.
Suggerisci un aggiornamento FAQ Quando il bot incontra una domanda a cui non sa rispondere bene, crea un’attività chiedendo al tuo team di aggiungere una risposta alla knowledge base. Quando un contatto chiede qualcosa non coperto dalle tue FAQ esistenti, così la lacuna viene colmata per la volta successiva.
Aggiungi contesto a un suggerimento FAQ Se un altro contatto pone in seguito una domanda simile con un’angolazione diversa, il bot aggiunge quel contesto al suggerimento FAQ esistente invece di creare un’attività duplicata. Automatico: mantiene pulito il tuo elenco di attività quando più persone sollevano la stessa lacuna di conoscenza.

Strumenti per i contatti

Strumento Cosa fa Quando il bot lo usa
Etichettatura Viene eseguita automaticamente dopo ogni risposta del bot: non è uno strumento che il bot rivolto al cliente decide di chiamare. Il sistema esamina la conversazione recente e applica le etichette pertinenti, riutilizzando le tue etichette esistenti ove possibile (e creandone una nuova solo quando necessario). Automatico: ogni volta che la conversazione rivela qualcosa su cui vale la pena segmentare, come interesse, intenzione, qualità del lead o lingua.
Aggiorna nome contatto Salva il nome e/o il cognome del contatto quando li condivide. Quando il cliente si presenta o corregge un nome.
Aggiorna email contatto Salva l’indirizzo email del contatto quando lo condivide. Quando il cliente fornisce un’email: per newsletter, ricevute, ricerche account, ecc.

Strumenti di appuntamento e prenotazione

Questi strumenti sono disponibili solo quando le prenotazioni sono abilitate nella campagna collegata al tuo Agente e quando è configurato un tipo di evento del calendario.

Strumento Cosa fa Quando lo usa il bot
Verifica fasce orarie disponibili Cerca quali orari sono liberi nel tuo calendario collegato per una data o un intervallo di date specifici. Quando il cliente vuole prenotare e il bot deve offrire la disponibilità reale.
Prenota un appuntamento Crea l’appuntamento nel tuo calendario e conferma la prenotazione al cliente. Dopo che il cliente conferma una data e un orario specifici.
Sposta un appuntamento Ripianifica un appuntamento esistente in una nuova data e ora. Quando il cliente chiede di ripianificare.
Annulla un appuntamento Annulla un appuntamento esistente. Quando il cliente chiede di annullare.
Cerca appuntamenti Recupera gli appuntamenti esistenti di un contatto in modo che il bot sappia cosa è già stato fissato. Quando il cliente chiede “quando è il mio appuntamento?” o prima di offrire di ripianificare.

Strumenti di conoscenza e web

Strumento Cosa fa Quando lo usa il bot
Cerca nel tuo sito web Scansiona gli URL che hai aggiunto all’elenco degli URL dinamici della campagna per trovare pagine di prodotto, articoli o altri contenuti che rispondono alla domanda del cliente. Disponibile solo quando la Ricerca web AI è attiva e hai aggiunto almeno un URL dinamico. Se la Ricerca web AI è disattivata, il bot non può leggere pagine o link, nemmeno quelli incollati dal cliente nella chat. Quando il cliente chiede informazioni probabilmente presenti sul tuo sito web: prodotti, prezzi, sedi, politiche.
Controlla un link Legge il contenuto di uno specifico URL in modo che il bot possa rispondere a domande su quella pagina. Disponibile solo quando la Ricerca web AI è attiva e hai aggiunto almeno un URL dinamico. Se la Ricerca web AI è disattivata, il bot non può leggere pagine o link, nemmeno quelli incollati dal cliente nella chat. Quando il cliente condivide un link o chiede informazioni su una pagina specifica del tuo sito.
Cerca sul web Esegue una ricerca Google pubblica e restituisce i migliori risultati, in modo che il bot possa rispondere a domande al di fuori dei tuoi contenuti. Quando il cliente chiede informazioni generali (es. indicazioni, informazioni pubbliche) che non sono presenti nella tua knowledge base. Utilizzato solo se la ricerca web è abilitata.

Strumenti di follow-up

Questi strumenti richiedono che i follow-up siano abilitati nella campagna collegata al tuo Agente.

Strumento Cosa fa Quando lo usa il bot
Pianifica un follow-up intelligente Pianifica un messaggio di follow-up intelligente utilizzando la tua sequenza di follow-up: sceglie il modello e la tempistica corretti in base alla conversazione. Quando il cliente non risponde più o chiede al bot di “ricontattare più tardi”.
Pianifica un follow-up Pianifica un follow-up di base in un momento specifico. Quando il bot deve sollecitare la conversazione in un momento definito.

Esecutore di funzioni personalizzate

Strumento Cosa fa Quando lo usa il bot
Esegui una funzione personalizzata Esegue una delle funzioni personalizzate che hai creato e assegnato all’Agente (vedi il resto di questa pagina). Quando la richiesta del cliente corrisponde allo scopo di una delle tue funzioni personalizzate.

Strumenti di prenotazione ristorante (Zenchef e Formitable)

Questi strumenti sono disponibili solo quando è collegata un’integrazione Zenchef o Formitable. Consentono al bot di gestire le prenotazioni del ristorante dall’inizio alla fine.

Strumento Cosa fa Quando lo usa il bot
Verifica disponibilità ristorante Cerca gli slot di prenotazione aperti per una data, un numero di persone e (facoltativamente) un’area di seduta specifici. Quando un ospite chiede di prenotare un tavolo.
Crea una prenotazione ristorante Crea una nuova prenotazione. Dopo che l’ospite conferma uno slot specifico.
Aggiorna una prenotazione ristorante Modifica la data, l’ora, il numero di persone o le note di una prenotazione esistente. Quando l’ospite chiede di modificare la propria prenotazione.
Annulla o cambia stato prenotazione Annulla una prenotazione o ne aggiorna lo stato (es. confermato, mancata presentazione). Quando l’ospite annulla o quando il bot deve contrassegnare un cambio di stato.
Cerca prenotazioni Trova le prenotazioni esistenti che corrispondono a criteri come nome, email o data. Quando un ospite abituale chiede informazioni su una prenotazione esistente.
Aggiorna profilo ospite Aggiorna il profilo dell’ospite nel sistema del ristorante (preferenze, note, informazioni di contatto). Quando l’ospite condivide preferenze dietetiche, un nuovo numero di telefono o altre informazioni a livello di profilo.
Elenca prodotti ristorante Estrae l’elenco di menu, menu fissi o componenti aggiuntivi disponibili per la prenotazione. Quando l’ospite chiede “quali menu fissi avete?” o il bot deve allegare un menu a una prenotazione.

Attivazione e disattivazione degli strumenti

La maggior parte degli strumenti è controllata nella scheda Abilità AI dell’Agente (o nel passaggio Abilità AI della campagna, se stai lavorando da una campagna ancora classica):

  • Strumenti di prenotazione si attivano quando abiliti le prenotazioni e colleghi un calendario: questa rimane un’impostazione per campagna per ora, con un link diretto al passaggio di quella campagna dalla scheda Abilità AI dell’Agente
  • Strumenti di follow-up si attivano quando abiliti i follow-up
  • Strumenti per ristoranti si attivano quando colleghi un account Zenchef o Formitable
  • Ricerca web ha il proprio interruttore nella scheda FAQ e Conoscenza
  • Strumenti per le attività possono essere disattivati per Agente con l’interruttore Consenti all’AI di creare attività (sono attivi per impostazione predefinita; l’interruttore Attività a livello di account in Impostazioni → Profilo → Funzionalità disattiva l’intero sistema di attività ovunque)
  • Strumenti di aggiornamento contatti sono controllati nella stessa scheda Abilità AI: se l’AI può rinominare i contatti o salvare informazioni aggiuntive raccolte su di essi
  • Strumenti di avviso sono sempre disponibili; la targhettizzazione viene eseguita automaticamente dopo ogni risposta del bot (non è uno strumento che il bot sceglie di chiamare)

Se vuoi che il bot smetta di usare uno specifico strumento integrato, il modo più pulito è disabilitare la funzionalità sottostante (ad esempio, disattiva le prenotazioni per disabilitare tutti gli strumenti di prenotazione).


Funzioni gestite da un’automazione

Alcune voci nella pagina delle Funzioni personalizzate potrebbero presentare un badge Gestito dall’automazione. Queste non sono state create qui, ma provengono da un’automazione con un trigger Funzione Agente IA, che conferisce al tuo agente una capacità i cui passaggi vengono creati visivamente sulla tela dell’automazione invece di puntare a un indirizzo web esterno.

Una funzione gestita viene curata per te: il suo nome, la descrizione e i campi seguono sempre quanto impostato sul trigger dell’automazione, quindi non può essere modificata o eliminata da questa pagina; usa il link Apri automazione e modifica l’automazione stessa. Puoi comunque scegliere quali agenti possono utilizzarla nel modo consueto: nella scheda Abilità IA di un agente, appare insieme alle altre abilità dell’agente con un normale interruttore on/off (se la sua automazione è in pausa, la riga lo segnala; l’abilità diventa attiva quando l’automazione viene accesa). Tutto il resto si comporta come qualsiasi altra funzione personalizzata: l’IA decide quando chiamarla, raccoglie i dettagli che hai definito e può utilizzare la risposta dell’automazione nella stessa conversazione.

Se devi scegliere tra le due opzioni: punta una normale funzione personalizzata verso un sistema che ha già un indirizzo da chiamare; crea un’automazione con un trigger Funzione Agente AI quando il lavoro è qualcosa che preferiresti assemblare per passaggi (cercare qualcosa in un foglio di calcolo o database, ramificare in base a una condizione, creare record) senza dover gestire un tuo server. Vedi Automazioni.


Requisiti del piano

Le funzioni personalizzate sono disponibili nei piani che includono la funzionalità delle funzioni personalizzate. Controlla il tuo abbonamento per confermare la disponibilità.


Prossimi passi

  • Collega server MCP al tuo Bot — un pacchetto di strumenti già pronti invece di una funzione alla volta.
  • Agenti AI — la pagina principale del gruppo AI Studio in cui risiedono le Funzioni Personalizzate e dove le funzioni personalizzate vengono assegnate a un bot.