Documentazione Tecnica
SideMindBot v1.8.0
Reference tecnico completo per sviluppatori e system integrator. API, webhook, architettura e best practice.
Architettura Multi-Agent
SideMindBot utilizza un'architettura multi-agent con orchestratore centrale. Ogni messaggio viene analizzato e instradato all'agente specializzato più appropriato.
Messaggio
WhatsApp/Email/Social
Orchestratore
Intent detection
Agente Specializzato
Sales/Support/Booking
Risposta
+ Context memory
Componenti Principali
| Componente | Funzione | Tecnologia |
|---|---|---|
| Orchestrator | Analizza intent, routing agli agenti, gestione fallback | Claude/GPT-4 con function calling |
| Agent Pool | Agenti specializzati per dominio (sales, support, booking) | LLM + Knowledge Base specifica |
| Memory Manager | Gestione contesto conversazione, TTL 24h, max 30 msg | Redis + PostgreSQL |
| GDPR Filter | Pseudonimizzazione pre-AI, de-anonimizzazione post-AI | Regex + tokenizer custom |
| Channel Adapter | Normalizzazione input/output per ogni canale | WhatsApp Web.js, IMAP, Graph API |
Fallback Strategy
Il sistema implementa fallback automatico su provider AI alternativi per garantire continuità di servizio:
// Configurazione fallback (ordine di priorità) { "primary": "claude-3-opus", "fallback": [ "claude-3-sonnet", "gpt-4-turbo", "gpt-3.5-turbo" ], "timeout_ms": 5000, "retry_count": 2 }
Webhook API
SideMindBot può inviare notifiche webhook per eventi specifici e ricevere comandi esterni.
Outbound Webhook (SideMindBot → Your Server)
POST https://your-server.com/webhook/sidemind Content-Type: application/json X-SideMind-Signature: sha256=... { "event": "message.received", "timestamp": "2026-01-25T10:30:00Z", "data": { "conversation_id": "conv_abc123", "channel": "whatsapp", "sender": { "id": "393331234567", "name": "Mario Rossi" }, "message": { "type": "text", "content": "Vorrei prenotare un appuntamento" }, "context": { "referral_type": "ADS", "campaign_id": "fb_camp_123" } } }
Eventi Disponibili
| Evento | Descrizione | Trigger |
|---|---|---|
| message.received | Nuovo messaggio in arrivo | Ogni messaggio utente |
| message.sent | Risposta inviata (bot o operatore) | Ogni risposta |
| conversation.escalated | Conversazione passata a operatore | Human takeover |
| conversation.closed | Conversazione conclusa | Timeout o chiusura manuale |
| lead.captured | Nuovo lead identificato | Estrazione dati contatto |
| spam.detected | Messaggio spam bloccato | Anti-spam trigger |
Inbound Webhook (Your Server → SideMindBot)
POST https://api.sidemindbot.com/v1/messages/send Authorization: Bearer YOUR_API_KEY Content-Type: application/json { "channel": "whatsapp", "recipient": "393331234567", "message": { "type": "text", "content": "Il tuo appuntamento è confermato per domani alle 15:00" }, "bypass_ai": true }
Autenticazione Webhook
Tutti i webhook in uscita includono header X-SideMind-Signature con HMAC-SHA256 del payload. Verifica sempre la signature prima di processare.
Configurazione Canali
SideMindBot si connette al tuo numero WhatsApp personale/business tramite WhatsApp Web (QR code). Non richiede WhatsApp Business API.
// Configurazione WhatsApp { "channel": "whatsapp", "config": { "session_name": "main_business", "qr_timeout_ms": 60000, "auto_reconnect": true, "voice_transcription": true, "media_download": true } }
Email (Gmail + IMAP)
// Configurazione Email multi-account { "channel": "email", "accounts": [ { "type": "gmail", "email": "support@tuaazienda.it", "oauth2": { "client_id": "...", "refresh_token": "..." } }, { "type": "imap", "email": "info@tuaazienda.it", "imap_host": "imap.tuodominio.it", "smtp_host": "smtp.tuodominio.it" } ] }
Social Media (Facebook, LinkedIn, TikTok)
// Configurazione Facebook con context tracking { "channel": "facebook", "page_id": "123456789", "features": { "messenger_dm": true, "post_comments": true, "ad_comments": true, "story_replies": true }, "context_tracking": { "referral_types": ["ADS", "ORGANIC", "DIRECT", "STORY"], "include_post_content": true, "include_ad_content": true } }
GDPR Pseudonimizzazione
SideMindBot implementa pseudonimizzazione reversibile come requisito architetturale. I dati personali vengono tokenizzati prima dell'invio all'AI e de-anonimizzati nella risposta.
Tipi PII Supportati (12)
| Tipo PII | Pattern | Token |
|---|---|---|
mario.rossi@email.com |
[EMAIL_1] |
|
| Telefono | +39 333 1234567 |
[PHONE_1] |
| Codice Fiscale | RSSMRA80A01H501Z |
[CF_1] |
| IBAN | IT60X0542811101000000123456 |
[IBAN_1] |
| Nome Completo | Mario Rossi |
[NAME_1] |
| Indirizzo IP | 192.168.1.100 |
[IP_1] |
| Data di Nascita | 01/01/1980 |
[DOB_1] |
| Carta di Credito | 4111 1111 1111 1111 |
[CC_1] |
| CAP | 20100 |
[ZIP_1] |
| Indirizzo | Via Roma 1, Milano |
[ADDRESS_1] |
| Partita IVA | IT12345678901 |
[VAT_1] |
| Dati Sanitari | allergia a penicillina |
[HEALTH_1] |
Flusso Pseudonimizzazione
// Input utente "Ciao, sono Mario Rossi, email mario.rossi@email.com, vorrei prenotare" // Dopo pseudonimizzazione (inviato all'AI) "Ciao, sono [NAME_1], email [EMAIL_1], vorrei prenotare" // Risposta AI "Ciao [NAME_1], ho inviato la conferma a [EMAIL_1]" // Dopo de-anonimizzazione (inviato all'utente) "Ciao Mario Rossi, ho inviato la conferma a mario.rossi@email.com"
Importante
I mapping PII→Token sono memorizzati localmente su server EU e mai inviati a provider AI esterni. Il TTL di default è 24 ore, configurabile per compliance specifica.
Human-in-the-Loop
Il sistema Human-in-the-Loop garantisce che l'operatore umano abbia sempre priorità sulla risposta AI.
Flusso di Funzionamento
// Configurazione HITL { "hitl": { "enabled": true, "timeout_seconds": 300, // 5 minuti default "operator_priority": true, "context_preservation": true } } // Stati conversazione enum ConversationState { QUEUED, // In attesa, timer attivo OPERATOR, // Operatore ha risposto BOT, // Bot ha risposto (timeout scaduto) MIXED // Interventi misti operatore+bot }
Logica Decisionale
| Scenario | Azione | Risultato |
|---|---|---|
| Messaggio arriva, operatore disponibile | Entra in coda con timer | Attende risposta operatore |
| Operatore risponde entro timeout | Bot NON interviene | Risposta operatore inviata |
| Timeout scade senza risposta | Bot genera risposta | Risposta AI inviata |
| Bot ha risposto, operatore interviene dopo | Operatore prende controllo | Conversazione passa a MIXED |
Operator Context
Quando il bot risponde dopo un intervento operatore, ha piena consapevolezza del contesto:
// Cronologia conversazione inviata all'AI [ { "role": "user", "content": "Quanto costa il servizio?" }, { "role": "operator", "content": "Dipende dal piano, quale ti interessa?" }, { "role": "user", "content": "Quello base" }, // Bot risponde con contesto completo ]
Eventi e Analytics
Metriche Tracciate
| Metrica | Descrizione | Aggregazione |
|---|---|---|
| messages_received | Messaggi in arrivo per canale | Count / ora, giorno |
| messages_sent | Risposte inviate (bot vs operatore) | Count / ora, giorno |
| response_time_avg | Tempo medio risposta | Media mobile 7 giorni |
| bot_deflection_rate | % conversazioni gestite solo da bot | Percentuale giornaliera |
| escalation_rate | % conversazioni passate a operatore | Percentuale giornaliera |
| referral_breakdown | Distribuzione ADS/ORGANIC/DIRECT | Percentuali per canale |
Export Dati
GET /api/v1/analytics/export Authorization: Bearer YOUR_API_KEY // Query params ?start_date=2026-01-01 &end_date=2026-01-31 &format=csv &metrics=messages_received,response_time_avg
Supporto Tecnico
Per assistenza tecnica su integrazione e configurazione:
- Email: tech@synaptica-solution.com
- Documentazione: Questa pagina viene aggiornata regolarmente
- Richieste feature: Contatta il tuo account manager