Przejdź do treści
megapromotingPorozmawiajmy

aichat.md — kierowanie interakcji

Co dzieje się z wiadomością, od sekundy, w której do nas trafia, aż do momentu, gdy ktoś oznacza ją jako rozwiązane.

Asystent, który dobrze odpowiada, jest łatwy do pokazania w demo. Trudne do pokazania, i to, co naprawdę się liczy, to ścieżka: jak dociera wiadomość, co się robi, żeby nie odpowiedzieć dwa razy, ile czeka się przed odpowiedzią, skąd bierze się informację, jakie narzędzie jest wywoływane, gdzie zatrzymuje się agent i kto jest wywoływany w zamian. Poniżej jest rzeczywista ścieżka, z numerami z kodu. Włącznie z częścią komentarzy, która zachowuje się całkowicie inaczej niż wiadomość prywatna — i musi zachowywać się inaczej.

Traseul

Dziewięć etapów, w kolejności, w jakiej się odbywają

  1. 01

    1. Wejście, przez kanał, na którym napisała osoba

    Sześć dróg wejścia, z różnymi mechanizmami. Messenger, Instagram Direct i WhatsApp Cloud API trafiają przez webhook, przez ten sam punkt wejścia, rozgałęziony według typu obiektu. Widget na stronie wchodzi bezpośrednio własną trasą. Telegram nie trafia przez webhook, lecz przez ciągłe odpytywanie. A 999.md nie ma ani webhooka, ani ciągłego odpytywania — ma zegar, który zagląda do wątków co dwadzieścia sekund.

    Każde odebranie zapisuje się w dzienniku zdarzeń, ze stanem podpisu kryptograficznego i surową treścią, zanim cokolwiek zostanie przetworzone. Powód jest prosty: gdy wiadomość „nie dotarła”, pierwsze pytanie brzmi, czy dotarła do nas, czy nie, a odpowiedź musi być wierszem w tabeli, a nie przypuszczeniem. Trasowanie kanał → agent odbywa się przez tabelę mapowania między identyfikatorem strony a usługą, więc to samo konto może obsługiwać wielu agentów na różnych kanałach.

  2. 02

    2. Deduplikacja, zanim wydarzy się cokolwiek innego

    Identyfikator wiadomości trafia do klucza Redis z warunkowym zapisem — jeśli klucz już istnieje, wiadomość jest duplikatem i kończy się tu. Czas życia klucza wynosi 24 godziny. Jeśli Redis nie odpowiada, przechodzi się na pamięć lokalną z progiem czyszczenia przy 5.000 wpisów, więc deduplikacja nie znika, tylko staje się krótsza w pamięci.

    Okno wynosiło 120 sekund do 10 lipca 2026, kiedy zostało podniesione do 24 godzin po incydencie z podwójnymi odpowiedziami. Komentarz wyjaśniający zmianę jest zapisany obok wartości, w kodzie. Tutaj też wyrzuca się naklejki i przycisk „like”, które w przeciwnym razie stałyby się pytaniami, na które agent próbowałby odpowiedzieć.

  3. 03

    3. Bufor — trzy wiadomości pisane po kolei stają się jednym pytaniem

    Ludzie nie piszą akapitu. Piszą „cześć”, potem „mam pytanie”, potem pytanie. Asystent, który odpowiada na każdą linię osobno, jest irytujący i sprawia wrażenie głupiego. Dlatego wiadomości zbierają się w buforze na parze nadawca–strona, a zegar resetuje się przy każdej nowej wiadomości. Gdy osoba milknie, odpowiada się raz, na całość.

    Na Messengerze i Instagramie domyślny czas oczekiwania wynosi 15 sekund; na WhatsAppie — 5. Do bufora przyjmuje się maksymalnie pięć wiadomości — szósta zastępuje ostatnią — a połączony tekst jest obcinany do 2.000 znaków. Wartość czasu oczekiwania jest per agent, a nie globalna: odczytuje się ją z konfiguracji agenta i można ją obniżyć do zera w scenariuszu, gdzie szybkość liczy się bardziej niż spójność. Tuż przed wysłaniem ponownie sprawdza się w bazie, czy w międzyczasie wątek nie został wstrzymany — bo w ciągu tych 15 sekund może wkroczyć człowiek.

  4. 04

    4. Odczyt z Twoich źródeł

    Pytanie zamienia się w wektor i jest wyszukiwane we fragmentach, które zostały załadowane. Wyszukiwanie jest hybrydowe: łączy dopasowanie po słowach z bliskością wektorową, w proporcji trzy do siedmiu. Ładuje się do 300 kandydackich fragmentów z bazy wiedzy agenta, oblicza się łączny wynik dla każdego i zachowuje najlepsze — pięć na kanałach komunikacyjnych, dziesięć na widget.

    Liczba fragmentów jest konfigurowalna per agent, od 1 do 20. Fragmenty są przy indeksowaniu cięte do 1.200 znaków. Końcowy wybór odbywa się według rankingu, a nie według bezwzględnego progu podobieństwa: sortuje się według łącznego wyniku i bierze pierwsze. Konfiguracja ma też pole progu, ale w ścieżce wyszukiwania faktyczny filtr zachowuje każdy fragment z wynikiem powyżej zera i ucina według pozycji — mówimy o tym, bo to różnica między tym, co jest napisane w panelu, a tym, co robi kod. Każde zapytanie można logować razem z zwróconymi fragmentami i ich wynikami, żeby dało się odpowiedzieć na pytanie „dlaczego to powiedział”.

  5. 05

    5. Narzędzia — kiedy agent ma coś zrobić, a nie tylko powiedzieć

    Jeśli odpowiedź wymaga działania, model wywołuje narzędzie. Narzędzie jest trzech rodzajów: webhook do Twojego systemu, fragment kodu uruchomiony w izolacji albo narzędzie wbudowane w platformę. Pętla model–narzędzie–model ma maksymalnie pięć rund, w obu silnikach. Po pięciu zatrzymuje się i odpowiada tym, co ma.

    Domyślny maksymalny czas jednego narzędzia to 15 sekund. Wbudowane narzędzia dostępne dziś: wyszukiwanie na stronie internetowej, aktualny czas, kalkulator, zapis do arkusza Google, powiadomienie o leadzie w Telegramie, wysyłka SMS, sześć narzędzi do umawiania dla zewnętrznego systemu rezerwacji oraz trzy do katalogu sklepu — wyszukiwanie, dopasowanie i karta produktu. Katalog odczytuje na żywo, z dziesięciominutowym buforem, do 30 stron i z maksymalnym czasem 20 sekund. Istnieje zestaw narzędzi oznaczonych jako wewnętrzne, których wynik nigdy nie trafia do tekstu widocznego dla klienta.

  6. 06

    6. Odpowiedź, z historią przed sobą

    Model otrzymuje pytanie, znalezione fragmenty, wyniki narzędzi i historię rozmowy — ostatnie 25 wiadomości na głównej ścieżce, 50 na nowym silniku. Wywołanie ma maksymalny czas 120 sekund, z dwoma ponowieniami; wywołanie po narzędziach, 90 sekund. Odpowiedź wychodzi kanałem, z którego przyszło pytanie, w języku, w którym zostało zadane.

    Nowy silnik agentów uruchamia się przełącznikiem, per agent, per konto albo globalnie — nie zmienia się wszystkiego naraz. Dzięki temu można porównać stare zachowanie z nowym na tym samym ruchu, co jest jedynym uczciwym sposobem, by powiedzieć, że coś jest lepsze.

  7. 07

    7. Przekazanie człowiekowi

    Wątek ma stan: bot albo człowiek. Przejście może nastąpić na cztery sposoby. Przez słowa kluczowe — lista siedemnastu wyrażeń po rumuńsku, angielsku i rosyjsku, pojedyncze słowa porównywane na granicy słowa, wyrażenia na dopasowanie w tekście. Przez frustrację — druga lista, też siedemnastu. Przez powtórzenie — to samo pytanie zadane trzy razy w ostatnich dziesięciu wiadomościach, liczone tylko dla wiadomości dłuższych niż dziesięć znaków. Albo przez decyzję modelu, który może poprosić o przekazanie ze specjalnym znacznikiem.

    Tryb jest per agent i domyślnie wyłączony — wybiera się między „wyłączony”, „po słowach kluczowych” i „inteligentny”. Gdy się uruchamia: wątek przechodzi na „czeka na człowieka”, zapisuje się moment, klient otrzymuje wiadomość potwierdzającą w swoim języku, a agent milknie. Nie odpowiada równolegle, nie dopowiada, nie przeprasza. Milczy i tyle. Istnieje też oficjalny protokół przekazania Meta, który przenosi kontrolę wątku do skrzynki strony; kanał zapasowy nadal zapisuje wiadomości nawet wtedy, gdy kontrola jest u człowieka, żeby historia nie miała dziury.

  8. 08

    8. Gdy operator odpowiada ze strony, agent sam się zatrzymuje

    Jeśli osoba pisze bezpośrednio do klienta z interfejsu Meta, platforma widzi echo tej wiadomości i automatycznie wstrzymuje wątek, bez naciskania czegokolwiek. Domyślny czas to 30 minut, konfigurowalny od pięciu minut do siedmiu dni. To najłatwiejszy do przeoczenia przypadek podczas projektowania asystenta: nikt nie naciska przycisku przejęcia, osoba po prostu odpowiada, a jeśli platforma tego nie zauważy, klient dostaje dwa głosy jednocześnie.

    Powrót ma trzy drogi. Automatyczna reaktywacja po 30 minutach bez odpowiedzi człowieka — pętla sprawdza co minutę i reaktywuje w partiach do 50 wątków, czyszcząc też pamięć rozmowy, aby agent nie kontynuował rozmowy, której nie prowadził. Wygaśnięcie pauzy, sprawdzane osobno. I przycisk w panelu: przejęcie, rozwiązanie, powrót do bota, całkowite zatrzymanie bota.

  9. 09

    9. Zamknięcie — i to, co nie zamyka się samo

    Wątek oznacza się jako rozwiązany ręcznie, z panelu, z notatkami o rozwiązaniu i z wiadomością systemową zapisaną w historii. Nie ma automatycznego zamknięcia przy braku aktywności: otwarty wątek pozostaje otwarty. Wybraliśmy powiedzieć to wprost, zamiast pozostawiać wrażenie, że samo się czyści.

    Dwie rzeczy zamykają się jednak same: reaktywacja agenta po 30 minutach, opisana wyżej, oraz eskalacje wysłane w Telegramie, które po 30 minutach bez odpowiedzi oznacza się jako wygasłe i zwracają wątek agentowi, z zapisanym powodem. Nad wszystkim działa wskaźnik czasu odpowiedzi: po godzinie staje się ostrzeżeniem, po czterech godzinach staje się przekroczeniem. Koloruje, nie zamyka.

Asistentul magazinuluiSe potrivește cu aparatul meu?Spune-mi modelul aparatului.Verific variantele din catalog.Catalog conectat · informație verificatăEchipa poate prelua conversația.
Schemă explicativă · mesaj, context, acțiune, predare

Comentarii

Komentarze: dlaczego nie są wiadomościami i dlaczego nie są traktowane jak wiadomości

Wiadomość prywatna ma jedną osobę czytającą. Komentarz ma wszystkie osoby czytające stronę, w tym konkurencję, w tym kogoś, kto szuka pretekstu do skandalu. Dobra odpowiedź prywatnie może być katastrofą publicznie — na przykład ceną, dostępnością albo potwierdzeniem, że ktoś naprawdę jest Waszym klientem. Dlatego komentarze mają osobną ścieżkę, osobne reguły i domyślną wartość, która skłania się ku dyskrecji.

Jak komentarz trafia do systemu

Strona subskrybuje różne pola w obu sieciach: na Facebooku strumień strony, na Instagramie jawnie komentarze oraz komentarze z transmisji na żywo. Trafiają do tego samego punktu wejścia co wiadomości, ale na osobną gałąź, rozpoznawaną po obecności listy zmian zamiast listy wiadomości. Format różni się między sieciami i jest wykrywany osobno dla każdej. Odczytywany jest też komentarz nadrzędny, aby wiadomo było, czy to odpowiedź na inny komentarz, oraz post lub materiał, na którym się pojawił.

Tylko nowe komentarze uruchamiają coś

Meta wysyła to samo zdarzenie dla kilku działań. Tylko dodanie komentarza uruchamia agenta. Edycja, usunięcie, ukrycie i ponowne pokazanie są logowane i zatrzymywane na tym etapie. Zmiana liczby polubień jest ignorowana bez śladu, bo inaczej dziennik byłby czystym szumem.

Cztery filtry przed tym, jak agent zobaczy tekst

Komentarze samej strony są odrzucane — inaczej agent odpowiadałby sam sobie bez końca. Komentarze już przetworzone są odrzucane po unikalnym identyfikatorze komentarza, który ma ograniczenie unikalności w bazie. Komentarze puste, te mające najwyżej dwa znaki i te złożone wyłącznie z emoji są odrzucane. A teksty zawierające długie numery telefonów lub adresy internetowe przechodzą przez filtr spamu z czterema wzorcami i są zatrzymywane, oznaczone jako takie.

Publicznie czy prywatnie: wartość domyślna to prywatnie

Każdy agent ma cztery oddzielne przełączniki, dwa dla Facebooka i dwa dla Instagrama: odpowiedź publiczna włączona lub wyłączona, odpowiedź prywatna włączona lub wyłączona. Nad nimi stoi tryb ogólny z trzema pozycjami — wyłączony, automatyczny albo z zatwierdzeniem. Gdy konfiguracja nie istnieje lub nie da się jej odczytać, wartość rezerwowa w kodzie nie brzmi „odpowiadaj publicznie”, tylko „nie odpowiadaj publicznie, odpowiadaj prywatnie”. To świadomy wybór: błąd konfiguracji nie może wystawić tekstu na czyimś publicznym murze.

Wyłączony agent oznacza wyłączone komentarze

Jeśli asystent jest zarchiwizowany, nieaktywny, wyłączony lub wstrzymany, albo jeśli bot jest wyłączony z konta klienta, tryb komentarzy staje się automatycznie „wyłączony”, niezależnie od tego, co widnieje w przełącznikach komentarzy. Jedno miejsce do wyłączenia, nie cztery do zapamiętania.

Na co nie odpowiada się publicznie i jak mocna jest reguła

Instrukcja dana modelowi dla odpowiedzi publicznej jest jasna: maksymalnie dwa zdania, krótki i przyjazny ton, zaproszenie do wiadomości prywatnej po szczegóły oraz zakaz podawania szczegółowych informacji lub cen publicznie. Ponad tym twardy limit: odpowiedź publiczna jest ucinana do 300 znaków. Ponad obydwoma znajduje się swobodny tekst, który wpisujecie jako własne instrukcje, oddzielnie dla publicznej i prywatnej. Mówimy uczciwie, jak mocna jest reguła: to instrukcja promptu plus limit długości, a nie deterministyczny filtr, który mógłby zagwarantować, że cena nigdy się nie pojawi. Gdy gwarancja musi być mocna, wyłącza się odpowiedź publiczną i zostawia tylko prywatną albo przechodzi na tryb z zatwierdzeniem.

Raz na każde 30 sekund, na tym samym poście

Odpowiedź publiczna ma licznik na post: najwyżej jedna na 30 sekund. Powód to to, co dzieje się, gdy post „zaskoczy” — trzydzieści komentarzy w dwie minuty, a strona zapełnia się identycznymi odpowiedziami robota pod każdym z nich. Licznik czyści się sam, zachowując ostatnie tysiąc śledzonych postów.

Instagram nie pozwala na prywatną wiadomość do podkomentarza

To reguła platformy, nie nasza, i jest sprawdzana w trzech różnych miejscach kodu, na wszystkich trzech ścieżkach, przez które można dojść do prywatnej wiadomości. Gdy komentarz ma rodzica, a sieć to Instagram, wysłanie prywatnej wiadomości jest pomijane i w dzienniku zapisywany jest dokładny powód. Nie próbuje się tego ani nie kończy się to po cichu niepowodzeniem — jest pominięte, jawnie.

Od komentarza do rozmowy

Przejście odbywa się przez oficjalny mechanizm: prywatna wiadomość jest wysyłana z użyciem identyfikatora komentarza jako adresata, a nie identyfikatora osoby. Od tego momentu istnieje zwykły wątek wiadomości, ze wszystkimi regułami powyżej — bufor, źródła, narzędzia, przekazanie człowiekowi. Wątek jest oznaczany jako pochodzący z komentarzy, a odebrany komentarz jest zapisywany w historii rozmowy z własnym typem, żeby było widać, skąd wszystko się zaczęło.

Tryb z zatwierdzaniem: agent pisze, człowiek publikuje

Gdy tryb jest „z zatwierdzaniem”, wygenerowana odpowiedź nie wychodzi. Zostaje zapisana jako wersja robocza, w oczekiwaniu, i pojawia się w kolejce w panelu, z licznikiem. Stamtąd jest zatwierdzana albo odrzucana, fragment po fragmencie. Zatwierdzona publikacja przechodzi przez wewnętrzny most chroniony porównaniem podpisu w stałym czasie — zatwierdzonej odpowiedzi nie można wstrzyknąć z zewnątrz.

Co może zrobić człowiek, ręcznie

Ukrywanie komentarza, z mechanizmem właściwym dla każdej sieci, oraz oznaczanie stanu w bazie. Usuwanie, z oznaczeniem usunięcia. Masowe ukrywanie, najwyżej 25 komentarzy w jednej partii. Zamknięcie komentarzy pod materiałem Instagram. I ukrywanie komentarzy z transmisji na żywo, osobną trasą. To działania ręczne, nie automatyczne. Nie ma listy zakazanych słów, która sama ukrywałaby komentarze, i nie twierdzimy, że istnieje.

Predarea

Gdy agent nie ma już nic do powiedzenia

Eskalacja nie jest porażką agenta. To jego najważniejsza funkcja, bo jedyną rzeczą gorszą od asystenta, który nie wie, jest asystent, który nie wie i nadal mówi. Dalej jest to, jak wygląda przekazanie, kto zostaje powiadomiony, co dzieje się z odpowiedzią człowieka i jak agent wraca.

Karta, która trafia do grupy Telegram

Wbudowane narzędzie wysyła przypadek do grupy, z nagłówkiem, który od razu mówi, jakiego rodzaju to przypadek: pilna sprawa, prośba o operatora, zgłoszenie nadużycia, eskalacja od niezadowolonego klienta, nowy lead albo nowa rozmowa. Typ jest wykrywany z tekstu, z osobnymi wzorcami dla każdego. Wiadomość klienta jest dołączana dosłownie na karcie — osoba przejmująca widzi dokładnie to, co napisał klient, a nie podsumowanie.

Przejęcie to wyścig i jest traktowane jak wyścig

Karta ma dwa stany: otwarta i zablokowana. Przejęcie odbywa się przez zapis warunkowy, który zmienia stan tylko wtedy, gdy karta była nadal otwarta, a kod faktycznie sprawdza, ile wierszy zostało zmienionych. Dwie osoby, które klikną w tej samej sekundzie, nie przejmują obu. Druga dowiaduje się, że przypadek został już przejęty, i nie dochodzi do równoległego zapisu.

Odpowiedź operatora jest przepisywana na język klienta

Operator pisze w grupie, w swoim języku i swoim stylem, czasem telegraficznie. Przed dostarczeniem tekst jest przepisywany na język, w którym mówi klient, oraz na ton agenta, bez dodawania nowych faktów. To, co mówi operator, pozostaje tym, co jest przekazywane; zmienia się tylko forma. Kierowanie odpowiedzi do właściwej rozmowy odbywa się według wiadomości, na którą udzielono odpowiedzi, a jeśli jej brakuje, według jedynego zablokowanego przypadku tego operatora — i jest to jawnie odrzucane, jeśli ma dwa, zamiast zgadywać.

Kto zostaje powiadomiony i co nie jest już powiadamiane

Panel otrzymuje powiadomienie w czasie rzeczywistym przez stałe połączenie. Pauzy wywołane przez reguły wysyłają powiadomienie przez email albo w Telegramie, do wyboru — to jedyne dwa kanały akceptowane w kodzie. Mówimy też, co już nie działa: powiadomienie przez email dla wątku przejętego przez człowieka zostało celowo wyłączone w lipcu 2026, a wewnętrzna trasa pozostała jako pusta odpowiedź. Jeśli polegają Państwo na tamtym emailu, nie nadejdzie. Wolimy powiedzieć to tutaj.

Reguły pauzy, poza słowami kluczowymi

Można pisać reguły, które wstrzymują wątek przy pojawieniu się numeru telefonu, adresu email, zestawu do stu słów albo przy wyraźnej prośbie człowieka. Ponad tym są dwa typy oceniane przez model: intencja i sentyment. Czas pauzy wynosi od minuty do siedmiu dni; wartość zero oznacza pauzę, dopóki ktoś nie zdejmie jej ręcznie.

Każda zmiana z ręki jest zapisywana

Istnieje dziennik przejęć z sześcioma odrębnymi działaniami: przejęcie przez człowieka, przejęcie przez bota, automatyczna reaktywacja, przejęcie przez operatora, zwolnienie przez operatora i wznowienie przez agenta. To nie jest nadpisywana kolumna stanu — to historia. Gdy ktoś pyta „kto rozmawiał z klientem o tej godzinie”, odpowiedź to jeden wiersz, a nie rekonstrukcja.

Czego nie ma, aby nie opierać się na tym, czego nie ma

Nie ma automatycznego przydzielania do kurierów ani ekip terenowych; przeszukaliśmy cały kod i tego nie ma. Nie ma automatycznego zamykania rozmów z powodu bezczynności. Nie ma globalnej listy zakazanych słów do komentarzy. Są za to cztery wyzwalacze przekazania, eskalacja w Telegramie z atomowym przejęciem, reguły pauzy i automatyczna reaktywacja po 30 minutach.

Fiecare afirmație de pe această pagină a fost citită din codul platformei — 66 citări cu fișier și linie, păstrate în depozitul nostru. Le parcurgem împreună, la cerere.