Dokumentacja

FAQ

Czy użytkownicy muszą coś instalować?

Nie. Użytkownicy po prostu wklejają jeden tag script do swojego HTML — bez pakietów npm, bez kroków budowania, bez zależności. Dodatkowe funkcje ładują się automatycznie z tego samego originu.

Czy będzie kolidować z moim CSS?

Nie. Widget renderuje się wewnątrz Shadow DOM, całkowicie izolując swoje style od Twojej strony.

Czy obsługuje aplikacje jednostronicowe (React, Vue, Next.js)?

Tak. Skrypt ładuje się raz i pozostaje aktywny między zmianami tras. Dla React/Next.js umieść skrypt w głównym layoucie.

Next.js App Routertsx
// app/layout.tsx (App Router)
import Script from 'next/script';
import { ReactNode } from 'react';

export default function RootLayout({ children }: { children: ReactNode }) {
  return (
    <html lang="en">
      <body>
        {children}
        <Script id="respondo-init" strategy="afterInteractive">
          {`
            window.Respondo = window.Respondo || {};
            Respondo.init = Respondo.init || function(c) { window.RespondoAIConfig = c; };
            Respondo.q = Respondo.q || [];
            Respondo.identify = Respondo.identify || function(d) { Respondo.q.push(['identify', d]); };
            Respondo.init({
              agentId: 'YOUR_AGENT_ID',
              channelId: 'YOUR_CHANNEL_ID'
            });
          `}
        </Script>
        <Script src="https://api.respondo.ai/widget/widget.js" strategy="afterInteractive" />
      </body>
    </html>
  );
}

Co się dzieje, gdy rozmowa zostanie rozwiązana?

Nowa wiadomość po rozwiązaniu automatycznie otwiera rozmowę kontynuacyjną powiązaną z poprzednią (w skrzynce widoczna jako "Continued from #N"). Kontekst, taki jak język i wcześniejszy zapis rozmowy, jest przenoszony, a odwiedzający widzi jeden ciągły czat. Jeśli rozwiązaną rozmową zajmował się członek zespołu, kontynuacja wraca do Twojego zespołu zamiast do AI; w przeciwnym razie przejmuje ją AI.

Jak ładowany jest widget?

Widget ładowany jest asynchronicznie (async), więc nigdy nie blokuje renderowania strony. Rdzeń paczki to ~180KB (~50KB po gzip); opcjonalne funkcje (kampanie, przewodniki produktowe) ładują się jako osobne, leniwe fragmenty po zamontowaniu widgetu, więc pierwsze renderowanie strony nigdy nie jest blokowane.

Jak działa eskalacja?

Użytkownicy mogą kliknąć przycisk "Porozmawiaj z człowiekiem", wpisać frazę z prośbą o człowieka, albo AI samo przekazuje rozmowę, gdy nie potrafi odpowiedzieć na podstawie Twojej bazy wiedzy. Po eskalacji AI przestaje odpowiadać, a wszystkie kolejne wiadomości są przekazywane do Twojego zespołu wsparcia. Szczegóły znajdziesz w sekcji Eskalacja i przekazanie.

Czy użytkownicy mogą kontynuować czat z AI po eskalacji?

Tak. Widget pokazuje przycisk "Kontynuuj z AI", który pozwala użytkownikowi zamknąć eskalację i wznowić rozmowę z AI.

Baza wiedzy i skanowanie witryny#

Dlaczego skanowanie mojej witryny jest zablokowane?

„Zablokowane” oznacza, że witryna — lub jej warstwa ochronna (Cloudflare, WAF, wtyczka antybotowa) — odrzuciła nasz robot: strona startowa lub robots.txt przy każdej próbie odpowiadały błędem dostępu albo wyzwaniem „sprawdzamy Twoją przeglądarkę”, albo robots.txt wprost zabrania naszemu robotowi. Wcześniej zaimportowane strony pozostają nienaruszone, a ponowna synchronizacja będzie kończyć się tak samo, dopóki witryna nas nie wpuści. Poproś właściciela witryny o zezwolenie na User-Agent RespondoAI-Crawler (pełny ciąg: Mozilla/5.0 (compatible; RespondoAI-Crawler/1.0; +https://respondo.ai/bot)) w ustawieniach ochrony — w Cloudflare to Security → WAF → Custom rules — a jeśli przyczyną jest robots.txt, o dodanie reguły zezwalającej dla User-agent: RespondoAI-Crawler. Respondo nie publikuje stałego adresu IP robota — zezwalaj po User-Agent; jeśli błąd wyświetlony przy źródle podaje IP, zezwól także na nie. Jeśli witryny nie da się zmienić, dodaj tę samą treść jako pliki lub wklejony tekst.

Skanowanie się zakończyło, ale znalazło tylko kilka stron

Strony odkrywamy z mapy witryny (wiersz Sitemap: w robots.txt lub typowe lokalizacje, np. /sitemap.xml) oraz podążając za linkami od adresu startowego — do 10 poziomów linków w głąb i do 5 000 stron na źródło. Importowane są tylko strony tej samej witryny w obrębie ścieżki adresu startowego: skanowanie rozpoczęte od https://example.com/help pomija /blog, więc zacznij od katalogu głównego albo dodaj ścieżki do uwzględnienia. Strony, do których nie prowadzi żaden link ani mapa witryny, strony zabronione w robots.txt oraz strony za logowaniem nie zostaną znalezione. Niemal identyczne strony (wersje do druku, warianty z parametrami śledzącymi) są scalane w jedną. Strony, których treść w całości rysuje JavaScript, są wykrywane i renderowane przeglądarkowym mechanizmem zapasowym, więc mała liczba stron zwykle oznacza problem z zakresem lub mapą witryny, a nie z renderowaniem.

Jak ograniczyć skanowanie do jednej sekcji witryny?

Rozwiń Advanced w oknie dodawania witryny i wypełnij Only crawl paths starting with (skanuj tylko ścieżki zaczynające się od) i/lub Skip paths starting with (pomijaj ścieżki zaczynające się od) — jedna ścieżka w wierszu, do 50 w każdym polu. Dopasowanie odbywa się po całych segmentach ścieżki: /docs pasuje do /docs i /docs/getting-started, ale nie do /docs-archive; końcowy ukośnik jest ignorowany, można też wkleić pełny adres URL — użyta zostanie tylko jego ścieżka. Reguły pomijania mają pierwszeństwo przed regułami uwzględniania. Te same reguły stosują się do mapy witryny i do każdej kolejnej ponownej synchronizacji tego źródła.

Jak często Respondo ponownie skanuje moją witrynę?

Każde źródło typu witryna ma harmonogram Auto-refresh w panelu swoich stron: Off (wyłączony), Daily (co 24 godziny) lub Weekly (co 7 dni). Zaplanowane skanowanie jest przyrostowe: strony, których lastmod w mapie witryny jest starszy niż poprzednie skanowanie, są pomijane, niezmienione strony nie są ponownie indeksowane, zmienione są indeksowane ponownie, a strony, które zniknęły, są usuwane. Aby odświeżyć od razu, użyj Re-sync w menu źródła lub Re-sync all na stronie Knowledge.

„Tym razem nie udało się odczytać witryny” — co się stało?

To ogólny błąd: witryna nie odpowiedziała na czas, domena nie została rozwiązana, serwer zwrócił błąd, strona startowa nie zawierała czytelnego tekstu albo adres nie został znaleziony. Szczegół jest widoczny przy źródle. Sprawdź, czy adres URL otwiera się w prywatnym oknie przeglądarki, czy w domenie nie ma literówki i czy strona startowa to prawdziwa strona z treścią, a nie ekran logowania. Sieci społecznościowe i komunikatory (Facebook, Instagram, LinkedIn, X, YouTube i podobne) w ogóle nie mogą być importowane — są odrzucane przed rozpoczęciem skanowania. Istniejące strony zostają zachowane; źródło z harmonogramem ponowi próbę przy następnym uruchomieniu, w przeciwnym razie zsynchronizuj ponownie, gdy witryna znów będzie dostępna.

Co oznaczają „nasz indeks wyszukiwania jest pełny” i „nie udało się zindeksować tego źródła”?

Oba komunikaty pojawiają się po pomyślnym odczytaniu treści. Indeks jest pełny oznacza, że w indeksie wyszukiwania, do którego kopiowane jest to źródło, po stronie Respondo nie ma miejsca — to ograniczenie Respondo, a nie problem z Twoją treścią. Strony są zapisane, wszystko, co już zindeksowano, nadal odpowiada, nasz zespół jest powiadamiany automatycznie, a źródło zostanie zindeksowane, gdy tylko zwolni się miejsce; wcześniejsza ponowna synchronizacja zakończy się tak samo. Nie udało się zindeksować tego źródła oznacza, że budowa indeksu wyszukiwania tym razem się nie powiodła — tymczasowy błąd po naszej stronie; istniejące dane są nienaruszone, a zadanie jest ponawiane automatycznie. Jeśli którykolwiek komunikat się utrzymuje, użyj „Zapytaj Copilota” przy błędzie.

Czy długie strony są wykorzystywane tylko od początku?

Nie. Każda zeskanowana strona jest dzielona na nakładające się fragmenty po około 1 600 znaków, z których każdy jest indeksowany osobno z dołączonym tytułem strony, więc odpowiedź może pochodzić z dowolnej części długiego artykułu. Cytowania nadal pokazują jeden link na stronę. Strony zaimportowane przed tą zmianą są dzielone ponownie przy kolejnych ponownych synchronizacjach.

Jak uzyskać pomoc przy błędzie skanowania?

Każdy błąd skanowania lub indeksowania na stronie Knowledge ma przycisk Zapytaj Copilota. Otwiera on Copilota z dołączonym błędem, a Copilot odpowiada na podstawie własnej dokumentacji pomocy Respondo konkretnymi krokami dla Twojego przypadku. Ta pomoc jest bezpłatna — nie wlicza się do Twoich zapytań AI. Jeśli kroki nie rozwiążą problemu, napisz to wprost — wystarczy „to nie pomogło”. Copilot sam zaproponuje kartę przekazania sprawy zespołowi Respondo: karta wymienia dokładnie, co zostanie wysłane, nic nie wychodzi, dopóki tego nie potwierdzisz, a odpowiedź zespołu przyjdzie w tym samym wątku Copilota. Jeśli przekazanie sprawy nie jest dostępne, Copilot powie o tym wprost, zamiast milczeć.

Wiadomości, które nie docierają do klienta#

Przy odpowiedzi widnieje „Not delivered” — co to znaczy i od czego zacząć?

Każda wychodząca wiadomość w skrzynce ma wskaźnik doręczenia: Queued (odpowiedzi napisane jedna po drugiej są łączone i wychodzą jako jeden e-mail w ciągu kilku minut), Sending…, Sent, Delivered albo czerwone niepowodzenie. Niepowodzenia mają trzy postaci: Not delivered — kanał odmówił przyjęcia wiadomości; Bounced wraz z podtypem odbicia obok — serwer pocztowy odbiorcy odrzucił e-mail; oraz Marked as spam — odbiorca zgłosił go jako spam. Najedź na etykietę albo ją kliknij: dymek zawiera słowa samego dostawcy, w tym surową diagnostykę SMTP przy odbiciu. Obok mieszczą się najwyżej dwie akcje — Retry / Send again, która naprawdę wysyła ponownie, oraz Ask Copilot (zapytaj Copilota), która otwiera Copilota z dołączonym błędem. Jeśli przycisku ponowienia nie ma wcale, adres jest zablokowany i kolejna próba skończyłaby się tak samo. Sent lub Delivered z dopiskiem N files not delivered oznacza, że tekst dotarł, ale załącznik nie — ten kanał nie mógł przenieść pliku.

Dlaczego mój e-mail nie dotarł do klienta?

Powody są cztery, a rozróżnia je etykieta. Odbicie trwałe oznacza, że adres nie istnieje albo odmawia przyjmowania poczty — nie ma przycisku ponowienia, a adres trafia na listę blokad. Odbicie tymczasowe to pełna skrzynka lub przejściowy problem po stronie serwera odbierającego; pojawia się Send again i zwykle później działa. Inaczej jest z odbiciem, którego diagnostyka wspomina o SPF, DKIM, DMARC lub 5.7.515: system pocztowy odbiorcy odrzucił wiadomość, ponieważ Twoja domena nadawcza nie przeszła weryfikacji uwierzytelnienia. Każda nowa odpowiedź odbije się dokładnie tak samo, dopóki domena nie zostanie naprawiona, więc odpowiedz tymczasem w innym kanale i popraw rekordy DNS kanału e-mail w Settings → Channels. Wreszcie Marked as spam znaczy, że odbiorca nacisnął „zgłoś spam”: adres zostaje zablokowany i przestajemy na niego wysyłać. Raport kampanii może dodatkowo pokazać The email provider rejected this message — trwałą odmowę jeszcze zanim e-mail wyszedł, zwykle z powodu niezweryfikowanej domeny nadawczej albo błędnie zapisanego adresu — oraz The email provider rejected our credentials, co jest problemem konfiguracji przestrzeni roboczej, a nie tego jednego kontaktu.

Czym jest lista blokad i jak zdjąć z niej adres?

To prywatna lista Twojej przestrzeni roboczej z adresami e-mail, na które Respondo odmawia wysyłki. Adres trafia na nią, gdy wiadomość odbije się trwale (odmowa nieodwracalna), gdy ktoś zgłosi jeden z Twoich e-maili jako spam albo gdy zablokujesz go ręcznie. Odbicia tymczasowe nigdy nie blokują adresu. Dopóki blokada obowiązuje, wysyłki kampanii do tego adresu są pomijane z informacją This address is blocked after an earlier bounce or complaint, a odpowiedź ze skrzynki zostaje zatrzymana, zanim wyjdzie. Blokowany jest wyłącznie rzeczywisty odbiorca wiadomości — powiadomienie o odbiciu nie może zablokować dowolnego adresu. W panelu nie ma ekranu tej listy: właściciel lub administrator może ją odczytać przez GET https://api.respondo.ai/api/v1/integrations/email/suppressions i zdjąć pojedynczy wpis przez DELETE https://api.respondo.ai/api/v1/integrations/email/suppressions/<email>, albo poprosić o to wsparcie Respondo. Odblokowuj trwałe odbicie tylko wtedy, gdy wiesz, że skrzynka naprawdę została naprawiona — wysyłka na martwy adres szkodzi reputacji Twojej domeny.

WhatsApp nie przyjmuje mojej odpowiedzi — okno 24 godzin

WhatsApp pozwala firmie wysyłać dowolne wiadomości tylko w ciągu 24 godzin od ostatniej wiadomości klienta; wszystko późniejsze Meta odrzuca błędem 131047. Respondo śledzi to okno dla każdej osoby osobno i gdy wie, że okno wygasło, zatrzymuje odpowiedź przed wysłaniem. Kiedy nie ma żadnego zapisu o oknie — kontakt z importu albo numer, który nigdy do Ciebie nie napisał — nie blokuje: wiadomość idzie do Meta i to Meta decyduje. Dalej prowadzą dokładnie dwie drogi. Poczekaj, aż klient napisze ponownie — jego wiadomość otwiera okno na kolejne 24 godziny i Twoja odpowiedź wtedy przejdzie — albo wyślij szablon zatwierdzony przez Meta. Szablonów nie da się wysłać z okna redagowania rozmowy. Zarządzasz nimi w Outbound → WhatsApp templates: Sync pobiera to, co jest już zarejestrowane na Twoim numerze, New template zgłasza nowy do Meta, a weryfikacja trwa dzień lub dłużej. Potem wyślij zatwierdzony szablon kampanią outbound skierowaną do tego kontaktu. Szablon dociera zarówno w oknie, jak i poza nim, ale tylko dopóki jego status to approved.

„That channel is disconnected” / „That channel is not connected” — kanał rozłączony albo w ogóle niepodłączony

Disconnected znaczy, że integracja istnieje, ale nie jest już aktywna — jej token dostępu został unieważniony lub wygasł, albo ktoś ją rozłączył. Not connected znaczy, że za punktem kontaktowym odbiorcy nie stoi żadna integracja. Obie sytuacje naprawia się w Settings → Channels, gdzie rozłączone kanały są zebrane pod własnym nagłówkiem, a każda karta ma przycisk Reconnect; połącz ponownie, a potem ponów wiadomość. Dwa sąsiednie przypadki wyglądają podobnie, ale to co innego: kanału e-mail z niezweryfikowaną domeną nadawczą nie da się przełączyć na Live i nic nie wysyła, dopóki DKIM i SPF nie zostaną potwierdzone, a kanał tylko do odbioru z założenia nie przyjmuje wiadomości wychodzących, więc Retry nigdy się tam nie powiedzie.

„No channel to reach this person on” / „No email address on this contact” — brak kanału albo adresu

Oba pojawiają się w raporcie doręczeń kampanii, a nie w skrzynce. Pierwszy znaczy, że żaden z punktów kontaktowych osoby nie pasuje do kanałów, na które wysyła kampania; jeśli jej jedyny punkt kontaktowy leży na kanale tylko do odbioru, jest to raportowane osobno jako celowe pominięcie. Drugi znaczy, że kampania wysyła e-maile, a kontakt nie ma zapisanego adresu. Telegram ma swój wariant: jeśli osoba nigdy nie napisała do Twojego bota, nie ma czatu, na który można napisać, bo Bot API zabrania botowi odzywać się pierwszemu — to ona musi wysłać pierwszą wiadomość. Napraw to, dodając brakujący adres do kontaktu, poszerzając kanały kampanii albo pozwalając jej wrócić do e-maila.

Kontakt się wypisał — co mogę mu wysłać?

They had already unsubscribed znaczy, że kontakt ma globalną rezygnację — ustawioną przez link wypisu w jednym z Twoich e-maili, wniesioną importem albo przełączoną przez współpracownika. Kampanie i serie pomijają takie kontakty w każdym kanale, nie tylko w e-mailu, a doręczenie jest zapisywane jako pominięcie, nie jako błąd. Odpowiedź jeden na jeden od współpracownika wewnątrz rozmowy celowo nie jest tym blokowana: rezygnacja dotyczy wysyłek masowych, a odpowiedź osobie, która sama do Ciebie napisała, to decyzja człowieka. Stan widnieje na kontakcie jako Outbound: Subscribed / Unsubscribed, listę kontaktów można po nim filtrować, a przycisk Re-subscribe na kontakcie go odwraca — użyj go tylko wtedy, gdy dana osoba o to poprosiła.

Ile razy ponawiacie wysyłkę i czy naciśnięcie Retry jest bezpieczne?

Odpowiedź ze skrzynki trafia do kolejki, która wykonuje maksymalnie pięć prób, czekając między nimi mniej więcej 3, 10, 30 i 30 minut. Ponawiane są wyłącznie awarie przejściowe — przekroczone limity czasu, odrzucone połączenia, limity szybkości, błędy serwera samego dostawcy. Trwała odmowa (nieznany adres, niezweryfikowana domena nadawcza, odrzucone poświadczenia) jest od razu oznaczana jako niepowodzenie, bo powtórka przyniosłaby tę samą odpowiedź. Doręczenia kampanii działają we własnej kolejce, z maksymalnie sześcioma próbami i krótszymi przerwami — 5 sekund, 30 sekund, 2 minuty, 10 minut; gdy się wyczerpią, doręczenie jest zamykane komunikatem Delivery kept failing and was stopped after several attempts, zamiast tkwić w „queued” w nieskończoność. Ręczne naciśnięcie Retry jest bezpieczne. Działa tylko na wiadomość, która faktycznie jest w stanie błędu, a przy e-mailu najpierw pyta dostawcę, co stało się z oryginałem: jeśli ten e-mail jednak wyszedł, wiersz zmienia się na doręczony, zamiast wysyłać drugą kopię, a prawdziwa ponowna wysyłka rusza z nowym kluczem idempotencji. Tam, gdzie druga kopia byłaby błędem — trwałe odbicie, zgłoszenie spamu, wysyłka wciąż w toku — przycisku nie ma albo ponowienie zostaje odrzucone wraz z uzasadnieniem.

Przyczyna nadal jest niejasna — jak uzyskać pomoc?

Przy każdej nieudanej wiadomości jest przycisk Ask Copilot. Otwiera Copilota z dołączonym błędem, kanałem i rozmową, a Copilot odpowiada na podstawie własnej dokumentacji pomocy Respondo, podając kroki dla dokładnie tej awarii. Ta pomoc jest bezpłatna — nie wlicza się do Twoich zapytań AI. Jeśli kroki nie rozwiążą problemu, napisz to wprost — wystarczy „to nie pomogło”. Copilot sam zaproponuje kartę przekazania sprawy zespołowi Respondo: karta wymienia dokładnie, co zostanie wysłane, nic nie wychodzi, dopóki tego nie potwierdzisz, a odpowiedź zespołu przyjdzie w tym samym wątku Copilota. Jeśli przekazanie sprawy nie jest dostępne, Copilot powie o tym wprost, zamiast milczeć.