Vai al contenuto
megapromotingParliamone

aichat.md — dirigenza delle interazioni

Cosa succede a un messaggio, dal secondo in cui arriva da noi fino al momento in cui qualcuno lo marca come risolto.

Un assistente che risponde bene è facile da mostrare in un demo. Ciò che è difficile da mostrare, e ciò che conta davvero, è il percorso: come arriva il messaggio, cosa si fa per non rispondere due volte, quanto si aspetta prima di rispondere, da dove si prende l’informazione, quale strumento viene chiamato, dove si ferma l’agente e chi viene chiamato al suo posto. Qui sotto c’è il percorso reale, con i numeri del codice. Inclusa la parte dei commenti, che si comporta in modo completamente diverso rispetto a un messaggio privato — e deve comportarsi in modo diverso.

Traseul

Nove fasi, nell’ordine in cui avvengono

  1. 01

    1. L’ingresso, sul canale su cui ha scritto la persona

    Sei vie di ingresso, con meccanismi diversi. Messenger, Instagram Direct e WhatsApp Cloud API arrivano tramite webhook, nello stesso punto di ingresso, ramificato in base al tipo di oggetto. Il widget del sito entra direttamente su una rotta propria. Telegram non arriva tramite webhook, ma tramite polling continuo. E 999.md non ha né webhook né polling continuo — ha un orologio che guarda i thread ogni venti secondi.

    Ogni ricezione viene scritta in un registro degli eventi, con lo stato della firma crittografica e il contenuto grezzo, prima che venga elaborato qualcosa. Il motivo è semplice: quando un messaggio “non è arrivato”, la prima domanda è se sia arrivato da noi oppure no, e la risposta deve essere una riga in una tabella, non un’ipotesi. Il routing canale → agente si fa tramite una tabella di corrispondenza tra l’identificatore della pagina e il servizio, quindi lo stesso account può ospitare più agenti su canali diversi.

  2. 02

    2. La deduplicazione, prima di tutto il resto

    L’identificatore del messaggio viene inserito in una chiave Redis con scrittura condizionata — se la chiave esiste già, il messaggio è duplicato e si ferma qui. La durata della chiave è di 24 ore. Se Redis non risponde, si passa a una memoria locale con soglia di pulizia a 5.000 voci, quindi la deduplicazione non scompare, diventa solo più corta di memoria.

    La finestra è stata di 120 secondi fino al 10 luglio 2026, quando è stata aumentata a 24 ore dopo un incidente di risposte duplicate. Il commento che spiega la modifica è scritto accanto al valore, nel codice. Qui vengono scartati anche gli sticker e il pulsante di “like”, che altrimenti diventerebbero domande a cui l’agente cercherebbe di rispondere.

  3. 03

    3. Il buffer — tre messaggi scritti di fila diventano un’unica domanda

    Le persone non scrivono un paragrafo. Scrivono “ciao”, poi “ho una domanda”, poi la domanda. Un assistente che risponde a ogni riga separatamente è fastidioso e sembra stupido. Per questo i messaggi vengono raccolti in un buffer sulla coppia mittente–pagina, e il cronometro si resetta a ogni nuovo messaggio. Quando la persona tace, si risponde una sola volta, a tutto.

    Su Messenger e Instagram, l’attesa predefinita è di 15 secondi; su WhatsApp, di 5. Si accettano al massimo cinque messaggi nel buffer — il sesto sostituisce l’ultimo — e il testo concatenato viene tagliato a 2.000 caratteri. Il valore dell’attesa è per agente, non globale: viene letto dalla configurazione dell’agente e può essere abbassato a zero per uno scenario in cui la velocità conta più della coerenza. Subito prima dell’invio viene ricontrollato nel database se nel frattempo il thread è stato messo in pausa — perché in quei 15 secondi può essere intervenuto un umano.

  4. 04

    4. La lettura dalle vostre fonti

    La domanda viene trasformata in un vettore e si cerca nei frammenti che avete caricato. La ricerca è ibrida: combina la corrispondenza per parole con la vicinanza vettoriale, in proporzione di tre a sette. Vengono caricati fino a 300 frammenti candidati dalla base di conoscenza dell’agente, si calcola il punteggio combinato per ciascuno e si conservano i migliori — cinque sui canali di messaggistica, dieci sul widget.

    Il numero di frammenti è configurabile per agente, tra 1 e 20. I frammenti vengono tagliati all’indicizzazione a 1.200 caratteri. La selezione finale avviene in base al rango, non a una soglia assoluta di similarità: si ordinano in base al punteggio combinato e si prendono i primi. La configurazione ha anche un campo soglia, ma nel percorso di ricerca il filtro effettivo conserva qualunque frammento con punteggio sopra zero e taglia in base alla posizione — lo diciamo perché è la differenza tra ciò che è scritto nel pannello e ciò che fa il codice. Ogni interrogazione può essere registrata con i frammenti restituiti e i loro punteggi, così da poter rispondere a “perché ha detto questo”.

  5. 05

    5. Gli strumenti — quando l’agente deve fare qualcosa, non solo dire

    Se la risposta richiede un’azione, il modello richiama uno strumento. Uno strumento è di tre tipi: un webhook verso il Suo sistema, un frammento di codice eseguito in isolamento, oppure uno incorporato nella piattaforma. Il ciclo modello–strumento–modello ha al massimo cinque round, in entrambi i motori. Dopo cinque, si ferma e risponde con ciò che ha.

    Il tempo massimo predefinito di uno strumento è di 15 secondi. Gli strumenti incorporati oggi esistenti: ricerca nella pagina web, ora corrente, calcolatrice, scrittura in un foglio di calcolo Google, notifica di lead in Telegram, invio di SMS, sei strumenti di prenotazione per un sistema esterno di booking, e tre per il catalogo di un negozio — ricerca, matching e scheda prodotto. Il catalogo legge in tempo reale, con memoria buffer di dieci minuti, fino a 30 pagine e un tempo massimo di 20 secondi. Esiste un insieme di strumenti marcati come interni, il cui risultato non arriva mai nel testo visto dal cliente.

  6. 06

    6. La risposta, con la cronologia davanti

    Il modello riceve la domanda, i frammenti trovati, i risultati degli strumenti e la cronologia della conversazione — gli ultimi 25 messaggi sul percorso principale, 50 sul nuovo motore. La chiamata ha un tempo massimo di 120 secondi, con due ritentativi; la chiamata dopo gli strumenti, 90 secondi. La risposta parte sul canale da cui è arrivata la domanda, nella lingua in cui è stata posta.

    Il nuovo motore di agenti si attiva tramite interruttore, per agente, per account o globalmente — non si cambia tutto in una volta. In questo modo si può confrontare il comportamento vecchio con quello nuovo sullo stesso traffico, che è l’unico modo onesto per dire che qualcosa è migliore.

  7. 07

    7. La consegna a un umano

    Il thread ha uno stato: bot o umano. Il passaggio può avvenire in quattro modi. Tramite parole chiave — una lista di diciassette espressioni in rumeno, inglese e russo, con le singole parole confrontate sul confine di parola, le espressioni con corrispondenza nel testo. Tramite frustrazione — una seconda lista, sempre di diciassette. Tramite ripetizione — la stessa domanda posta tre volte negli ultimi dieci messaggi, conteggiata solo per messaggi più lunghi di dieci caratteri. Oppure tramite la decisione del modello, che può chiedere la consegna con un marcatore speciale.

    La modalità è per agente ed è disattivata di default — si sceglie tra „disattivato”, „tramite parole chiave” e „intelligente”. Quando si attiva: il thread passa a „in attesa di un umano”, si registra il momento, il cliente riceve un messaggio di conferma nella sua lingua, e l’agente tace. Non risponde in parallelo, non completa, non si scusa. Tace, e basta. Esiste anche il protocollo ufficiale di consegna di Meta, che sposta il controllo del thread verso la casella della pagina; il canale di riserva continua a salvare i messaggi anche quando il controllo è all’umano, così la cronologia non abbia un buco.

  8. 08

    8. Quando l’operatore risponde dalla pagina, l’agente si ferma da solo

    Se un umano scrive al cliente direttamente dall’interfaccia Meta, la piattaforma vede l’eco di quel messaggio e mette automaticamente il thread in pausa, senza che qualcuno prema qualcosa. La durata predefinita è di 30 minuti, configurabile tra cinque minuti e sette giorni. È il caso più facile da perdere di vista quando si progetta un assistente: nessuno preme un pulsante di presa in carico, l’umano semplicemente risponde, e se la piattaforma non lo nota, il cliente riceve due voci contemporaneamente.

    Il ritorno ha tre vie. Riattivazione automatica dopo 30 minuti senza risposta umana — un ciclo verifica ogni minuto e riattiva in lotti di massimo 50 thread, ripulendo anche la memoria della conversazione così l’agente non continui una discussione che non ha portato avanti. La scadenza della pausa, verificata separatamente. E il pulsante nel pannello: presa in carico, risoluzione, ritorno al bot, arresto completo del bot.

  9. 09

    9. La chiusura — e ciò che non si chiude da solo

    Il thread si marca risolto manualmente, dal pannello, con note di risoluzione e con un messaggio di sistema scritto nella cronologia. Non esiste chiusura automatica per inattività: un thread lasciato aperto resta aperto. Abbiamo scelto di dirlo invece di lasciare l’impressione che si faccia pulizia da solo.

    Ciò che si chiude da solo sono tuttavia due cose: la riattivazione dell’agente dopo 30 minuti, descritta sopra, e le escalation inviate in Telegram, che dopo 30 minuti senza risposta vengono marcate come scadute e restituiscono il thread all’agente, con il motivo scritto. Sopra tutto gira un indicatore di tempo di risposta: oltre un’ora diventa avviso, oltre quattro ore diventa superamento. Colora, non chiude.

Asistentul magazinuluiSe potrivește cu aparatul meu?Spune-mi modelul aparatului.Verific variantele din catalog.Catalog conectat · informație verificatăEchipa poate prelua conversația.
Schemă explicativă · mesaj, context, acțiune, predare

Comentarii

I commenti: perché non sono messaggi e perché non si trattano come messaggi

Un messaggio privato ha un solo lettore. Un commento ha tutti i lettori della pagina, inclusa la concorrenza, incluso qualcuno che cerca un motivo di scandalo. Una buona risposta in privato può essere un disastro in pubblico — per esempio un prezzo, una disponibilità, o la conferma che qualcuno è davvero un vostro cliente. Per questo i commenti hanno un percorso separato, regole separate e un valore predefinito che pende verso la discrezione.

Come arriva un commento nel sistema

La pagina si iscrive a campi diversi sulle due reti: su Facebook al flusso della pagina, su Instagram esplicitamente ai commenti e ai commenti delle dirette. Arrivano allo stesso punto di ingresso dei messaggi, ma su un ramo separato, riconosciuto dalla presenza di una lista di cambiamenti invece che di una lista di messaggi. Il formato differisce tra le reti e viene rilevato separatamente per ciascuna. Si leggono anche il commento padre, per sapere se è una risposta a un altro commento, e il post o il materiale su cui è apparso.

Solo i commenti nuovi attivano qualcosa

Meta invia lo stesso evento per più azioni. Solo l’aggiunta di un commento avvia l’agente. La modifica, la cancellazione, l’occultamento e la riattivazione vengono registrati e si fermano lì. La variazione del numero di like viene ignorata senza lasciare traccia, perché altrimenti il registro sarebbe puro rumore.

Quattro filtri prima che l’agente veda il testo

I commenti della pagina stessa vengono scartati — altrimenti l’agente si risponderebbe da solo, all’infinito. I commenti già elaborati vengono scartati in base all’identificatore univoco del commento, che ha vincolo di unicità nel database. I commenti vuoti, quelli di al massimo due caratteri e quelli formati solo da emoji vengono scartati. E i testi che contengono numeri di telefono lunghi o indirizzi web passano attraverso un filtro antispam con quattro modelli e si fermano, marcati come tali.

Pubblico o privato: il valore predefinito è privato

Ogni agente ha quattro interruttori separati, due per Facebook e due per Instagram: risposta pubblica attivata o disattivata, risposta privata attivata o disattivata. Sopra di essi c’è una modalità generale con tre posizioni — disattivata, automatica, o con approvazione. Quando la configurazione manca o non si può leggere, il valore di riserva nel codice non è «rispondi pubblicamente», ma «non rispondere pubblicamente, rispondi in privato». È una scelta deliberata: un errore di configurazione non ha il diritto di far uscire testo sul muro pubblico di qualcuno.

Agente disattivato significa commenti disattivati

Se l’assistente è archiviato, inattivo, disattivato o messo in pausa, oppure se il bot è disattivato dall’account del cliente, la modalità commenti diventa automaticamente «disattivata», indipendentemente da cosa indichino gli interruttori dei commenti. Un solo posto da disattivare, non quattro da ricordare.

Ciò a cui non si risponde pubblicamente, e quanto è rigida la regola

L’istruzione data al modello per una risposta pubblica è esplicita: massimo due frasi, tono breve e cordiale, invito a scrivere in privato per i dettagli, e divieto di fornire informazioni dettagliate o prezzi in pubblico. Sopra di essa, un limite rigido: la risposta pubblica viene tagliata a 300 caratteri. Sopra entrambi, il testo libero che scrivete voi come istruzioni proprie, separatamente per il pubblico e per il privato. Diciamo onestamente quanto è rigida la regola: è un’istruzione di prompt più un limite di lunghezza, non un filtro deterministico che potrebbe garantire che un prezzo non compaia mai. Quando la garanzia deve essere rigida, si disattiva la risposta pubblica e si lascia solo quella privata, oppure si passa alla modalità con approvazione.

Una sola volta ogni 30 secondi, sullo stesso post

La risposta pubblica ha un contatore per post: al massimo uno ogni 30 secondi. Il motivo è ciò che succede quando un post prende piede — trenta commenti in due minuti, e la pagina si riempie di risposte identiche di un robot, sotto ciascuno. Il contatore si pulisce da solo, conservando gli ultimi mille post seguiti.

Instagram non consente un messaggio privato su un sub-commento

È una regola della piattaforma, non nostra, ed è verificata in tre punti diversi del codice, su tutte e tre le vie attraverso cui si potrebbe arrivare a un messaggio privato. Quando il commento ha un padre e la rete è Instagram, l’invio in privato viene saltato e nel registro viene scritto il motivo esatto. Non si prova e non si fallisce in silenzio — si salta, esplicitamente.

Dal commento alla conversazione

Il passaggio avviene tramite il meccanismo ufficiale: il messaggio privato viene inviato usando l’identificatore del commento come destinatario, non l’identificatore della persona. Da quel momento esiste un normale thread di messaggi, con tutte le regole di cui sopra — buffer, sorgenti, strumenti, passaggio all’umano. Il thread viene contrassegnato come proveniente dai commenti, e il commento ricevuto viene salvato nella cronologia della conversazione con un tipo proprio, così si vede da dove è partito tutto.

Modalità con approvazione: l’agente scrive, l’essere umano pubblica

Quando la modalità è „con approvazione”, la risposta generata non parte. Viene salvata come bozza, in attesa, e appare in una coda nel pannello, con contatore. Da lì viene approvata o respinta, pezzo per pezzo. La pubblicazione approvata passa attraverso un ponte interno protetto da un confronto di firma a tempo costante — una risposta approvata non può essere iniettata dall’esterno.

Cosa può fare un essere umano, manualmente

Nascondere un commento, con il meccanismo adatto a ciascuna rete, e marcare lo stato nel database. Eliminare, con il contrassegno di eliminato. Nascondere in massa, al massimo 25 commenti in un lotto. Chiudere i commenti su un contenuto Instagram. E nascondere i commenti di una trasmissione live, su un percorso separato. Sono azioni manuali, non automatiche. Non esiste un elenco di parole vietate che nasconda i commenti da solo, e non affermiamo che esista.

Predarea

Quando l’agente non ha più nulla da dire

L’escalation non è un fallimento dell’agente. È la sua funzione più importante, perché l’unica cosa peggiore di un assistente che non sa è un assistente che non sa e continua a parlare. Ciò che segue è come appare la consegna, chi viene avvisato, cosa succede alla risposta dell’essere umano e come rientra l’agente.

La scheda che parte nel gruppo Telegram

Uno strumento incorporato invia il caso in un gruppo, con un’intestazione che dice subito che tipo di caso è: urgenza, richiesta di operatore, segnalazione di abuso, escalation di cliente insoddisfatto, nuovo lead, o nuova conversazione. Il tipo viene rilevato dal testo, con pattern separati per ciascuno. Il messaggio del cliente viene allegato verbatim sulla scheda — l’essere umano che prende in carico vede esattamente ciò che ha scritto il cliente, non un riassunto.

La presa in carico è una corsa, ed è trattata come una corsa

La scheda ha due stati: aperto e bloccato. La presa in carico avviene con una scrittura condizionata che cambia lo stato solo se era ancora aperto, e il codice verifica effettivamente quante righe sono state modificate. Due operatori che premono nello stesso secondo non la prendono entrambi. Il secondo scopre che è già stata presa in carico, non arriva a scrivere in parallelo.

La risposta dell’operatore viene riscritta nella lingua del cliente

L’operatore scrive nel gruppo, nella propria lingua e nel proprio stile, a volte in modo telegrafico. Prima della consegna, il testo viene riscritto nella lingua in cui parla il cliente e nel tono dell’agente, senza aggiungere fatti nuovi. Ciò che dice l’operatore resta ciò che viene trasmesso; cambia solo la forma. Il routing della risposta verso la conversazione corretta avviene in base al messaggio a cui si è risposto, e se manca, in base all’unico caso bloccato da quell’operatore — e viene rifiutato esplicitamente se ne ha due, invece di indovinare.

Chi viene avvisato, e cosa non viene più avvisato

Il pannello riceve una notifica in tempo reale tramite connessione permanente. Le pause attivate da regole inviano una notifica via email o in Telegram, a scelta — sono gli unici due canali accettati nel codice. Diciamo anche cosa non funziona più: la notifica via email per un thread preso in carico da un essere umano è stata disattivata intenzionalmente nel luglio 2026, e il percorso interno è rimasto come risposta vuota. Se fate affidamento su quell’email, non arriva. Preferiamo che lo sappiate qui.

Le regole di pausa, oltre le parole chiave

Si possono scrivere regole che mettono il thread in pausa alla comparsa di un numero di telefono, di un indirizzo email, di un insieme di parole fino a cento, o su richiesta esplicita di un essere umano. Sopra di esse, due tipi valutati dal modello: intenzione e sentimento. La durata della pausa è tra un minuto e sette giorni; il valore zero significa pausa finché qualcuno non la rimuove manualmente.

Ogni cambio di mano viene registrato

Esiste un registro delle prese in carico con sei azioni distinte: presa in carico da parte di un essere umano, presa in carico da parte di un bot, riattivazione automatica, presa in carico da parte di un operatore, rilascio da parte dell’operatore e ripresa da parte dell’agente. Non è una colonna di stato che viene sovrascritta — è uno storico. Quando qualcuno chiede „chi parlava con il cliente a quell’ora”, la risposta è una riga, non una ricostruzione.

Ciò che non esiste, così da non basarvi su ciò che non c'è

Non esiste un instradamento automatico verso courier o squadre sul campo; ho cercato in tutto il codice e non c'è. Non esiste la chiusura automatica delle conversazioni per inattività. Non esiste un elenco globale di parole vietate per i commenti. Ciò che esiste sono i quattro trigger di handoff, l'escalation in Telegram con presa atomica, le regole di pausa e la riattivazione automatica dopo 30 minuti.

Fiecare afirmație de pe această pagină a fost citită din codul platformei — 66 citări cu fișier și linie, păstrate în depozitul nostru. Le parcurgem împreună, la cerere.