Rozwiązania · Transport i logistyka
Gdy klient pyta, gdzie jest przesyłka, agent nie zgaduje: dzwoni do kuriera, pyta i wraca z odpowiedzią.
Dyspozytornia głosowa, zbudowana jako mechanizm, a nie jako obietnica: tabela z jednoznacznymi stanami, trzy próby w odstępach dwóch minut, strukturalnie zapisany wynik połączenia i filtr, który usuwa numer kierowcy ze wszystkiego, co trafia do modelu, aby nie dało się go podyktować klientowi.
Już zbudowaneMecanismul 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.
W firmie transportowej lub dostawczej większość odebranych połączeń to to samo pytanie zadane przez różne osoby: gdzie jest towar, o której godzinie dotrze, dlaczego jeszcze nie dotarł. Odpowiedź nie jest w dokumencie i nie jest w systemie — jest w głowie kierowcy, który prowadzi. Dyspozytor łączy te elementy: odbiera połączenie klienta, dzwoni do kierowcy, wraca do klienta. Ta praca zajmuje jedną osobę w pełni i wykonuje się ją sto razy dziennie, używając tych samych trzech zdań.
Zbudowaliśmy dokładnie taki łańcuch, jako mechanizm ze stanami, a nie jako funkcję marketingową. Agent rozmawia z klientem. Gdy potrzebuje odpowiedzi, której nie ma, wywołuje funkcję, która uruchamia drugie połączenie — do kuriera — powiązane z rozmową, z której wyszła. To połączenie ma własny wiersz w tabeli, ze statusem przechodzącym przez `calling`, `in_progress`, `retrying`, `completed`, `failed`, `no_answer`, `timeout`, z numerem próby, z maksymalnie trzema próbami i z dwu-minutową przerwą między nimi. Wynik zapisuje się strukturalnie: podsumowanie tego, co powiedział kurier, szacowany czas, pozycja.
Część, którą łatwo przeoczyć, a którą traktujemy jako wymóg, nie jako ostrożność: numer telefonu kierowcy nie może trafić do klienta. To nie jest instrukcja zapisana w promptcie agenta, bo instrukcję w promptcie można obejść. To filtr, który rekurencyjnie przechodzi przez wynik narzędzia i usuwa pola kontaktowe kierowcy, zanim ten wynik trafi do modelu — zachowując numery dyspozytorni. To, co zostało usunięte, nie może zostać podyktowane, niezależnie od tego, jak agent zostanie zapytany.
A najważniejszym ograniczeniem jest infrastruktura, nie inteligencja: agent głosowy w telefonie zależy od hosta SIP między Twoim operatorem a platformą. Gdy ten host przestaje działać, połączenia nie wychodzą, a sygnatura błędu jest rozpoznawalna — wygasłe żądanie, pusty identyfikator połączenia, zero czasu trwania. Host, przez który przechodzą nasze linie testowe, nie odpowiada na dzień sporządzenia tej strony. W sieci ścieżka głosowa jest dziś weryfikowalna; w telefonie pierwszym etapem każdej pracy jest ustalenie, na jakim hoście wchodzą Twoje numery.