Przejdź do treści
megapromotingPorozmawiajmy

Ekspertyza · Asystenci AI

Asystenci odpowiadający na kanałach, na których piszą wasi klienci, na podstawie waszych informacji, i przekazujący rozmowę człowiekowi, gdy wykraczają poza swoją rolę.

Wdrażamy asystentów tekstowych na naszej platformie, aichat.md, która działa w produkcji. Praca obejmuje połączone kanały z własnym kodem, zindeksowaną bazę wiedzy, narzędzia wykonywane w Twoich systemach oraz zapisane w bazie danych przekazanie do człowieka.

Już zbudowaneUsługa opiera się na własnej platformie działającej w produkcji, a nie na obietnicy. `https://aichat.md` odpowiada publicznie (307 do `/ro`, sprawdzone 06.09.2026), a zachowania opisane poniżej są odczytane ze schematu bazy danych i tras platformy, z plikiem i linią: progi wyszukiwania, typy narzędzi i ich maksymalny czas, stany wątku rozmowy, dziennik przejęcia. Drugą cytowaną własną implementacją jest funkcja katalogu sklepu (`storeCatalog.service.js` plus trzy wbudowane narzędzia), napisana jako funkcja platformy zamiast narzędzi per klient. To, czego dowód nie potwierdza, mówimy równie wyraźnie: wiadomości z szablonu WhatsApp nie istnieją w kodzie, więc nie obiecujemy proaktywnych wiadomości poza 24-godzinnym oknem.

Pomocny asystent to nie taki, który ładnie pisze, lecz taki, który jest połączony z rzeczywistą informacją firmy i wie, gdzie się zatrzymać. Nasza praca zaczyna się od kanału, na którym piszą wasi klienci, i kończy przy osobie, która przejmuje rozmowę, gdy asystent nie ma już nic do powiedzenia. Pomiędzy nimi umieszczamy wiedzę, narzędzia i ograniczenia.

Platformą, na której budujemy, jest aichat.md, stworzona przez nas i działająca w produkcji. To zmienia naturę usługi: nie integrujemy czarnej skrzynki kogoś innego, lecz konfigurujemy system, w którym możemy odczytać każdy próg i zmienić każde zachowanie. Gdy mówimy, że odpowiedź korzysta domyślnie z pięciu fragmentów z waszych dokumentów, z progiem podobieństwa 0,70 i 30% wagą dopasowania słów, są to wartości ze schematu bazy danych, a nie opis z broszury.

Kanały z własnym kodem, sprawdzone 06.09.2026, są sześć: Facebook Messenger, Instagram Direct, Telegram, 999.md, widget na stronie oraz WhatsApp Business przez Cloud API na Graph v22.0. Każdy ma własny moduł, a nie zaznaczane pole — a różnice między nimi mają znaczenie w praktyce: Messenger może wyświetlić karuzelę produktów, Instagram nie, ponieważ Meta nie oferuje ogólnych szablonów na Instagramie.

Część, którą klienci niedoszacowują, to przekazanie człowiekowi. W aichat nie jest ono obietnicą, lecz stanem w bazie danych: wątek jest `bot` albo `human`, dziennik przejęcia rozróżnia przejęcie przez człowieka, powrót do bota i automatyczną reaktywację, a wątek ma osobno stan dotrzymania czasu odpowiedzi — `ok`, `warning`, `breached`. Można pokazać, pod koniec miesiąca, ile rozmów zostało przejętych i w jakim czasie.

Co obejmuje

Praca, komponent po komponencie

Łączymy kanał i sprawdzamy, co się dzieje, gdy milknie

Sześć kanałów ma własny kod w platformie: Messenger, Instagram Direct, Telegram, 999.md, widget webowy i WhatsApp Business Cloud API na Graph v22.0. Połączenie Meta odbywa się przez Embedded Signup. Przy każdym kanale sprawdzamy także zły przypadek, a nie tylko pierwszą udaną wiadomość: wygasły token strony zatrzymuje kanał po cichu, bez widocznego błędu, dlatego platforma ma monitorowanie tokenów i powiadomienie o wygaśnięciu.

Indeksujemy wiedzę i ustawiamy progi, według których szuka

Dokumenty i strony są dzielone na fragmenty z hashem treści i embeddingami `text-embedding-3-small`. Domyślne wartości, od których startujemy i które potem dostosowujemy: pięć fragmentów na pytanie, próg podobieństwa 0,70, wyszukiwanie hybrydowe, waga 0,30 na dopasowanie słów, włączone przypisywanie źródła. Każde zapytanie można logować wraz ze zwróconymi fragmentami, wynikami i czasami — więc na pytanie „dlaczego odpowiedział tak” jest odpowiedź z danymi, a nie z przypuszczeń.

Łączymy narzędzia z systemami, które wykonują

Narzędzie może być webhookiem do waszego systemu, z metodą i nagłówkami według wyboru, kawałkiem kodu JavaScript uruchamianym przez platformę albo narzędziem wbudowanym w platformę. Każde ma maksymalny czas wykonania, domyślnie 15 sekund. Praktyczna konsekwencja, powiedziana przed umową, a nie po niej: integracja, która odpowiada w 40 sekund, musi być zrobiona asynchronicznie, a nie wymuszana w rozmowie.

Żywy katalog, połączony z adresem sklepu

Dla sklepów istnieją trzy wbudowane narzędzia — `store_catalog_search`, `store_catalog_match`, `store_catalog_product` — nad wspólną usługą katalogową. W przypadku WooCommerce Store API jest publiczne, więc sklep łączy się za pomocą adresu strony, bez kluczy dostępu. Wcześniej katalog był zapisywany jako osobne narzędzie dla każdego klienta; stał się funkcją platformy właśnie dlatego, że wariantu z narzędziami pisanymi na nazwisko klienta nie dało się utrzymać.

Przekazanie człowiekowi, z ewidencją

Wątek ma jawny stan `bot` albo `human`. Dziennik przejęcia zna trzy działania: przejęcie przez człowieka, powrót do bota i automatyczna reaktywacja. Oddzielnie wątek ma stan dotrzymania czasu odpowiedzi: `ok`, `warning`, `breached`. Moduł przejęcia w platformie ma kolejkę i role. Ustalamy już przy pierwszej rozmowie, kto przejmuje i w jakim czasie, bo ten stan mierzy się od pierwszego wątku, nie dodaje się go później.

Głos w pisanej rozmowie

Notatkę głosową otrzymaną w WhatsApp albo Telegramie transkrybuje się przez `whisper-1` i trafia ona do rozmowy jako tekst. Odpowiedź może wrócić jako głos, przez `tts-1` albo przez ElevenLabs, z ustawieniami stabilności i podobieństwa dla każdego głosu osobno. Dla osoby dyktującej zamiast pisać — wykonawcy na miejscu, kierowcy — to różnica między kanałem użytecznym a kanałem dekoracyjnym.

Tłumaczenie w rozmowie, dziś tylko w jedną stronę

Odpowiedź operatora może zostać przepisana na język klienta, z tonem agenta i bez dodawania faktów. Kierunek odwrotny — wiadomość klienta przetłumaczona dla operatora — nie istnieje w kodzie na dzień sprawdzenia, więc operator czyta oryginał. Mówimy o tym, ponieważ to różnica między zespołem, który może obsłużyć klienta rosyjsko- albo anglojęzycznego, a takim, który tylko uważa, że może.

Zachowanie przy podwójnych wiadomościach i przy seriach

Webhook Meta rzeczywiście wysyła ponownie tę samą wiadomość: deduplikacja odbywa się po identyfikatorze wiadomości, z 120 sekundami pamięci. A gdy ktoś pisze trzy linie jedna po drugiej, łączą się one w buforze 15 sekund i otrzymują jedną odpowiedź, na wszystko, co napisała osoba, a nie trzy częściowe odpowiedzi.

Model nie jest związany z jednym dostawcą

Wywołania przechodzą przez własny gateway pod `api.megapromoting.com/v1`, który obsługuje formę OpenAI dla wszystkich dostawców z tyłu. Model wybiera się dla każdego asystenta osobno i można go zmienić bez przepisywania integracji. Do embeddingów używamy `text-embedding-3-small`.

Jak to wygląda

Trasa, krok po kroku.

01

Wybieramy kanał i osobę, która przejmuje

Jeden kanał, jedna publiczność, jeden śledzony rezultat. W tej samej rozmowie ustala się, kto przejmuje wątki oznaczone `human` i w jakim czasie. Dostarczamy: listę scenariuszy, które asystent obsługuje, oraz wyraźną listę tych, których nie obsługuje.

02

Łączymy źródła i sprawdzamy, co z nich wychodzi

Dokumenty i strony trafiają jako źródła wiedzy. Przy katalogach sprawdzamy wyodrębnione produkty pojedynczo tam, gdzie liczy się cena. Dostarczamy: zindeksowane źródła, progi wyszukiwania ustawione dla Twojego przypadku oraz zestaw pytań kontrolnych z uzyskanymi odpowiedziami.

03

Łączymy narzędzia i testujemy wolny przypadek

Webhook do CRM albo ERP, kod do własnych transformacji, wbudowane narzędzie do tego, co już istnieje. Testujemy wolny przypadek i przypadek błędu, nie tylko szczęśliwy, bo to limit 15 sekund decyduje. Dostarczamy: skonfigurowane narzędzia i udokumentowane zachowanie przy przekroczeniu limitu.

04

Otwieramy kanał z włączonym monitorowaniem

Kanał uruchamia się z aktywnym monitorowaniem tokenu i z przejęciem przez człowieka przećwiczonym co najmniej raz na rzeczywistym przypadku. Dostarczamy: dostęp do panelu, procedurę przejęcia i punkty, w których system zatrzymuje się sam.

05

Czytamy logi i regulujemy

Po pierwszych rzeczywistych rozmowach przeglądany jest dziennik zapytań: co zostało znalezione, z jakim wynikiem, w jakim czasie. Na tej podstawie dostosowywany jest próg, liczba fragmentów lub tekst źródła. Dostarczamy: listę wprowadzonych zmian i uzasadnienie każdej z nich.

Droga wiadomości1canal conectat2dedublare peidentyfikator oraztampon de 15 secunde3wyszukiwanie w źródłachtale (5 fragmente,prag 0,70)4narzędzie z limitem15 secundeodpowiedź ze źródłem, lubtrecere pe stareahuman cu jurnal depreluare
Droga wiadomości

Dane

Czego dotykamy, gdzie to leży i jak długo zostaje

Pytania, które zadaje każdy, kto ma inspektora ochrony danych — postawione tutaj, zanim on je zada.

Gdzie są przechowywane rozmowy
MySQL, na własnym serwerze w Microsoft Azure. Schemat obejmuje ponad 80 tabel modelowanych w Prisma, z osobnymi tabelami dla wątków Meta, wątków Telegram, wątków 999.md, komentarzy, etykiet, notatek wewnętrznych i dziennika audytu.
Tokeny kanałów są przechowywane zaszyfrowane
Token WhatsApp jest przechowywany zaszyfrowany Fernet, z powrotem do tekstu jawnego tylko dla starych rekordów. Wiadomości mają własny moduł szyfrowania w usłudze kanałów. Istnieje monitorowanie tokenów i powiadamianie o wygaśnięciu.
Co widzi widżet i skąd
Widget ma listę dozwolonych źródeł dla każdego asystenta. Domyślne zachowanie trzeba znać: jeśli lista jest pusta, weryfikacja przechodzi — to wybór zgodności ze starszymi instalacjami, zapisany w kodzie dosłownie. Oznacza to, że ograniczenie według domeny konfiguruje się jawnie przy każdej implementacji, która tego wymaga; my ją konfigurujemy, nie zakładamy.
Jakie dane osobowe trafiają bez pytania
Pole swobodne rozmowy może zawierać wszystko — numer telefonu, adres, problem medyczny. Nie da się tego technicznie zatrzymać, ale można to obsłużyć: ustala się, co jest przechowywane, jak długo, kto ma dostęp i czego zespół ma być szkolony, aby nie prosić o to na kanale. Rejestr czynności przetwarzania wdrożenia sporządza się równocześnie z wdrożeniem, a nie po nim.
Okres przechowywania
Ustala się go dla każdego wdrożenia i zapisuje w opublikowanej polityce klienta. Zasada, którą stosujemy u siebie i której wymagamy też w projektach: jeśli zmiana kodu zmienia to, co jest zbierane, do kogo trafia lub jak długo jest przechowywane, opublikowana polityka jest zmieniana w tym samym commicie.

Przykład

Pytanie o cenę, które zaczyna się na Instagramie i kończy u człowieka

Sytuacja

Sklep z katalogiem online otrzymywał pytania o ceny w DM na Instagramie i w Messengerze. Te same pięć pytań przez cały dzień, a poprawna odpowiedź już istniała na stronie.

Co zbudowaliśmy

Połączyliśmy oba kanały, zindeksowaliśmy źródła i połączyliśmy katalog za pomocą wbudowanych narzędzi sklepu, które dla WooCommerce odczytują publiczne Store API — więc bez kluczy dostępu w platformie. Ustawiliśmy bufor łączenia, aby trzy wiadomości napisane jedna po drugiej stały się jednym pytaniem, i zapisaliśmy wprost, czego asystentowi nie wolno robić. W Messengerze uruchomiliśmy karuzelę produktów z trzema warunkami, od których zależy; na Instagramie pozostaliśmy przy tekście i zdjęciu, ponieważ Meta nie udostępnia tam szablonów ogólnych.

Co z tego wyszło

Pytania o cenę i dostępność otrzymują odpowiedź z wyświetlonym produktem i linkiem. To, czego nie ma w katalogu, przechodzi do stanu `human` i trafia do wyznaczonej osoby wraz z pełnym kontekstem rozmowy. Dziennik zapytań pokazuje, co asystent znalazł, z jakim wynikiem i w jakim czasie, więc dostrajanie odbywa się na podstawie danych.

Czego nie mówi ten przypadek

Rezultat zależy od jakości katalogu. Błędna cena na stronie staje się błędną ceną w rozmowie — asystent czyta źródło, nie koryguje go. I nie mierzyliśmy zmniejszenia obciążenia pracy zespołu, więc nie stwierdzamy tego jako efektu.

Pytania

O co pytają ludzie, zanim zadzwonią

Czy może napisać sam pierwszy na WhatsApp do klienta, który nie pisał od tygodnia?

Nie. I powód jest po stronie Meta oraz przez realny brak u nas, oba podane wprost. Poza oknem 24 godzin od ostatniej wiadomości klienta Meta odrzuca swobodny tekst błędem 131047, a platforma oznacza wiadomość jako nieudaną i wyświetla błąd zamiast udawać, że została wysłana. Wysłanie poza oknem wymaga wiadomości z szablonu zatwierdzonych przez Meta, a takich nie ma w naszym kodzie — wyszukiwanie po typie `template` w całym kodzie zwraca zero wyników. Czyli: odpowiedź w oknie 24 godzin, tak; proaktywna kampania na WhatsApp, nie, dopóki nie zostaną wdrożone szablony.

Na których kanałach działa to faktycznie, dziś?

Sześć, z własnym kodem sprawdzonym 06.09.2026: Facebook Messenger, Instagram Direct, Telegram, 999.md, widget web i WhatsApp Business Cloud API. Starszy audyt wewnętrzny znalazł też kod dla SMS i e-mail; nie sprawdzaliśmy tego ponownie na tę datę, więc nie wpisujemy tego jako dostępne bez weryfikacji na konkretnej implementacji. Kanał, który pojawił się później, nie jest domyślnie uznawany za podłączony.

Czy integracja z 999.md jest oficjalna?

To nie jest integracja partnerska z publicznym API. Działa z sesją Twojego konta: platforma prosi o wartość pliku cookie sesji z Twojej przeglądarki i używa jej do odczytywania oraz odpowiadania na wiadomości. Praktyczna konsekwencja, powiedziana z góry: jeśli 999.md zmieni mechanizm sesji, integracja przestaje działać i trzeba ją ponownie połączyć. Osoba, która nie akceptuje tego ryzyka, nie powinna uruchamiać tego kanału.

Skąd zna odpowiedź i co robi, gdy jej nie zna?

Przeszukaj swoje źródła za pomocą wyszukiwania hybrydowego — domyślnie pięć fragmentów, próg 0,70, 30% wagi na słowa, reszta semantycznie — i możesz dołączyć źródło do odpowiedzi. Gdy nic nie znajduje, zaprojektowana ścieżka to przekazanie do człowieka: wątek przechodzi w stan `human`, a dziennik zapisuje, kto przejął i kiedy. Istnieje też automatyczny powrót do bota, również jako zarejestrowana akcja.

Czy może pokazywać produkty ze zdjęciem i ceną?

Na Messengerze tak — karuzela kart. Na Instagramie nie: Meta nie oferuje ogólnych szablonów na Instagramie, więc tam pozostaje tekst plus zdjęcie. Karuzela wymaga trzech rzeczy jednocześnie: musi być włączona w konfiguracji asystenta, narzędzie ma zwrócić co najmniej dwa produkty, a instrukcja asystenta ma prosić o listę z ceną i linkiem — ponieważ detektor patrzy na tekst agenta, a nie tylko na dane. Jeśli brakuje któregokolwiek z tych trzech, karuzela się nie buduje. Konfigurujemy wszystkie trzy, ale warto wiedzieć dlaczego.

Kto odpowiada klientowi, który pisze po rosyjsku do zespołu mówiącego po rumuńsku?

Odpowiedź operatora można automatycznie przepisać w języku klienta, zachowując ton agenta i bez dodawania faktów — to działa. Kierunek odwrotny, czyli wiadomość klienta przetłumaczona dla operatora, nie istnieje w kodzie na dzień weryfikacji. W praktyce: klient dostaje odpowiedź w swoim języku, ale operator czyta wiadomość oryginalną. Jeśli potrzebny jest też ten drugi kierunek, to zadanie do wykonania, a nie ustawienie do zaznaczenia.

Co się dzieje, jeśli klient wyśle tę samą wiadomość dwa razy?

Nie dostaje dwóch odpowiedzi. Duplikaty są filtrowane po identyfikatorze wiadomości, z pamięcią 120 sekund — webhook Meta rzeczywiście wysyła ponownie. A wiadomości pisane jedna po drugiej są łączone w buforze 15 sekund i otrzymują jedną odpowiedź na wszystko.

Z jakim modelem AI odpowiada i co się dzieje, jeśli chcę inny?

Wywołania przechodzą przez własny gateway pod `api.megapromoting.com/v1`, który obsługuje format OpenAI dla wszystkich dostawców po stronie zaplecza; model wybiera się per asystent. Zmiana modelu nie wymaga przepisywania integracji. Do embeddingów używamy `text-embedding-3-small`; zmiana modelu embeddingów natomiast wymaga ponownego indeksowania źródeł — to nie to samo.

Czego nie robi ta usługa?

Nie robi głosu przez telefon — to inna nasza platforma, Kallina, i to inne zadanie. Nie wysyła proaktywnych wiadomości na WhatsApp, z powodu podanego wyżej. Nie generuje PDF-ów i nie dołącza odebranych fotografii do zamówienia — na dzień weryfikacji otrzymana fotografia jest tylko oznaczana. I nie gwarantujemy procentów redukcji nakładu pracy: nie mamy pomiaru, więc tego nie deklarujemy.

Na czym opierają się powyższe stwierdzenia (21 źródeł)
  1. aichat.md odpowiada publicznie — 307 do https://aichat.md/rohttps://aichat.md · 2026-09-06

20 z nich to kod i pliki z naszych repozytoriów. Nie publikujemy ich nazw ani numerów linii: razem, na jednej stronie, opisałoby to zbyt dokładnie, jak zbudowane są systemy, które nie należą tylko do nas. Przechodzimy je razem z Tobą, w repozytorium, na życzenie — weryfikacja pozostaje możliwa, tylko odbywa się w rozmowie.

Co chcesz, żeby działało lepiej?

Opowiedz nam o swoim procesie. Wspólnie ustalimy, co warto zbudować, co da się połączyć i jak sprawdzimy wynik.

Porozmawiajmy