Pannello · Home
UnicoAgent è l'ingresso su WhatsApp con cui un agente o un installatore raccoglie i dati e i documenti di una pratica e li consegna al CRM dell'azienda, via API o per email. Il lavoro nel gestionale (istruttoria, delibera, contratto) resta nel CRM. Il servizio non valuta il merito creditizio e non decide l'esito.
Il dialogo ha tre passaggi:
L'intelligenza artificiale legge i documenti e propone dei dati. L'agente li conferma. Un istruttore, nel CRM o nel pannello, decide sul merito.
Ogni messaggio è di una sola azienda. Il programma cerca il cellulare tra i fornitori attivi del core. Se lo trova, la conversazione è dell'azienda di UnicoAgent collegata a quel fornitore: prima per la società del core (core_company_id), altrimenti per l'identificativo dell'azienda in UnicoAgent. Se il numero non c'è, o il fornitore non è attivo, la conversazione è di Mediatore DEMO.
Un fornitore riconosciuto è salutato per nome. Un numero sconosciuto che completa un preventivo di finanziamento viene registrato come Segnalatore occasionale, non attivo: non vede gli importi e riceve telefono ed email del customer care.
| Azienda | Cosa fa su WhatsApp | Dove arriva la pratica |
|---|---|---|
| Races Finance S.r.l. | Solo finanziamento. Menu predefinito: Richiedi Finanziamento, Modifica Preventivo, Perfeziona Finanziamento, Stato Pratiche. I percorsi caricati sono richiesta, perfezionamento e documenti. | CRM unicofinance, API /api/agente/v1. Non ha un URL di preventivatore: il preventivo, per un produttore, parte per email all'istruttoria. |
| GBD Energy | Solo fornitura. Il menu ha due voci: Nuova offerta e Sottoscrivi contratto. Aprono i percorsi richiesta e perfezionamento di questa azienda. |
Nessun driver CRM: alla conferma la pratica va per email all'istruttoria, con gli allegati. Non produce i moduli dal core (manca il collegamento al tipo pratica). |
| Mediatore DEMO | Finanziamento e fornitura insieme. Il menu ha Richiedi Finanziamento, Modifica Preventivo, Perfeziona Finanziamento, Stato Pratiche e, in più, Nuova offerta e Sottoscrivi contratto. Queste due ultime voci sono i codici di percorso fornitura e sottoscrizione. |
Nessun driver CRM: la pratica perfezionata va per email. È l'azienda di chi scrive da un numero non in anagrafica. |
fornitura e sottoscrizione) e sono descritte in config/energy.php. Finché non si pubblicano anche su GBD, l'installatore di GBD non percorre quell'albero.Al primo messaggio, e quando si torna al menu, WhatsApp mostra le voci dell'azienda. Si risponde con i pulsanti o scrivendo il titolo della voce. Per il menu di finanziamento valgono anche i numeri e le parole brevi: 1 o «richiedi», 2 o «modifica», 3 o «perfeziona», 4 o «stato». Un codice pratica scritto nel menu (forma SIGLA-MMGG-HHmm) apre il perfezionamento di quella pratica.
Il primo contatto riceve anche il link alla sintesi dei comandi (/comandi). Nel profilo WhatsApp i messaggi per rompere il ghiaccio ripetono i titoli del menu di finanziamento, così il bot li tratta come una scelta.
Si scrivono da soli o con la barra (/menu, /help). Sono gli stessi registrati nel profilo.
| Comando | Effetto |
|---|---|
| menu | Chiude la conversazione in corso e mostra il menu. Il pulsante «Vai al menu» in fondo al preventivo fa la stessa cosa. |
| annulla | Chiude la conversazione, scrive «Operazione annullata» e mostra il menu. |
| help o aiuto | Elenco dei comandi, poi ripropone la domanda in corso (o il menu, se non c'è un dialogo aperto). |
| indietro | Torna alla domanda precedente. |
| salta | Salta la domanda, solo se il bot lo consente: lo scrive in fondo al testo. Non salva una risposta. |
| avanti | Durante l'attesa dei controlli sui documenti: prosegue senza aspettare. Vale anche «continua». |
Una conversazione lasciata sulla prima domanda per più di un'ora, senza risposte, viene chiusa: il messaggio successivo trova il menu. Se il dialogo è fermo da più di 24 ore, il bot chiede se continuare o ricominciare. Un saluto («ciao», «buongiorno» e simili) a una conversazione appena aperta, a cui non si è ancora risposto, riporta al menu.
Chi ha il numero WhatsApp associato a un utente del pannello, e solo se un percorso ha una copia di prova, vede in più le voci «Prova: Richiedi», «Prova: Perfeziona» e «Prova: Stato Pratiche». Le pratiche di quelle prove sono segnate come prova e il codice inizia con TST-.
Voce Richiedi Finanziamento. Vale per Races Finance e per Mediatore DEMO. La fase non chiede dati identificativi: se nel testo compaiono, il bot li rifiuta e ripete la domanda.
Il codice ha la forma SIGLA-MMGG-HHmm: sigla del fornitore (se manca, le iniziali del nome; senza nome, SEG), mese e giorno, ora e minuti. Due preventivi dello stesso fornitore nello stesso minuto: il secondo aggiunge una lettera (PM-1007-1435A).
Subito dopo il codice, per un produttore:
Un numero che non è un fornitore attivo non vede gli importi: viene registrato come Segnalatore occasionale e invitato a chiamare il customer care.
Modifica Preventivo elenca gli ultimi 5 preventivi non perfezionati. Il bot ne crea uno nuovo copiando le risposte e chiede solo i dati modificabili, mostrando il valore attuale. Si può tenere con «Mantieni attuale» o scrivendo ok. Il preventivo di partenza non cambia. Se per quel prodotto non c'è nulla di modificabile, il bot lo dice e torna al menu. Il pulsante «Modifica preventivo» sotto il messaggio di fine richiesta fa la stessa cosa, e compare solo se ci sono dati modificabili.
È il percorso di preventivazione per chi vende energia. Su Mediatore DEMO si chiama Nuova offerta e il codice del percorso è fornitura. Le domande, le stesse descritte per GBD in configurazione, sono queste:
Alla conferma il programma non chiama un CRM di preventivazione. Stima il consumo dalla spesa e, tra i prodotti energia attivi dell'azienda, sceglie per ogni fornitura il più conveniente adatto a profilo, residenza o tensione e consumo. Il messaggio indica il nome dell'offerta, una spesa mensile indicativa e, se c'è, il risparmio annuo stimato. Per la media tensione aggiunge che il prezzo finale si definisce con una consulenza. Se nessun prodotto è adatto, rimanda al customer care. La stima è dichiarata indicativa. Anche qui nasce un codice pratica, da usare per la sottoscrizione.
Su GBD Energy la voce di menu ha lo stesso titolo, «Nuova offerta», ma apre il percorso richiesta di GBD, oggi senza domande (vedi la sezione aziende).
Voce Perfeziona Finanziamento (Races e Mediatore DEMO). L'elenco propone gli ultimi 5 preventivi da perfezionare e le pratiche già inviate a cui manca ancora un documento obbligatorio. Si può anche scrivere il codice.
Nel riepilogo lo stato dei documenti è: ✅ a posto, 📎 ricevuto e in verifica, ⚠️ da correggere, ➖ mancante.
Alla ricezione di un file il bot risponde subito «Documento ricevuto» e, se la lettura automatica è attiva, che scriverà l'esito. Il controllo gira dopo, e il risultato arriva come messaggio WhatsApp sulla stessa chat.
I controlli predefiniti sono, per identità e codice fiscale, tipo di documento, coerenza con i dati noti ed estrazione; per il reddito, tipo e coerenza; per l'informativa, che sia il modulo firmato. Un passo del percorso può averne di propri. Il primo controllo che fallisce ferma la catena: non si propongono dati da quel documento.
Se la lettura automatica è spenta, il file viene solo archiviato: non parte l'analisi e non arriva l'esito su WhatsApp. Dal pannello l'operatore approva o rifiuta a mano. Approvare l'informativa sblocca i documenti in attesa.
Una risposta di testo che non supera il controllo (codice fiscale, IBAN, email, età, e gli altri agganciati alla domanda) non viene salvata: il bot ripete la domanda con il messaggio di errore di quel controllo.
Su Mediatore DEMO la voce è Sottoscrivi contratto (percorso sottoscrizione). Chiede il codice, l'informativa firmata, poi bolletta, documento d'identità, visura camerale se il preventivo è di un'azienda, ed estratto conto o IBAN. Questi documenti, tranne l'informativa, si possono saltare. Dopo l'attesa e la conferma dei dati letti, il bot chiede solo ciò che manca: per un'azienda parte dalla partita IVA e, se il Registro Imprese risponde, compila ragione sociale e sede; poi codice fiscale e generalità di chi firma, POD e PDR secondo la fornitura, fornitore attuale, pagamento (addebito in conto o bollettino), recapiti e il consenso a essere ricontattati. Il riepilogo chiede «Invia per la firma».
Quella conferma usa lo stesso invio del finanziamento: CRM se l'azienda ne ha uno, altrimenti email con dati e allegati. L'invio dei moduli al cliente per la firma con OTP avviene solo se l'azienda è impostata per produrre i documenti dal core (flag attivo, società del core e tipo pratica). Oggi nessuna delle tre aziende lo è, quindi la sottoscrizione non manda l'SMS di firma: la pratica risulta perfezionata e inviata in istruttoria, e parte l'avviso verso UnicoBPM descritto più sotto. Per un privato di un'azienda energia, dopo l'invio riuscito, il recupero dei dati catastali parte in background: se non si avvia, la pratica resta comunque perfezionata.
Voce presente per Races e per Mediatore DEMO (percorso documenti). Non è nel menu di GBD Energy.
Per caricare serve l'informativa già ricevuta: altrimenti il bot non apre il caricamento. Se dal pannello un operatore rifiuta un documento o chiede un'integrazione, l'agente riceve un messaggio WhatsApp con la nota.
Ogni azienda ha un solo CRM, scelto in Aziende → CRM dell'istruttoria. Alla conferma del perfezionamento il programma chiama quel CRM. La risposta attesa è il codice HTTP 200. Qualsiasi altro esito, o un servizio irraggiungibile, è un fallimento: l'agente vede il messaggio della sezione precedente e può riprovare dallo stesso riepilogo. Nei log restano il tipo di errore e il codice, non i dati del cliente.
simulated, la conferma risponde con la simulazione (di norma 200) e non chiama il CRM scelto in scheda, per nessuna azienda. È l'impostazione di sviluppo e test. In esercizio quel valore non deve essere simulated.| Scelta in scheda | Cosa succede all'invio |
|---|---|
| Vuota | Mediafacile se c'è l'URL dell'istruttoria; altrimenti email. |
| Solo email | Nessun CRM. Dati e allegati alla casella dell'istruttoria dell'azienda (se manca, alla casella indicata in configurazione). La pratica è inviata solo se la mail parte. In scheda pratica, la colonna Inviata per email mostra l'orario. |
| Mediafacile | Caricamento del lead con una chiamata al servizio (risposta XML). Vale 200 solo se lo stato inizia con OK. L'identificativo restituito, se c'è, finisce sulla pratica. I file non partono con questa chiamata: l'email, quando è il canale usato, è quella che porta gli allegati. |
| CRM generico (REST) | Una chiamata HTTPS configurata in scheda: indirizzo, metodo, formato JSON o form, autenticazione, modello del corpo, codici di successo e dove leggere l'esito e l'id. Senza modello si invia il formato unico (riferimento, prodotto, risposte, cliente, agente, consenso, elenco documenti senza il contenuto dei file). L'id letto nella risposta è salvato sulla pratica. |
| unicofinance | Il contratto descritto sotto. È il driver di Races Finance. |
La scheda azienda contiene l'indirizzo di base (https), il token e il segreto. Si ottengono in unicofinance con il comando che registra il client unicoagent; i valori si inseriscono una volta e non si riportano nei messaggi. L'autenticazione è un token Bearer e una firma HMAC: il dettaglio è in docs/agent-api.md di unicofinance.
Alla conferma, in modo sincrono, UnicoAgent crea cliente e pratica con POST /api/agente/v1/richieste. L'operazione è idempotente sul codice pratica di UnicoAgent: un nuovo tentativo non duplica la richiesta. Sulla pratica viene salvato il codice restituito dal CRM. Mancano il codice fiscale del cliente o la partita IVA dell'agente, oppure l'indirizzo, il token o il segreto: l'invio non parte e l'agente vede il fallimento. Un rifiuto del CRM (per esempio cliente già di un altro agente, o agente sconosciuto) è lo stesso fallimento, con il codice di errore solo nei log.
Se questa prima chiamata riesce, la pratica è perfezionata e parte un job che consegna i file non ancora inviati, uno alla volta, con POST /api/agente/v1/richieste/{codice}/documenti. Si saltano i documenti rifiutati e quelli senza file. Un file già consegnato non viene rimandato. Insieme al file parte l'esito dell'analisi già fatta qui (solo esito, tipo e differenze; i dati letti si aggiungono se in scheda l'analisi è impostata su «anche i dati letti»).
Lo stesso driver sa anche, senza che la chat WhatsApp li chiami ancora:
Il codice del modulo, in queste chiamate, è l'identificativo del modulo in unicofinance. Il riferimento della firma è l'identificativo del documento lì.
SendDocumentsToCrm riprova da solo fino a 5 volte, con attese di 1 minuto, 5 minuti, 15 minuti e 1 ora. In più, ogni ora, il comando crm:send-documents rimette in coda le pratiche perfezionate che hanno ancora allegati non consegnati. A mano: php artisan crm:send-documents --loan=CODICE. I file già segnati come consegnati non ripartono.pratica.perfezionata (prodotto, codice pratica del CRM, nome e partita IVA dell'agente; niente dati del cliente né file). Il job ritenta dopo 1, 5 e 15 minuti, poi dopo 1 e 4 ore. Senza indirizzo e chiave del bridge, o per una pratica di prova, non si invia nulla. Un secondo invio dello stesso codice non apre due processi.Si apre da /admin con email e password. Il menu laterale ha Pratiche, Conversazioni, il gruppo Settings (Percorsi di configurazione, Documenti per il finanziamento, Controlli sulle risposte) e il gruppo Anagrafiche (Azienda, Produttori, Utenti). Lo switch azienda filtra le tabelle sulla company scelta.
Pratiche elenca le richieste, con filtri per stato, origine (reale o di prova) e prodotto. La scheda mostra codice, agente, stato, quando è stata ricevuta e verificata l'informativa, le risposte del preventivo, i dati personali e le difformità segnalate dal bot.
Conversazioni mostra numero, fornitore, percorso, domanda corrente e stato. I dati in corso non sono visibili: si cancellano quando la conversazione si chiude. I dati definitivi stanno sulla pratica.
Le domande stanno nelle tabelle e si modificano senza programmare, per ogni azienda. Per ogni percorso si cambiano intestazione, testi, opzioni, salti, domande saltabili e controlli. Il pannello rifiuta i salvataggi che bloccherebbero gli agenti (salti mancanti, troppe opzioni per WhatsApp, testi troppo lunghi).
Altri pulsanti: Grafo delle domande ed Esporta configurazione. Su una domanda a scelta, Modificabile nel preventivo la include nella modifica del preventivo. Sulle domande di file si agganciano i controlli documento; sulle altre, i controlli sulla risposta.
Documenti per il finanziamento: catalogo per tipo di finanziamento. Il nome sta nella lista WhatsApp (massimo 24 caratteri). Le modifiche valgono per le pratiche nuove.
Controlli sulle risposte: elenco, con dove sono usati. Cerca nuovi controlli registra le classi aggiunte al programma. Un controllo usato da una domanda non si disattiva.
Una voce di menu può essere il codice di un percorso di quell'azienda, non solo le quattro voci standard. È così che Mediatore DEMO aggiunge fornitura e sottoscrizione accanto a Richiedi, Modifica, Perfeziona e Stato.
Una scheda per company. I dati del titolare compaiono nell'informativa pubblica. In sintesi operativa:
| Campo | Effetto |
|---|---|
| Ragione sociale, sede, email privacy, DPO | Titolare nell'informativa e nella pagina di trasparenza. |
| Settore e prodotti attivi | Finance, call center, hotel o energia, e i prodotti del catalogo. Per l'energia, i prodotti attivi sono quelli tra cui si sceglie l'offerta. |
| Telefono ed email del customer care | Indicati al segnalatore occasionale e quando non si calcola un'offerta. |
| Email dell'istruttoria | Per la pratica perfezionata, la casella dell'azienda del numero WhatsApp. Per il solo preventivo di finanziamento, la casella della prima azienda in archivio. Se la casella manca, si usa quella indicata in configurazione. |
| URL del preventivatore | Se compilato, il preventivo di finanziamento chiede gli importi al CRM. Se vuoto, parte l'email. |
| CRM dell'istruttoria | Un solo driver per azienda, come nella sezione consegna. La configurazione (indirizzi, token, segreti) resta in scheda e non va copiata altrove. |
| Voci del menu WhatsApp | Se compilate, sostituiscono del tutto il menu predefinito. Vuote, resta Richiedi / Modifica / Perfeziona / Stato. |
| Società del core e tipo pratica | Insieme al flag di produzione documenti, abilitano moduli e firma OTP. Senza questi tre elementi la firma dalla chat non parte. |
Anagrafica dei fornitori attivi, sul core. La sigla apre il codice dei preventivi: se è vuota, il programma la ricava dal nome e la salva. Il cellulare è quello con cui forWhatsApp riconosce chi scrive. I numeri sconosciuti che completano un preventivo compaiono come Segnalatore occasionale, non attivi: per convenzionarne uno si correggono i dati, il tipo e il flag attivo, e si indica l'azienda.
Chi accede al pannello. Il numero WhatsApp dell'utente abilita le voci di prova nel menu del bot.
| Sintomo | Cosa controllare |
|---|---|
| Il bot non risponde | Dashboard → Verifica WhatsApp. Un token scaduto è la causa più comune: va rigenerato e aggiornato nella configurazione del server, non in questo manuale. |
| Menu di un'altra azienda | Il cellulare è di un fornitore attivo di quell'azienda, oppure non è in anagrafica e quindi vale Mediatore DEMO. |
| «Questo servizio non è ancora attivo» | Il percorso scelto non ha un albero pubblicato per quell'azienda. È il caso, oggi, di Nuova offerta e Sottoscrivi contratto su GBD Energy. |
| I documenti restano in attesa | L'informativa non è verificata. In pratica, documento Informativa firmata: Approva, oppure chiedi un nuovo invio. |
| I documenti non vengono letti | Dashboard → Verifica AI. Nel frattempo si controllano a mano. |
| Invio pratica fallito | Scheda azienda: driver, e per unicofinance indirizzo, token e segreto; per l'email, la casella e la posta. Se il driver globale è simulated, il CRM reale non viene chiamato. L'agente riprova dal riepilogo, oppure si usa Invia per email (forza). |
| La pratica c'è nel CRM ma mancano i file | Solo unicofinance consegna i file dopo. Il job ritenta da solo; altrimenti php artisan crm:send-documents --loan=CODICE. |
| Le pratiche scadute non si cancellano | In dashboard la pulizia risulta mai eseguita: manca la pianificazione sul server (il comando previsto è giornaliero). |
| Una domanda del bot è sbagliata | Percorsi di configurazione della company → copia di prova → prova dal menu → pubblica. |