Skip to content

🔗 Ponte di Integrazione

Come i due server comunicano tra loro in tempo reale

Flusso Comunicazione

sequenceDiagram
    participant C as Cliente WA
    participant B as Bot (.91)
    participant S as Sito (.154)
    participant M as Marco WA
    participant E as Brevo Email

    C->>B: "Vorrei info sul nigiri robot"
    B->>B: AI risponde su WA
    B->>S: POST /api/email/bot-generate-draft
    S->>S: Gemini genera bozza email
    S-->>B: {draftId: 5, subject: "..."}
    B->>M: "BOZZA EMAIL GENERATA - INVIA 5 o MODIFICA 5"
    M->>B: "INVIA 5"
    B->>S: POST /api/email/send/5
    S->>E: Brevo HTTP API
    E->>C: Email professionale ricevuta

API Bridge (Bot → Sito)

Endpoint Funzione File Bot
GET /api/bot/resolve-contact Risolvi nome contatto api.js
POST /api/bot/contact Upsert contatto api.js
POST /api/stats/increment Incrementa contatori api.js
POST /api/messages/sync Sincronizza messaggio api.js
POST /api/email/bot-generate-draft Genera bozza email AI api.js
POST /api/email/send/:id Invia bozza approvata api.js
GET /api/knowledge Carica regole KB aiClient.js

Token: isr-bot-service-2026 (header Authorization: Bearer)

Push Control — Flusso Dettagliato

Trigger

Il bot rileva intent email quando il messaggio del cliente contiene: preventivo, prezzo, costo, quotation, quote, price, listino, catalogo, informazioni, info, brochure, specifiche, demo, appuntamento, visita, showroom

Condizioni

  • Chat privata (non gruppo)
  • Contatto classificato come cliente (non interno)
  • Contatto ha un email nel DB

Tipi Email Generati

Keyword Tipo Email
preventivo, prezzo, costo, listino quote_send
demo, appuntamento, showroom, visita appointment_confirm
info, brochure, catalogo, specifiche product_info
altro follow_up

Email Relay — Brevo

Parametro Valore
Provider Brevo (ex-Sendinblue)
Metodo HTTP API (non SMTP)
Mittente info@italiasushirobot.com
Limite 300 email/giorno (piano gratuito)
Motivo DigitalOcean blocca SMTP outbound (25, 465, 587)

URL Shortener + QR — Flusso

Admin crea preventivo → QR generato con /q/123
→ QR cached su disco (/cache/qr/qr_123.png)
→ Cliente scansiona QR
→ GET /q/123 → redirect 301 → /preventivo/123
→ Landing mobile-first (< 5KB, < 1s su 4G)
→ Tracking: quotes.views++ nel DB
→ CTA: "Conferma via WhatsApp" (wa.me link)