Informio dla deweloperów

Wstaw czat, Search lub zbuduj własny interfejs

Dodaj gotowy widget czatu lub Informio Search. Własne interfejsy mogą korzystać z publicznego API, dozwolonych domen, lokalizacji i istniejących danych asystenta.

Najprostsze wdrożenie

Kompletny widżet w jednym skrypcie

Najpierw zezwól na domenę swojej witryny w ustawieniach asystenta. Następnie zastąp ASSISTANT_ID publicznym identyfikatorem asystenta i wklej kod na stronę. Widżet automatycznie wczytuje wygląd, etykiety oraz historię rozmowy.

HTML
<script src="https://informio.eu/widget.js" data-assistant="ASSISTANT_ID" defer></script>

Umieść kod przed zamykającym tagiem </body>. Atrybut defer sprawia, że ładowanie strony nie jest blokowane, a widżet działa na komputerach i urządzeniach mobilnych.

Dozwolona domena

Nagłówek Origin w żądaniu musi odpowiadać domenie dozwolonej w ustawieniach asystenta. Przeglądarki wysyłają go automatycznie.

Stała sesja

Losowy session_id zachowuje historię czatu między wiadomościami oraz po ponownym otwarciu klienta.

Publiczny identyfikator asystenta

Identyfikator asystenta nie jest tajnym kluczem API. Nigdy nie umieszczaj sekretów ani danych uwierzytelniających dostawcy AI w kliencie.

Informio Search

Wstaw gotową wyszukiwarkę za pomocą skryptu

Skrypt wyświetla pole, podpowiedzi i wyniki oraz sam wywołuje API Informio. Strona nie potrzebuje własnego backendu wyszukiwania.

  1. 1.Dodaj domenę strony do dozwolonych w ustawieniach asystenta. W zakładce Search włącz wyszukiwanie, wybierz publiczne źródła WWW/XML i zapisz.
  2. 2.Skopiuj wygenerowany kod z panelu. W tym przykładzie zastąp ASSISTANT_ID publicznym identyfikatorem swojego asystenta.
  3. 3.Wstaw kod do szablonu HTML lub bloku własnego HTML obsługującego skrypty. Wyszukiwarka uruchomi się po załadowaniu strony.
Poznaj Informio Search
HTML
<div id="informio-search"></div>
<script src="https://informio.eu/search.js"
  data-assistant="ASSISTANT_ID"
  data-target="#informio-search" defer></script>

data-target to selektor CSS istniejącego kontenera. Bez niego pole pojawi się w miejscu skryptu. Identyfikatory kontenerów muszą być unikalne. Dla każdego pola użyj osobnego skryptu i kontenera.

W React/Vue lub innym SPA umieść kontener w stałym layoucie i załaduj skrypt raz, po utworzeniu kontenera, przez document.createElement('script'). Skrypty wstawione przez innerHTML nie uruchamiają się. Przy często montowanych i usuwanych komponentach użyj poniższego API.

Wygląd i miejsce wyników

Kolor, motyw, zaokrąglenia i język pochodzą z ustawień asystenta. Wybierz wyniki inline lub modal oraz opcjonalne podsumowanie AI. Shadow DOM oddziela interfejs od CSS strony.

Źródła i linki

Wybrane źródła WWW/XML muszą mieć publiczne adresy HTTP(S). Samodzielne źródła MD i dokumenty nie są obsługiwane. Wyniki korzystają z ostatnio zsynchronizowanych danych.

Zużycie planu

Podpowiedzi nie wywołują AI. Jedno udane, zatwierdzone wyszukiwanie AI wraz z opcjonalnym podsumowaniem zużywa jedną odpowiedź organizacji.

Własny interfejs przez Search API

To API służy do własnego interfejsu. Gotowy search.js obsługuje już wszystkie żądania. Search nie wymaga session_id ani tajnego klucza API.

GET/api/search/{assistant}

Zwraca wygląd, język, tryb wyświetlania, branding i zlokalizowane komunikaty.

GET/api/search/{assistant}/suggest?q=wellness

Podpowiedzi tekstowe bez AI, maksymalnie 6 wyników. Wymagany parametr q przyjmuje 3–300 znaków.

POST/api/search/{assistant}/results

Treść JSON zawiera q o długości 3–300 znaków. Zwraca maksymalnie 24 wyniki oraz summary, mode i notice.

Wysyłaj Accept: application/json, a przy POST także Content-Type: application/json. Przeglądarka automatycznie wysyła Origin; domena musi być dozwolona. Accept-Language wybiera język przy automatycznym języku asystenta. Opóźnij podpowiedzi o 300 ms i anuluj nieaktualne żądania.

JavaScript
const assistantId = 'ASSISTANT_ID';
const query = 'wellness';
const response = await fetch(
  `https://informio.eu/api/search/${assistantId}/results`,
  {
    method: 'POST',
    credentials: 'omit',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'application/json',
      'Accept-Language': document.documentElement.lang || 'en',
    },
    body: JSON.stringify({ q: query }),
  },
);
if (!response.ok) throw new Error(String(response.status));
const { results, summary, mode, notice } = await response.json();
const container = document.querySelector('#custom-search-results');
container.replaceChildren();
for (const item of results) {
  const url = new URL(item.url);
  if (!['https:', 'http:'].includes(url.protocol)
    || url.username || url.password) continue;
  const link = document.createElement('a');
  link.href = url.href;
  link.textContent = item.title;
  container.append(link);
}
JSON
{
  "results": [
    {
      "title": "Wellness i godziny otwarcia",
      "url": "https://example.com/wellness",
      "type": "page",
      "excerpt": "Basen, sauny i praktyczne informacje przed wizytą.",
      "image_url": null,
      "price": null,
      "currency": null,
      "in_stock": null
    }
  ],
  "summary": null,
  "mode": "ai",
  "notice": null
}

results zawiera karty; type to page, article, product, event lub profile. Zdjęcie, cena, waluta i stan magazynowy mogą mieć wartość null. summary to tekst lub null; mode to ai lub text, a notice to zlokalizowany komunikat lub null. Lista ma maksymalnie 24 wyniki bez paginacji.

Przykład JavaScript oczekuje kontenera #custom-search-results i wyświetla linki. Fragmenty, summary i notice wyświetlaj przez textContent, nie innerHTML. Sprawdzaj adresy HTTP(S), a zdjęcia ładuj tylko wtedy, gdy image_url istnieje.

Limity i tryb tekstowy

Konfiguracja i podpowiedzi dzielą limit 120 żądań na minutę na asystenta/IP. Wyniki mają limit 20 na minutę na asystenta/IP. Przy 429 respektuj Retry-After.

Błąd AI lub wyczerpany plan może zwrócić HTTP 200 z mode: text i wynikami tekstowymi bez zużycia odpowiedzi. Jeśli zawiedzie tylko podsumowanie, mode pozostaje ai, summary ma wartość null, a wyniki liczą się jako jedno wyszukiwanie AI.

Pobierz OpenAPI

Odpowiedzi błędów

403
Domena nie jest dozwolona.
404
Asystent nie istnieje, jest szkicem lub Search jest wyłączony.
422
Brakujący lub nieprawidłowy parametr q.
423
Asystent jest wstrzymany lub zablokowany przez kontrolę jakości.
429
Przekroczony limit żądań; ponów po czasie Retry-After.

Szybki start

Uzyskaj swoją pierwszą odpowiedź z API

Zastąp ASSISTANT_ID publicznym identyfikatorem z ustawień asystenta. W całej rozmowie używaj tego samego session_id.

Bazowy adres URL

https://informio.eu/api
curl --request POST \
  --url https://informio.eu/api/widget/ASSISTANT_ID/messages \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --header 'Origin: https://example.com' \
  --data '{
    "session_id": "visitor-session-01JEXAMPLE1234567890",
    "message": "When are you open?"
  }'

Dokumentacja API

Publiczne API widżetu

Stabilne endpointy używane przez oficjalny widżet Informio.

GET/widget/{assistant}

Konfiguracja asystenta

Zwraca nazwę, wygląd, etykiety, dostępność operatora oraz istniejącą historię dla sesji.

POST/widget/{assistant}/messages

Wyślij wiadomość

Wysyła pytanie odwiedzającego i zwraca odpowiedź, produkty lub bieżący stan przekazania do człowieka.

GET/widget/{assistant}/sync

Synchronizuj czat

Wczytuje nowe wiadomości operatora, stan przejęcia oraz zakończenie rozmowy bez odświeżania całego interfejsu.

POST/widget/{assistant}/handoff

Poproś o operatora

Prosi dostępną ekipę o przejęcie rozmowy, gdy dla asystenta włączone jest przekazanie do człowieka.

POST/widget/{assistant}/page-view

Śledź nawigację odwiedzającego

Powiązuje odwiedzony adres URL i tytuł strony z rozmową, bez zawartości formularzy ani parametrów zapytania.

POST/widget/{assistant}/end

Zakończ i oceń

Kończy bieżącą rozmowę i opcjonalnie zapisuje pozytywną lub negatywną ocenę odwiedzającego.

Zalecany przepływ

Jedna sesja od otwarcia do zakończenia

Klient potrzebuje tylko publicznego identyfikatora asystenta, dozwolonego Origin oraz stałego session_id.

1

Wczytaj konfigurację

Gdy czat się otwiera, pobierz jego wygląd, etykiety oraz istniejącą historię sesji.

2

Wysyłaj wiadomości

Wysyłaj każde pytanie z tym samym session_id i na stronie internetowej uwzględniaj bieżącą stronę.

3

Utrzymuj synchronizację

Po poproszeniu o człowieka regularnie wczytuj nowe wiadomości oraz stan operatora.

Kontrakt czytelny dla maszyn

Zaimportuj OpenAPI YAML do Postman lub Insomnia albo użyj go do wygenerowania klienta w preferowanym języku.

Pobierz OpenAPI

Chcesz zarządzać asystentami przez API?

Publiczny kontrakt obejmuje czat, widget i Search. API zarządzania asystentami i źródłami wiedzy nie jest publiczne; napisz na info@informio.eu.

Zamień swoją wiedzę ekspercką w asystenta, który odpowiada 24/7.

Zacznij bez karty płatniczej ani klucza API. Domyślny Informio AI jest gotowy automatycznie, a własne konto OpenAI lub serwer AI pozostają opcjonalne.

PLAN FREE · 100 odpowiedzi · bez karty płatniczej