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à costruitoIl meccanismo di dispatch è scritto e migrato nella nostra piattaforma vocale: la tabella `courier_calls` con sette stati possibili, tre tentativi predefiniti, pausa di 120.000 ms tra essi e risultato della chiamata mantenuto in modo strutturato, più cinque funzioni server che la usano — avvio della chiamata al corriere, verifica del risultato, sweep per le chiamate rimaste bloccate, identificazione di chi richiama e webhook dopo la chiamata. La seconda implementazione è il filtro di output scritto per un cliente del settore trasporti, che elimina ricorsivamente i campi di contatto dell’autista dal risultato dello strumento, mantenendo i numeri della centrale. La riserva, detta prima che lo chieda: la parte telefonica passa attraverso un host SIP, e l’host attraverso cui passano le nostre linee di test non risponde alla data di scrittura — non le diamo un numero dimostrativo che non potremmo sollevare davanti a lei.
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.