Soluzioni · Trasporti e logistica
Quando il cliente chiede dove si trova il pacco, l'agente non indovina: chiama il courier, gli chiede e torna con la risposta.
Lo smistamento vocale, costruito come meccanismo, non come promessa: una tabella con stati espliciti, tre tentativi a due minuti di distanza, il risultato della chiamata scritto in modo strutturato e un filtro che estrae il numero del conducente da tutto ciò che arriva al modello, così che non possa essere dettato al cliente.
Già costruitoMecanismul de dispecerizare e scris și migrat în platforma noastră vocală: tabela `courier_calls` cu șapte stări posibile, trei încercări implicite, pauză de 120.000 ms între ele și rezultatul apelului păstrat structurat, plus cinci funcții de server care o folosesc — inițierea apelului către curier, verificarea rezultatului, mătura pentru apelurile rămase agățate, identificarea celui care sună înapoi și webhookul de după apel. A doua implementare e filtrul de ieșire scris pentru un client din transport, care elimină recursiv câmpurile de contact ale șoferului din rezultatul uneltei, păstrând numerele dispeceratului. Rezerva, spusă înainte să întrebi: partea de telefon trece printr-o gazdă SIP, iar gazda prin care merg liniile noastre de test nu răspunde la data scrierii — nu-ți dăm un număr de demonstrație pe care nu l-am putea ridica în fața ta.
In un'azienda di trasporto o di consegna, la maggior parte delle chiamate in arrivo è la stessa domanda posta da persone diverse: dove si trova la merce, a che ora arriva, perché non è arrivata. La risposta non è in un documento e non è in un sistema — è nella testa del conducente, che guida. Il dispatcher fa il collegamento: prende la chiamata del cliente, chiama il conducente, ritorna al cliente. Questo lavoro occupa un'intera persona e si fa cento volte al giorno, con le stesse tre frasi.
Abbiamo costruito esattamente questa catena, come meccanismo con stati, non come funzione di marketing. Un agente parla con il cliente. Quando ha bisogno di una risposta che non ha, chiama una funzione che avvia una seconda chiamata — verso il courier — collegata alla conversazione da cui è partita. Quella chiamata ha una propria riga in una tabella, con uno status che passa per `calling`, `in_progress`, `retrying`, `completed`, `failed`, `no_answer`, `timeout`, con il numero del tentativo, con un massimo di tre tentativi e una pausa di due minuti tra essi. Il risultato viene scritto in modo strutturato: il riepilogo di ciò che ha detto il courier, il tempo stimato, la posizione.
La parte che si dimentica facilmente e che noi trattiamo come un requisito, non come una precauzione: il numero di telefono del conducente non deve arrivare al cliente. Non è un'istruzione scritta nel prompt dell'agente, perché un'istruzione in un prompt può essere aggirata. È un filtro che percorre ricorsivamente il risultato dello strumento ed elimina i campi di contatto del conducente prima che quel risultato arrivi al modello — mantenendo i numeri dello smistamento. Ciò che è stato eliminato non può essere dettato, indipendentemente da come venga interrogato l'agente.
E il limite più importante è uno di infrastruttura, non di intelligenza: un agente vocale al telefono dipende da un host SIP tra il vostro operatore e la piattaforma. Quando quell'host cade, le chiamate non partono, e la firma del guasto è riconoscibile — richiesta scaduta, identificatore di chiamata vuoto, durata zero. L'host attraverso cui passano le nostre linee di test non risponde alla data di stesura di questa pagina. Sul web, il percorso vocale è verificabile oggi; al telefono, la prima fase di ogni lavoro è stabilire su quale host entrano i vostri numeri.