Integrazione n8n
Automazione workflow self-hosted con controllo completo sui tuoi dati.
Panoramica
n8n è uno strumento di automazione open-source e self-hostabile. Mantieni i dati foto sulla tua infrastruttura automatizzando workflow con 200+ integrazioni.
Prerequisiti
- Account Visiono con accesso API
- Istanza n8n (self-hosted o cloud)
- Chiave API da Visiono
Perché n8n?
| Funzionalità | Beneficio |
|---|---|
| Self-hosted | Controllo completo dati |
| Open source | Ispeziona e modifica codice |
| Nessun limite esecuzioni | Workflow illimitati |
| Nodi personalizzati | Costruisci integrazioni |
| Licenza fair-code | Gratuito per la maggior parte degli usi |
Passaggi di Setup
1. Creare Nodo Webhook
- Apri editor workflow n8n
- Aggiungi nodo Webhook
- Imposta metodo: POST
- Copia l'URL webhook (Production o Test)
2. Configurare in Visiono
- Vai a Impostazioni Workspace → Webhook
- Clicca Aggiungi Webhook
- Incolla URL webhook n8n
- Seleziona eventi da attivare
- Salva configurazione
3. Testare la Connessione
- In n8n, clicca Listen for Test Event
- Invia una foto di test in Visiono
- n8n visualizza i dati ricevuti
- Clicca Stop Listening
4. Costruire il Tuo Workflow
Aggiungi nodi per elaborare i dati:
[Webhook] → [IF] → [HTTP Request] → [Email]
↘ [Slack]Esempi Workflow
Workflow Backup Foto
Salva foto su storage locale o S3:
json
{
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "visiono-photos",
"httpMethod": "POST"
}
},
{
"name": "Loop Photos",
"type": "n8n-nodes-base.splitInBatches",
"parameters": {
"batchSize": 1
}
},
{
"name": "Download Photo",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"url": "={{$json.url}}",
"responseFormat": "file"
}
},
{
"name": "Save to S3",
"type": "n8n-nodes-base.awsS3",
"parameters": {
"operation": "upload",
"bucketName": "visiono-backups",
"fileName": "={{$json.slot_name}}.jpg"
}
}
]
}Workflow Notifica
Avvisa il team sui nuovi invii:
Nodi:
- Webhook - Ricevi evento Visiono
- Set - Formatta dati messaggio
- Slack - Invia a canale
- Email - Invia riepilogo
Logging Database
Registra invii su PostgreSQL:
Nodi:
- Webhook - Ricevi evento
- Postgres - Inserisci record
- IF - Controlla conteggio foto
- HTTP Request - Chiama API esterna
Configurazione Nodi
Nodo Webhook
yaml
HTTP Method: POST
Path: visiono-webhook
Response Mode: On Received
Response Data: SuccessNodo HTTP Request
Per scaricare foto:
yaml
Method: GET
URL: ={{ $json.data.photos[0].url }}
Response Format: FileNodo IF
Routing condizionale:
yaml
Condition: Number
Value 1: ={{ $json.data.photos.length }}
Operation: Larger
Value 2: 5Riferimento Dati
Accedi ai dati webhook nelle espressioni:
| Espressione | Dati |
|---|---|
{{ $json.event }} | Tipo evento |
{{ $json.data.smart_link.name }} | Nome Link Permanente |
{{ $json.data.photos[0].url }} | URL prima foto |
{{ $json.data.photos.length }} | Conteggio foto |
{{ $json.data.metadata.full_name }} | Nome mittente |
{{ $json.data.metadata.unique_field }} | Identificatore |
Loop e Iterazione
Elaborare Tutte le Foto
Usa nodo Split In Batches:
- Aggiungi dopo Webhook
- Imposta items:
{{ $json.data.photos }} - Batch size: 1
- Connetti nodi elaborazione
- Aggiungi Merge alla fine
Aggregare Risultati
Raccogli dati elaborati:
- Nodo Code per aggregazione
- Archivia in dati statici workflow
- Output risultati combinati
Gestione Errori
Retry su Fallimento
Configura per-nodo:
- Continue on Fail: Elabora item successivo
- Retry on Fail: Tenta di nuovo
- Max Retries: 3
Error Trigger
Cattura e gestisci errori:
- Aggiungi nodo Error Trigger
- Connetti a nodo notifica
- Log o avviso su fallimenti
Suggerimenti Self-Hosting
Deploy Docker
yaml
version: "3"
services:
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=secure-password
- WEBHOOK_URL=https://n8n.tuodominio.com/
volumes:
- n8n_data:/home/node/.n8nURL Webhook
Per webhook di produzione:
- Usa URL produzione (non test)
- Configura variabile ambiente
WEBHOOK_URL - Usa HTTPS con certificato valido
Sicurezza
- Abilita autenticazione
- Usa HTTPS
- Restringi accesso rete
- Backup regolari
Funzionalità Avanzate
Codice Personalizzato
Usa nodo Code per JavaScript:
javascript
const photos = items[0].json.data.photos;
const processed = photos.map(photo => ({
url: photo.url,
name: photo.slot_name,
downloaded: new Date().toISOString()
}));
return [{ json: { photos: processed } }];Credenziali
Archivia chiavi API in modo sicuro:
- Vai a Credentials
- Aggiungi nuova credenziale
- Riferiscila nei nodi
Sub-Workflow
Modularizza workflow:
- Crea workflow riutilizzabile
- Chiama via nodo Execute Workflow
- Passa dati tra workflow
Risoluzione Problemi
Webhook Non Riceve
- Controlla che n8n sia in esecuzione
- Verifica che URL includa porta se necessario
- Controlla che firewall permetta traffico
- Testa con curl
Errori Espressione
- Verifica struttura dati
- Controlla percorsi proprietà
- Usa optional chaining:
$json.data?.photos
Problemi Esecuzione
- Controlla log esecuzione
- Rivedi output nodi
- Testa nodi individuali
- Verifica credenziali
Ottimizzazione Performance
Elaborazione Batch
- Raggruppa operazioni simili
- Usa chiamate API bulk
- Limita esecuzioni concorrenti
Gestione Risorse
- Monitora utilizzo memoria
- Limita esecuzioni workflow
- Archivia dati vecchi
Risorse Correlate
- Webhook - Configurazione eventi
- Riferimento API - Accesso API diretto
- Integrazione Zapier - Alternativa cloud
- Integrazione Make - Costruttore visuale
