Przejdź do treści
megapromotingPorozmawiajmy

Rozwiązania · Handel online

Asystent, który czyta cenę i dostępność w Twoim sklepie w sekundzie, w której klient pyta.

Łączymy asystenta z katalogiem sklepu przez jego publiczną bramę, uruchamiamy go na kanałach, na których klienci już piszą, i dajemy mu zasadę, której nie może złamać: nie podawaj ceny, która nie jest opublikowana w sklepie. Gdy wykracza poza rolę, przekazuje rozmowę człowiekowi, z zapisem.

Już zbudowaneSe poate verifica din exterior, fără să ne întrebi pe noi. Punctul nostru de catalog livrat unui distribuitor răspunde 200 și spune „154 rezultate”, iar interfața publică a magazinului lui, interogată direct, întoarce antetul `x-wp-total: 154` — aceeași cifră, două surse independente, 06.09.2026. A doua implementare e funcția de catalog din platforma de asistenți: `storeCatalog.service.js` plus trei unelte încorporate pe care agentul le poate chema în timpul conversației. Rezerva pe care o spunem înainte de contract: mesajele din șablon WhatsApp nu există în codul platformei, deci nu promitem niciun mesaj proactiv în afara ferestrei de 24 de ore; iar traseul de catalog stă pe o ramură de dezvoltare care nu e unificată în trunchi — e livrat pentru magazinele pe care le-am conectat, nu pornit implicit pentru toți.

Asystent sklepu nie psuje się dlatego, że nie rozumie pytania. Psuje się dlatego, że odpowiada z kopii katalogu. Ktoś raz wyeksportował produkty, wkleił je do pliku i od tamtej pory asystent czyta stare zdjęcie sklepu: cenę sprzed trzech tygodni, stan magazynowy sprzed weekendu. Działa idealnie aż do pierwszej zmiany ceny i do pierwszego wyczerpanego produktu — a wtedy myli się z przekonaniem, co jest gorsze niż milczenie. W handlu to nie jest błąd niuansu: klient przychodzi do sklepu z ceną, którą podał mu bot.

Nasz wybór jest prosty i ma konsekwencje: katalog nie jest kopiowany, jest odczytywany. Dla sklepów na WooCommerce interfejs Store API jest publiczny — więc podłączenie odbywa się przez adres strony, bez klucza konsumenta i bez sekretu. Gdy klient pyta o produkt, agent wywołuje narzędzie, narzędzie pyta sklep, sklep odpowiada aktualną ceną i dostępnością. To, co pojawia się w rozmowie, jest tym, co jest w sklepie, a nie tym, co było w chwili integracji.

Koszt tego wyboru widać w kodzie, nie jest ukryty: katalog ładuje się stronicowo, do trzydziestu stron po sto produktów, jest trzymany w tymczasowej pamięci przez dziesięć minut na stronę i normalizowany do jednej formy, czytanej bez zmian przez wszystkich odbiorców — w tym przez karuzelę produktów w komunikatorze, która potrzebuje ceny liczbowej, oraz przez widget na stronie. Dziesięć minut to kompromis: zmiana ceny dokonana teraz jest widoczna najpóźniej po dziesięciu minutach, nie natychmiast. Podajemy tę liczbę, żeby można ją było zakwestionować.

Reszta ograniczeń nie pochodzi od nas, tylko od kanałów, i uczciwiej jest je znać wcześniej: Meta odrzuca dowolny tekst poza 24-godzinnym oknem od ostatniej wiadomości klienta, Instagram nie ma w ogóle karuzel produktów, a zdjęcie wysłane przez klienta jest oznaczane w rozmowie, nie jest automatycznie dołączane do zamówienia. Każde z tych zdań jest zacytowane niżej z plikiem i linią.

Co obejmuje

Co konkretnie zmienia się w handlu online

Pytanie staje się wyszukiwaniem w Twoim katalogu, a nie zgadywanką

Agent ma trzy wbudowane narzędzia nad wspólnym serwisem katalogu: `store_catalog_search` do wyszukiwania, `store_catalog_match` do dopasowania formułowania klienta do konkretnego produktu, `store_catalog_product` do pełnej karty. To nie są narzędzia pisane osobno dla każdego sklepu — to funkcja platformy. Praktyczna różnica: gdy naprawiamy coś w dopasowaniu, naprawia się to jednocześnie dla wszystkich podłączonych sklepów.

Cena i stan magazynowy są odczytywane ze sklepu w momencie pytania

Wynik narzędzia pochodzi z Twojego sklepu, a nie z pliku od nas. Pamięć tymczasowa wynosi dziesięć minut na stronę, a katalog jest przeglądany stronicowo — do 30 stron po 100 produktów. Konsekwencja, którą trzeba zaakceptować: zmiana ceny pojawia się w rozmowie z opóźnieniem najwyżej dziesięciu minut. Konsekwencja, którą zyskujesz: nie ma scenariusza, w którym agent przez miesiące powtarza cenę wyjętą ze sklepu.

Odpowiedź trafia na kanał, na którym napisał klient

Sześć kanałów ma własny kod w platformie: Messenger, Instagram Direct, Telegram, widget na stronie, lokalna platforma ogłoszeniowa oraz WhatsApp przez Cloud API na Graph v22.0. To nie jest jeden „chat” przemianowany sześć razy: każdy kanał ma własne reguły formatu i własne sposoby awarii, a my sprawdzamy też zły przypadek — wygasły token strony cicho zatrzymuje kanał, jeśli nie jest monitorowany.

Podłączenie sklepu na WooCommerce odbywa się przez jego adres, bez kluczy

Store API jest publiczne, więc nie prosimy o `consumer_key` ani `consumer_secret`. To nie wygoda, tylko decyzja o ryzyku: ręcznie pisane narzędzia, które ten wariant zastąpił, miały niektóre z nich klucze sklepu zapisane jawnie w bazie danych. Nowa ścieżka zastąpiła 109 ręcznie pisanych narzędzi, z których 28 było scraperami po HTML — czyli integracjami, które psuły się przy pierwszej zmianie motywu sklepu.

Karuzela produktów ma warunki i różnią się one między kanałami

Na Messengerze karuzela wyświetla się tylko wtedy, gdy jednocześnie spełnione są trzy warunki; jeśli jednego brakuje, odpowiedź pozostaje tekstowa, a nie psuje się. Na Instagramie nie ma karuzeli produktów — Meta nie ma ogólnych szablonów na Instagramie, więc nikt nie może tego tam dostarczyć, niezależnie od tego, co jest w ofercie. To rodzaj zdania, które wolimy, żebyś usłyszała od nas przed umową.

Fereastra 24-godzinna na WhatsApp, nazwana numerem błędu

Poza 24-godzinnym oknem od ostatniej wiadomości klienta Meta odrzuca dowolny tekst z błędem 131047, a wiadomość pozostaje oznaczona jako nieudana na platformie. Wiadomości szablonowe — jedyna legalna droga, by napisać jako pierwsza po upływie okna — nie istnieją w kodzie platformy: wyszukanie po typie `template` zwraca zero wyników, wysyłany jest tylko typ `text`. Czyli: odzyskiwania porzuconego koszyka na WhatsApp po 48 godzinach nie możemy dziś obiecać.

Seria wiadomości i duplikaty są obsługiwane, nie ignorowane

Webhook Meta naprawdę wysyła ponownie tę samą wiadomość: deduplikacja odbywa się po identyfikatorze wiadomości, z 120 sekundami pamięci. A klient, który pisze „hej”, „macie”, „czarny model” w trzech liniach, dostaje jedną odpowiedź na wszystko, co napisał, a nie trzy częściowe odpowiedzi — wiadomości są zbierane w buforze 15 sekund. W handlu ma to większe znaczenie, niż wygląda: trzy częściowe odpowiedzi na jeden zamiar wyglądają dokładnie jak bot.

Przekazanie do człowieka ma stan, to nie obietnica

Wątek ma jawny stan `bot` lub `human`. Dziennik przejęcia zna trzy działania: przejęcie przez człowieka, powrót do bota, automatyczna reaktywacja. Osobno wątek ma stan dotrzymania czasu odpowiedzi — `ok`, `warning`, `breached` — więc widać, która rozmowa została bez odpowiedzi człowieka, a nie tylko ile ich było.

Czego nie rozwiązuje asystent sklepu

Nie przyjmuje płatności. Nie tworzy zamówienia w sklepie, jeśli sklep nie ma ścieżki zapisu — odczyt jest publiczny, zapis nie. Nie dołącza zdjęcia wysłanego przez klienta do zamówienia: otrzymana fotografia jest oznaczana w rozmowie, tyle, a generowanie PDF nie istnieje na platformie. I nie powtarza poprzedniego zamówienia klienta bez autoryzowanego dostępu do jego historii. Każdą z tych rzeczy można zbudować, ale jako osobną pracę, a nie jako checkbox w ofercie.

Traseul

Jak przechodzi zgłoszenie przez system.

01

Najpierw sprawdzamy, jaki publiczny dostęp ma Twój sklep

Pierwsza kontrola, nie ostatnia: pobieramy katalog z zewnątrz i liczymy, co wraca. Jeśli sklep działa na WooCommerce z aktywnym Store API, integracja nie potrzebuje kluczy. Jeśli nie, przechodzimy do uwierzytelniania — a wtedy klucz staje się elementem do zarządzania, ze wszystkim, co to oznacza. Wynik tej kontroli dostarczamy na piśmie, także wtedy, gdy odpowiedź brzmi, że się nie da.

02

Łączymy katalog i kanały, z przetestowanym najgorszym przypadkiem

Połączenie Meta odbywa się przez Embedded Signup. Przy każdym kanale sprawdzamy nie tylko pierwszą udaną wiadomość, lecz także to, co dzieje się, gdy token wygasa albo gdy sklep nie odpowiada. Dostarczamy połączone kanały i pisemną listę zachowania dla każdego trybu awarii.

03

Piszemy rolę, narzędzia i ograniczenie

Każde narzędzie ma pisany opis dla modelu, typowane parametry i własny czas wykonania — domyślnie 15 sekund. Rola agenta wyraźnie mówi, czego nie wolno mu twierdzić: nieopublikowanej ceny, terminu dostawy, dostępności, której nie odczytał. Dostarczamy konfigurację agenta i listę dołączonych do niego narzędzi — nie wszystkich narzędzi platformy, tylko tych, których potrzebuje.

04

Uruchamiamy z aktywnym przekazaniem do człowieka i regulujemy progi

Startujemy z skonfigurowanym przekazaniem do człowieka i z włączonym dziennikiem zapytań, aby było widać, z jakich fragmentów korzystał agent i z jakimi wynikami. Na tej podstawie reguluje się próg podobieństwa i liczbę fragmentów na pytanie. Dostarczamy raport rozmów z decyzjami regulacyjnymi, a nie tylko uruchomionego asystenta.

1Întrebarea clientului2unealta de catalog3interfața publică amagazinului4preț șidisponibilitate deacum5răspuns pe canalul pecare a scrisMemorie temporară: zece minute. Nicio copie a catalogului la noi.
Traseul, în 5 pași

Dane

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

Zasady różnią się w zależności od branży. To są te, które obowiązują w handlu online.

Katalog nie jest u nas kopiowany
Produkty, ceny i stan magazynowy pozostają u Ciebie. Przez platformę przechodzi odpowiedź na pytanie, przechowywana w pamięci tymczasowej przez dziesięć minut. U nas nie ma bazy z Twoim katalogiem, którą ktoś mógłby wyeksportować, bo nie ma czego eksportować.
Gdzie są przechowywane rozmowy
MySQL, na własnym serwerze w Microsoft Azure. Schemat ma ponad 80 tabel modelowanych w Prisma, z osobnymi tabelami dla wątków Meta, wątków Telegram, wątków z platformy ogłoszeniowej, komentarzy, etykiet, notatek wewnętrznych i dziennika audytu. Token kanału jest przechowywany zaszyfrowany Fernet.
Dane zamówienia trafiają do pola wolnego
W rozmowie sklepowej pojawiają się imię, telefon, adres dostawy i czasem rozmiar albo problem medyczny, z powodu którego klientka lub klient kupuje produkt. Nie da się tego technicznie zatrzymać. Da się to obsłużyć: ustala się, co jest przechowywane, jak długo, kto ma dostęp i czego zespół ma być przeszkolony nie pytać na kanale. Rejestr czynności przetwarzania wdrożenia zapisuje się przy wdrożeniu, nie później.
Widget na stronie i lista źródeł
Widget ma listę dozwolonych źródeł dla każdego asystenta, ale trzeba znać domyślne zachowanie: jeśli lista jest pusta, sprawdzenie przechodzi. To wybór zgodności ze starszymi instalacjami, zapisany w kodzie wprost. W praktyce ograniczenie do domeny Twojego sklepu konfiguruje się jawnie przy każdym wdrożeniu — nie jest włączone domyślnie.
Okres przechowywania
Ustala się to dla każdego wdrożenia i zapisuje w opublikowanej przez Ciebie polityce. 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 albo jak długo jest przechowywane, opublikowana polityka zmienia się w tym samym commicie.

Przykład

Katalog 154 produktów, sprawdzony z dwóch kierunków

Sytuacja

Dystrybutor z Kiszyniowa sprzedawał przez sklep WooCommerce i odpowiadał na pytania o produkty na kanałach wiadomości. Oczywista integracja — eksport produktów umieszczony w bazie wiedzy agenta — działałaby do pierwszej kampanii rabatowej.

Co zbudowaliśmy

Połączyliśmy katalog przez publiczny interfejs sklepu, który nie wymaga kluczy, i dodaliśmy nad nim trzy narzędzia, które agent wywołuje w rozmowie: wyszukiwanie, dopasowanie i kartę produktu. Wyniki są normalizowane do jednej formy, czytanej tak samo przez karuzelę w komunikatorze i przez widget na stronie, żeby nie było dwóch prawd o tej samej cenie.

Co z tego wyszło

Sprawdzenie można wykonać z zewnątrz, bez wiary na słowo: nasz punkt katalogowy odpowiada 200 i raportuje 154 wyniki, a publiczny interfejs sklepu, odpytywany bezpośrednio, zwraca nagłówek `x-wp-total: 154`. Ta sama liczba, dwa niezależne źródła, tego samego dnia.

Czego nie mówi ten przypadek

Liczba dotyczy tego dnia, 06.09.2026, i zmienia się, gdy dystrybutor dodaje produkty — o to właśnie chodzi. To nie jest pomiar wydajności i nie mówi nic o sprzedaży; mówi tylko, że agent czyta rzeczywisty katalog.

Pytania

O co pyta ktoś z handlu online

Skąd mam wiedzieć, że nie podaje starej ceny?

Bo nie ma skąd jej wziąć. Cena pochodzi z odpowiedzi Twojego sklepu w chwili pytania, przechowywanej w pamięci tymczasowej maksymalnie przez dziesięć minut. U nas nie ma kopii katalogu, z której mógłby czytać. Sprawdzenie możesz wykonać samodzielnie: pytasz agenta o produkt, zmieniasz cenę w sklepie, czekasz dziesięć minut i pytasz ponownie.

Co odpowiada, gdy produkt jest wyprzedany?

To, co mówi sklep. Dostępność pochodzi z tej samej odpowiedzi co cena. Czego nie robi — i to decyzja, a nie przeoczenie — to nie wymyśla daty ponownego zaopatrzenia. Jeśli chcesz, aby agent proponował alternatywy, gdy produktu nie ma, to reguła, którą zapisujemy wprost w jego roli i testujemy, a nie coś, co dzieje się samo.

Czy może sfinalizować zamówienie?

Nie z czytania katalogu. Publiczne Store API to brama do odczytu; zapisanie zamówienia wymaga uwierzytelnionej ścieżki do sklepu, więc to osobna praca, z kluczami, którymi się zarządza. Co robi dziś: prowadzi klienta do właściwego produktu, z właściwą ceną, i daje link albo przekazuje rozmowę człowiekowi.

Czy może napisać jako pierwszy do klienta, który porzucił koszyk?

Na WhatsAppie nie, poza oknem 24 godzin. Meta odrzuca dowolny tekst z błędem 131047, a wiadomości szablonowe nie istnieją w kodzie platformy. Na Telegramie i Messengerze, w granicach reguł każdego kanału, istnieją zaprogramowane automatyzacje, które wznawiają rozmowy pozostawione bez odpowiedzi, z widocznymi licznikami tego, ile zostało wysłanych i ile zostało pominiętych.

Działa z karuzelą produktów na Instagramie?

Nie. Meta nie ma ogólnych szablonów na Instagramie, więc karuzeli tam nie ma dla nikogo. Na Messengerze jest, ale wymaga trzech warunków jednocześnie; gdy jednego brakuje, odpowiedź pozostaje tekstem. Wolimy powiedzieć to teraz, a nie w trzecim tygodniu wdrożenia.

Mój sklep nie jest na WooCommerce. Co się zmienia?

Zmienia się pierwszy etap: zamiast łączyć adres, sprawdzamy, jaki publiczny interfejs ma Twoja platforma i czy odpowiada wystarczająco szybko do rozmowy. Jeśli nie ma żadnego, albo piszemy uwierzytelniony konektor — i wtedy omawiamy, kto zarządza kluczem — albo mówimy, że nie da się uczciwie zrobić żywego katalogu i zostajemy przy okresowo aktualizowanej bazie wiedzy, oznaczonej jako taka.

Osoba kliencka wysyła zdjęcie produktu, którego chce. Co się dzieje?

Fotografia jest oznaczana w rozmowie i zostaje tam dla osoby, która przejmuje. Nie jest automatycznie dołączana do zamówienia i nie generuje się z niej żaden dokument — nie ma na to kodu. Agent, który twierdziłby, że zarejestrował zamówienie ze zdjęcia, kłamałby, a to wychodzi przy dostawie.

Co się dzieje, gdy klient pisze cztery wiadomości jedna po drugiej?

Dostaje jedną odpowiedź na wszystko, co napisał. Wiadomości zbierają się w buforze 15 sekund przed wysłaniem do modelu. Osobno, jeśli platforma Meta wyśle tę samą wiadomość ponownie — a robi to — deduplikacja po identyfikatorze wiadomości, z pamięcią 120 sekund, zapobiega drugiej odpowiedzi.

Kto odpowiada, gdy agent nie wie?

Osoba z Twojego zespołu, a przekazanie widać w systemie: wątek przechodzi ze stanu `bot` do `human`, dziennik przejęcia zapisuje, kto i kiedy, a stan dotrzymania czasu odpowiedzi pokazuje, czy wątek został zawieszony. Bez tego mechanizmu „przekaż do operatora” to obietnica, której nikt nie może zweryfikować miesiące później.

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