I chatbot moderni non sono più semplici risponditori automatici: devono capire il contesto, interrogare dati aziendali, prenotare demo e orchestrare azioni tra CRM, email e calendari. Con n8n puoi costruire un chatbot con n8n multi‑canale che riceve messaggi, li normalizza, consulta un LLM con prompt sicuri, invoca strumenti (API) e risponde con quick replies e pulsanti, il tutto mantenendo costi sotto controllo e piena proprietà del flusso. In questa guida vedremo come impostare un’architettura evento‑driven con webhook, mettere in sicurezza gli endpoint, integrare WhatsApp Business API, Telegram, Messenger e Instagram Direct via API, aggiungere memoria conversazionale e knowledge base, e mandare in produzione su n8n Cloud o Docker. Troverai configurazioni nodo‑per‑nodo, esempi pronti e pattern per gestione rate limit, retry, logging e analytics dei flussi conversazionali. Alla fine avrai un blueprint riutilizzabile per orchestrazione conversazionale con n8n, flessibile e vendor‑neutral.
[IMG: schema alto livello del flusso: Webhook → Normalizzazione → LLM → Tool/API → Rendering → Reply]
Architettura conversazionale: orchestratore, webhook e routing
La soluzione più robusta per orchestrazione conversazionale con n8n è evento‑driven: ogni messaggio in ingresso attiva un webhook, il payload viene normalizzato in un modello unico (testo, mittente, canale, timestamp), poi la logica decide se rispondere con regole, interrogare un LLM o chiamare strumenti (CRM, calendari, documenti). Questo approccio consente:
- Vendor neutrality e scalabilità: integri più canali via HTTP Request e separi la UX nativa (pulsanti, quick replies) dalla logica.
- Costi prevedibili: il LLM viene invocato solo quando serve, con riduzione costi e ottimizzazione prompt.
- Estensibilità: aggiungi facilmente “tool” (API) per arricchire le risposte o eseguire azioni.
Pattern fondamentale:
- Trigger con Webhook per ricevere messaggi (WhatsApp Cloud API, Telegram Bot API, Meta per Messenger/Instagram).
- Normalizzazione del payload in un JSON coerente.
- Routing con Switch/IF: intenti, entity, canale, priorità.
- Azione: regola statica, chiamata LLM (function/tool calling con modelli LLM), o chiamata API di business.
- Rendering della risposta con componenti nativi del canale (testo, quick replies, pulsanti, media).
- Invio risposta via HTTP Request all’API del canale.
- Logging/analytics e, se necessario, handoff a operatore o CRM.
Consiglio pratico: mantieni un “contratto di messaggio” unico (message.text, message.media, user.id, channel, threadId). I canali cambiano spesso i payload; la normalizzazione limita la fragilità e facilita il testing. Integra poi monitoraggio e analytics dei flussi conversazionali per controllare KPI come tasso di risoluzione, FRT e escalation rate.
[IMG: mappa dati normalizzati: {channel, userId, text, media[], metadata}]
Webhook e sicurezza: ricezione rapida, verifica, risposta personalizzata
Per ricevere messaggi in modo affidabile usa il nodo Webhook Trigger e rispondi rapidamente al canale, demandando l’elaborazione pesante in background.
Configurazione ricezione
- Node: Webhook Trigger
- Type: n8n-nodes-base.webhook
- Parameters:
- path: incoming-data
- methods: [“POST”]
- responseMode: onReceived
- responseData:
- statusCode: 200
- body: “Webhook received successfully”
Questo invia subito 200 al provider (evita timeout) e ti consente di proseguire nel flusso. Se vuoi controllare headers/body della risposta in modo puntuale, usa il nodo dedicato:
Risposta personalizzata
- Node: Respond To Webhook
- Type: n8n-nodes-base.respondToWebhook
- Parameters:
- responseMode: responseNode
- options → responseData:
- body: “{\”success\”: true, \”message\”: \”Processed\”}”
- headers: { “Content-Type”: “application/json” }
- statusCode: 200
Verifica e robustezza
- Configurazione webhook sicuri e verifica firma: applica la verifica HMAC (con un Code Node) quando il canale la supporta; se fallisce rispondi 400 con Respond To Webhook.
- Rate limiting e retry nelle API: limita i batch, usa backoff su 429/5xx.
- Idempotenza: deduplica per delivery ID/ID messaggio per evitare risposte duplicate.
- Errori: abilita Continue On Fail dove utile e crea un workflow con Error Trigger per alert.
[IMG: canvas con Webhook Trigger → Code(verify) → Respond To Webhook(200) → Processing async]
Integrazione canali: WhatsApp, Telegram, Messenger/Instagram via API
Puoi coprire i principali canali con webhook + HTTP Request, senza lock-in.
WhatsApp Business API in automazioni
- Configura il webhook su Meta Developers verso il tuo Webhook Trigger.
- Normalizza il payload: testo, mittente, phone number, message id.
- Rispondi con HTTP Request POST verso l’endpoint WhatsApp Cloud API includendo Authorization: Bearer
e Content-Type: application/json. Mappa testo, media e componenti (quick replies/pulsanti) se supportati.
Bot Telegram con flussi n8n
- Opzione A (webhook): imposta il webhook del Bot Telegram verso il tuo Webhook Trigger; normalizza e rispondi via HTTP Request all’endpoint sendMessage/sendPhoto ecc.
- Opzione B (polling): meno consigliata in produzione; privilegia always‑on via webhook.
- Mantieni le credenziali (token Bot) in n8n Credentials/variabili.
Messenger e Instagram Direct via API Meta
- Crea l’app Meta, abilita i webhook per le pagine/IG Business.
- Verifica la firma (X-Hub-Signature‑256) lato ingressi.
- Rispondi via HTTP Request all’endpoint di invio messaggi con i campi richiesti (recipient, message, metadata), rispettando i rate limit Meta.
HTTP Request: settaggi chiave
- Authentication: OAuth2/API Key/HTTP Basic via credenziali n8n o custom headers (Authorization).
- Response format: responseFormat: “json”
- Resilienza: Continue On Fail per non bloccare il flusso; combina con strategie di retry/backoff.
Questo approccio ti consente di usare lo stesso flusso per più canali, cambiando solo l’adapter di invio/ricezione. Mantieni mapping dei componenti (quick replies, pulsanti) in una libreria condivisa per ridurre errori.
[IMG: tabella “canale → endpoint invio → campi chiave”]
LLM e ragionamento: prompt sicuri, tool calling e knowledge base
Integra un modello LLM per capire l’intento, generare risposte e invocare strumenti. Due percorsi:
OpenAI Chat Node (semplice e diretto)
- Node: OpenAI Chat (lmChatOpenAi)
- Parametri tipici:
- model: gpt-3.5-turbo (o gpt-4)
- temperature: 0.7
- maxTokens: 500
- systemPrompt: “You are a helpful assistant.”
- userPrompt: testo normalizzato dell’utente
Esempio configurazione minimal:
model: "gpt-4"
temperature: 0.7
maxTokens: 500
systemPrompt: "You are a helpful assistant."
userPrompt: "{{ $json.text }}"
AI Agent con Tools/Functions (avanzato)
- Agent type: “tools” (Tools Agent) o “conversational”
- systemMessage: istruzioni del ruolo e policy (tono, limiti, citazioni)
- tools: array di strumenti (es. googleSearch, memory-add, memory-retrieve)
- memory: true per abilitare contesto
Esempio concettuale:
agent: "tools"
model: { provider: "openai", model: "gpt-4", temperature: 0.7 }
systemMessage: "You are an assistant that uses tools to find information."
memory: true
tools: ["googleSearch"]
Best practice
- Prompt sicuri e riduzione costi: limita maxTokens, usa pattern “decision first” (il modello decide se serve tool).
- function/tool calling con modelli LLM: mappa funzioni chiare (getorderstatus, book_demo) e valida output prima di invocare API.
- vector database ed embeddings per knowledge base: recupera contesto documentale prima del prompt (RAG) per risposte precise e meno costose.
[IMG: flusso normalizzato: text → LLM → decide tool? → HTTP Request tool → LLM → render reply]
Stato e UX: memoria, attese, quick replies e handoff umano
Gestione memoria conversazionale e contesto
- Memoria a breve (finestra): passa gli ultimi turni come contesto al modello (conversational agent).
- Memoria strutturata: salva in DB/Sheets/Redis chiave utente → ultime intenzioni, preferenze, step correnti.
Sincronizzazione e attese
- Usa il Merge Node in modalità Wait per sincronizzare due rami (es. attesa risposta esterna + risultato LLM) prima di comporre la risposta finale.
Code Node (ex Function Node)
- Scrivi logiche custom (normalizzazioni, controlli) in JavaScript:
- Modalità: Run Once for All Items o Run Once for Each Item
- Campo functionCode per la trasformazione degli item
Esperienze ricche
- quick replies, pulsanti e messaggi ricchi per chat: rappresentali in un payload astratto e mappa al formato del canale in uscita.
- Fallback a operatore umano e handoff al CRM: se confidenza bassa o intent “human”, crea ticket/assegna conversazione. Invia un messaggio Slack al canale support.
Slack (notifica)
- Node: Slack
- Resource: “message”
- Operation: “send”
- channel: “C01234567”
- text: “Escalation: nuova chat da {{ $json.userId }}”
[IMG: canvas con Merge(mode=Wait), Code, Slack send message per escalation]
Produzione: deploy, osservabilità e KPI
Deploy n8n in produzione (Docker/Cloud)
- n8n Cloud: gestione gestita e SSL incluso.
- Self‑host (Docker): variabili d’ambiente per credenziali, URL pubblica, scaling orizzontale per throughput alto.
Logging e tracciamento
- Logging strutturato per request/response con ID conversazione.
- Slack “Send Message” per alert su errori critici.
- Usa Respond To Webhook per rispondere rapidamente e proseguire asynchronously quando necessario.
KPI e analytics dei flussi conversazionali
- tasso di risoluzione, FRT (First Response Time), TTF, sentiment, escalation rate, costi/token LLM.
- A/B test di prompt: variazioni controllate su systemMessage/userPrompt.
- Saturazione rate limit: monitora 429 e applica backoff. Con HTTP Request, abilita Continue On Fail dove non vuoi interrompere la run e usa rami di retry.
Sicurezza e conformità GDPR
- Conserva solo dati necessari; maschera PII; imposta retention.
- Proteggi i segreti in Credentials; separa ambienti (staging/prod).
- Configurazione webhook/URL pubblica, verifica firma e idempotenza per evitare replay.
[IMG: dashboard KPI con FRT, risoluzione, errori 4xx/5xx, costo/token]
Quick Takeaways
- Disegna il chatbot con n8n come orchestratore: webhook → normalizzazione → LLM/tool → render → reply.
- Ricevi con Webhook Trigger e rispondi rapido (onReceived o Respond To Webhook); processa pesante off‑line.
- Integra canali via HTTP Request (WhatsApp, Telegram, Meta) e gestisci rate limit/retry.
- Usa OpenAI Chat (lmChatOpenAi) per casi semplici o un AI Agent con tools/functions per azioni complesse.
- Aggiungi memoria conversazionale, quick replies e handoff umano via Slack.
- Metti in produzione con logging strutturato, KPI e politiche GDPR chiare.
Conclusione
Costruire chatbot con n8n significa unire flessibilità e controllo: ricevi messaggi via webhook, normalizzi i payload, decidi il percorso con logiche chiare, chiami un LLM quando serve, orchestri strumenti di business e rispondi nel formato nativo del canale. Con Webhook Trigger e Respond To Webhook restituisci 2xx in tempi stretti; con HTTP Request parli alle API dei canali; con OpenAI Chat o un AI Agent abiliti ragionamento e tool calling, mantenendo costi sotto controllo. In produzione, n8n Cloud o Docker, logging strutturato, KPI e alert Slack ti garantiscono visibilità e affidabilità. Parti da un MVP: un canale, un paio di intenti, un prompt essenziale e un flusso di fallback umano. Poi aggiungi memoria, knowledge base e pulsanti/quick replies. Con pochi nodi ben configurati puoi offrire esperienze conversazionali efficaci, scalabili e in linea con le policy dei provider, trasformando la chat in un canale davvero utile per marketing e sales.
FAQ
-
Come collego WhatsApp/Messenger/Instagram a n8n senza lock‑in?
-
Usa webhook per ricezione e HTTP Request per invio, mantenendo orchestrazione conversazionale con n8n. In questo modo cambi canale o provider senza rifare la logica.
-
Posso usare LLM con tool calling e memoria?
-
Sì. Per casi semplici, OpenAI Chat (lmChatOpenAi) con systemPrompt/userPrompt. Per azioni avanzate, un AI Agent con tools/functions e memoria per gestione memoria conversazionale e contesto.
-
Come rendo sicuri i miei endpoint?
-
Applica configurazione webhook sicuri e verifica firma in ingresso (HMAC). Con Respond To Webhook rispondi 200 rapidamente; deduplica i messaggi e usa idempotenza per side effects.
-
Come gestisco i rate limit dei canali?
-
Introduci backoff su 429/5xx, limita la concorrenza e usa Continue On Fail dove non vuoi interrompere il flusso. Logga gli esiti e monitora saturazione e retry.
-
Come misuro l’efficacia del mio bot?
-
Traccia monitoraggio e analytics dei flussi conversazionali: tasso di risoluzione, FRT/TTF, sentiment, escalation rate e costi/token LLM. Fai A/B test di prompt e aggiorna la knowledge base regolarmente.
Hai feedback o vuoi condividere la tua esperienza? Scrivi quali canali vuoi integrare per primi e perché. Se la guida ti è stata utile, condividila con il tuo team: qual è la funzionalità che più ti aiuterebbe a lanciare il tuo prossimo chatbot?
Scopri la consulenza →

