Soluții · Transport & logistică
Când clientul întreabă unde e coletul, agentul nu ghicește: sună curierul, îl întreabă și se întoarce cu răspunsul.
Dispecerizarea prin voce, construită ca mecanism, nu ca promisiune: un tabel cu stări explicite, trei încercări la două minute distanță, rezultatul apelului scris structurat și un filtru care scoate numărul șoferului din tot ce ajunge la model, ca să nu poată fi dictat clientului.
Construit dejaMecanismul 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.
Într-o firmă de transport sau de livrare, cele mai multe apeluri primite sunt aceeași întrebare pusă de oameni diferiți: unde e marfa, la ce oră ajunge, de ce nu a ajuns. Răspunsul nu e într-un document și nu e într-un sistem — e în capul șoferului, care conduce. Dispecerul face legătura: preia apelul clientului, sună șoferul, revine la client. Munca asta ocupă un om întreg și se face de o sută de ori pe zi, cu aceleași trei propoziții.
Am construit exact acest lanț, ca mecanism cu stări, nu ca funcție de marketing. Un agent vorbește cu clientul. Când are nevoie de un răspuns pe care nu îl are, cheamă o funcție care pornește un al doilea apel — către curier — legat de conversația din care a plecat. Apelul acela are propriul rând într-un tabel, cu status care trece prin `calling`, `in_progress`, `retrying`, `completed`, `failed`, `no_answer`, `timeout`, cu numărul încercării, cu maximum trei încercări și o pauză de două minute între ele. Rezultatul se scrie structurat: rezumatul a ce a spus curierul, timpul estimat, poziția.
Partea care se uită ușor și pe care noi o tratăm ca pe o cerință, nu ca pe o precauție: numărul de telefon al șoferului nu are voie să ajungă la client. Nu e o instrucțiune scrisă în promptul agentului, pentru că o instrucțiune într-un prompt se poate ocoli. E un filtru care parcurge recursiv rezultatul uneltei și elimină câmpurile de contact ale șoferului înainte ca acel rezultat să ajungă la model — păstrând numerele dispeceratului. Ce a fost eliminat nu poate fi dictat, indiferent cum e întrebat agentul.
Iar limita cea mai importantă e una de infrastructură, nu de inteligență: un agent vocal la telefon depinde de o gazdă SIP între operatorul tău și platformă. Când acea gazdă cade, apelurile nu pleacă, iar semnătura defectului e recunoscibilă — cerere expirată, identificator de apel gol, durată zero. Gazda prin care trec liniile noastre de test nu răspunde la data scrierii acestei pagini. Pe web, traseul vocal e verificabil azi; la telefon, prima etapă a oricărei lucrări e să stabilim pe ce gazdă intră numerele tale.