Instrukcja Integracji

Aby Twój asystent AI mógł nauczyć się Twojej oferty, potrzebujemy bezpiecznego dostępu do treści strony. Wybierz swój system poniżej i postępuj zgodnie z instrukcją.

Wybierz platformę

WooCommerce (Sklep)

Instrukcja generowania kluczy Consumer Key oraz Consumer Secret z dostępem tylko do produktów — bez zamówień i danych klientów.

Dlaczego dodatkowe kroki? Klucz WooCommerce z uprawnieniem „Odczyt” widzi wszystko, co widzi jego właściciel — także zamówienia, klientów i ustawienia sklepu. ZenTalk potrzebuje tylko produktów, dlatego zakładamy osobnego użytkownika i dodajemy mały plik, który ogranicza jego klucz do odczytu produktów i waluty sklepu.

1

Utwórz użytkownika dla ZenTalk

W panelu WordPress wybierz: Użytkownicy → Dodaj nowego. Nazwa użytkownika: zentalk-api (dokładnie tak — plik z następnego kroku rozpoznaje go po tej nazwie). E-mail: dowolny adres, do którego masz dostęp. Rola: Subskrybent. Ustaw długie, losowe hasło — nikt nie będzie się na to konto logował.

2

Zainstaluj wtyczkę zabezpieczającą

Pobierz wtyczkę ZenTalk (plik ZIP). W panelu WordPress wybierz: Wtyczki → Dodaj nową → Wyślij wtyczkę na serwer, wskaż pobrany plik, kliknij Zainstaluj, a potem Włącz.

Pobierz wtyczkę (ZIP)

Wolisz bez instalowania wtyczki? Skopiuj poniższy kod i zapisz go jako plik zentalk-api.php w folderze wp-content/mu-plugins/ na serwerze sklepu (przez FTP lub menedżer plików na hostingu). Jeśli folderu mu-plugins nie ma, utwórz go. WordPress włącza pliki z tego folderu automatycznie — nie trzeba niczego aktywować, a plik pojawi się na liście wtyczek w zakładce Must-Use. Tak wgranej wtyczki nie da się przypadkiem wyłączyć.

wp-content/mu-plugins/zentalk-api.php
<?php
/**
 * Plugin Name: ZenTalk – read-only product access
 * Plugin URI: https://zentalk.pl/instructions#woocommerce
 * Description: Limits the "zentalk-api" user (WooCommerce key and Application Password) to reading products, the store currency and published pages and posts. Every other request returns 403.
 * Author: ZenTalk
 * Version: 1.0.0
 * Date: 2026-07-01
 */

defined( 'ABSPATH' ) || exit;

$zentalk_is_api_user = static function () {
	$user = wp_get_current_user();
	return $user->exists() && 'zentalk-api' === $user->user_login;
};

// 1) Allow-list: the zentalk-api user may only GET products, the store currency and published content.
add_filter( 'rest_pre_dispatch', static function ( $result, $server, $request ) use ( $zentalk_is_api_user ) {
	if ( ! $zentalk_is_api_user() ) {
		return $result;
	}

	$route   = untrailingslashit( $request->get_route() );
	$allowed = 'GET' === $request->get_method() && (
		preg_match( '#^/wc/v3/products(/\d+)?$#', $route )
		|| '/wc/v3/settings/general/woocommerce_currency' === $route
		|| preg_match( '#^/wp/v2/(pages|posts|categories|tags)(/\d+)?$#', $route )
	);

	if ( ! $allowed ) {
		return new WP_Error( 'zentalk_forbidden', 'This account can only read products, pages and posts.', array( 'status' => 403 ) );
	}

	// Published content only, public fields only — whatever the caller asks for.
	$request->set_param( 'context', 'view' );
	if ( 0 === strpos( $route, '/wc/v3/products' ) ) {
		$request->set_param( 'status', 'publish' );
	}

	return $result;
}, 10, 3 );

// 2) WooCommerce permission check: read only, published products and the currency setting only.
add_filter( 'woocommerce_rest_check_permissions', static function ( $permission, $context, $object_id, $object ) use ( $zentalk_is_api_user ) {
	if ( ! $zentalk_is_api_user() ) {
		return $permission;
	}

	if ( 'read' !== $context ) {
		return false;
	}

	if ( 'settings' === $object ) {
		return true;
	}

	return 'product' === $object && ( ! $object_id || 'publish' === get_post_status( $object_id ) );
}, 10, 4 );
Co robi ten kod
  • Dotyczy wyłącznie użytkownika zentalk-api — Ciebie, Twoich pracowników ani klientów sklepu nie zmienia w żaden sposób.
  • Pozwala mu tylko czytać opublikowane produkty i walutę sklepu oraz opublikowane strony i wpisy (jeśli podłączasz też WordPress).
  • Każde inne zapytanie — zamówienia, klienci, kupony, raporty, ustawienia, użytkownicy WordPress — kończy się błędem 403 „brak dostępu”.
  • Blokuje każdy zapis: tym kluczem nie da się niczego dodać, zmienić ani usunąć.
  • Niczego nie wysyła, nie łączy się z serwerami ZenTalk i nie zmienia bazy danych sklepu.
  • Wyłączenie lub usunięcie wtyczki nic w sklepie nie psuje — klucz ZenTalk po prostu przestanie działać.

Nie masz dostępu do plików? Wklej kod we wtyczce Code Snippets (bez pierwszej linii <?php) i ustaw uruchamianie wszędzie.

3

Wejdź w ustawienia

Zaloguj się do panelu administratora WordPress. W menu po lewej wybierz: WooCommerce → Ustawienia.

4

Znajdź zakładkę REST API

Kliknij w zakładkę Zaawansowane (na górze po prawej), a następnie w podmenu wybierz REST API.

5

Dodaj nowy klucz

Kliknij przycisk Dodaj klucz. Opis: np. "ZenTalk Chat AI". Użytkownik: zentalk-api (nie Twoje konto administratora). Uprawnienia: Odczyt (Read).

6

Skopiuj dane

Kliknij "Wygeneruj klucz API". Zobaczysz dwa ciągi znaków: Consumer Key i Consumer Secret.

Klucz klienta (Consumer Key)
ck_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sekret klienta (Consumer Secret)
cs_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Ważne: Skopiuj te klucze TERAZ. Po opuszczeniu tej strony nie będziesz mógł ich już zobaczyć!

WordPress (Strona / Blog)

Instrukcja utworzenia Hasła aplikacji dla osobnego użytkownika, który może tylko czytać opublikowane strony i wpisy.

Hasło aplikacji to nie jest hasło do logowania — to osobny kod tylko do API, który możesz w każdej chwili unieważnić. Tworzymy je dla osobnego użytkownika z rolą Subskrybent: widzi tylko to, co i tak jest opublikowane na stronie, i nie może niczego zmienić ani usunąć.

1

Utwórz użytkownika dla ZenTalk

W panelu WordPress wybierz: Użytkownicy → Dodaj nowego. Nazwa użytkownika: zentalk-api, e-mail: dowolny adres, do którego masz dostęp, rola: Subskrybent. Ustaw długie, losowe hasło — nikt nie będzie się na to konto logował. Masz już tego użytkownika z instrukcji WooCommerce? Pomiń ten krok — jeden użytkownik obsłuży sklep i stronę.

2

Otwórz profil użytkownika zentalk-api

Wejdź w Użytkownicy → Wszyscy użytkownicy, najedź kursorem na zentalk-api i kliknij Edytuj. Przewiń na sam dół, do sekcji Hasła aplikacji. Nie widzisz jej? Potrzebny jest WordPress 5.6 lub nowszy, a niektóre wtyczki bezpieczeństwa wyłączają Hasła aplikacji — wtedy włącz je w ustawieniach tej wtyczki.

3

Utwórz Hasło aplikacji

W polu Nazwa nowego hasła aplikacji wpisz ZenTalk i kliknij Dodaj nowe hasło aplikacji.

4

Skopiuj hasło

WordPress pokaże hasło tylko raz. Skopiuj je w całości — spacje nie mają znaczenia, ZenTalk sam je usunie.

5

Wklej dane w ZenTalk

W panelu ZenTalk wejdź w Ustawienia → Integracje i dodaj integrację WordPress. W polu Username wpisz zentalk-api, a w polu Application Password wklej skopiowane hasło. Dostęp możesz w każdej chwili odebrać, unieważniając to hasło w profilu użytkownika zentalk-api.

Username
zentalk-api
Application Password
xxxx xxxx xxxx xxxx xxxx xxxx

Dowolny sklep (feed produktowy)

Instrukcja podłączenia katalogu z dowolnej platformy — Shoper, Shopify, PrestaShop, IdoSell, Wix i każdej innej, która generuje feed produktów dla Google.

Feed to najprostsza i najbezpieczniejsza droga: ZenTalk dostaje tylko listę produktów, którą i tak udostępniasz Google Shopping albo porównywarkom — bez kluczy, haseł i dostępu do panelu sklepu. Feed i WooCommerce się wykluczają: włączenie feeda wyłącza integrację WooCommerce.

1

Wygeneruj feed Google Merchant

W panelu sklepu znajdź eksport produktów dla Google Merchant Center / Google Shopping — zwykle w module integracji, marketingu albo porównywarek cenowych (w Shopify i Wix przez aplikację do feedów produktowych). Potrzebujesz linku do pliku XML, który sklep sam aktualizuje.

2

Sprawdź link

Otwórz link w przeglądarce w oknie prywatnym — powinien od razu pokazać XML z produktami, bez logowania. Adres musi zaczynać się od https://. Token w adresie (np. ?key=…) jest w porządku, ale login i hasło w adresie (https://login:hasło@…) nie są obsługiwane. Maksymalny rozmiar pliku: 200 MB.

3

Sprawdź, co jest w feedzie

Każdy produkt musi mieć g:id, g:title i g:link (pełny adres strony produktu) — produkty bez nich są pomijane. Warto, żeby miał też g:price lub g:sale_price, g:availability, g:description, g:brand, g:image_link, g:mpn i g:product_type. Pozostałe pola (np. g:color, g:material, wymiary) asystent dostaje jako specyfikację produktu — im więcej parametrów, tym trafniejsze odpowiedzi.

Przykładowy produkt w feedzie
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
  <channel>
    <item>
      <g:id>12345</g:id>
      <g:title>Sofa Milano 3-osobowa</g:title>
      <g:link>https://shop.example/sofa-milano</g:link>
      <g:description>Trzyosobowa sofa z funkcją spania, welur, szerokość 228 cm.</g:description>
      <g:price>3299.00 PLN</g:price>
      <g:sale_price>2999.00 PLN</g:sale_price>
      <g:availability>in stock</g:availability>
      <g:brand>Milano</g:brand>
      <g:mpn>MIL-3-GR</g:mpn>
      <g:image_link>https://shop.example/img/sofa-milano.jpg</g:image_link>
      <g:product_type>Meble &gt; Sofy</g:product_type>
      <g:color>Szary</g:color>
      <g:material>Welur</g:material>
    </item>
  </channel>
</rss>
4

Wklej link w ZenTalk

W panelu ZenTalk wejdź w Ustawienia → Integracje. W sekcji Feed produktowy wklej link w pole URL feeda, zaznacz Włączony i kliknij Zapisz feed.

URL feeda
https://shop.example/google-merchant.xml
5

Uruchom synchronizację

Pierwszą synchronizację uruchom w Baza wiedzy → Synchronizuj produkty. Potem ZenTalk pobiera feed automatycznie raz dziennie — nowe produkty, ceny i stany pojawią się w czacie bez Twojej pracy. Liczba produktów zależy od planu (3, 10 lub 30 tys.).

Masz tylko plik CSV? Napisz do nas — ustawimy mapowanie kolumn (separator: średnik, nagłówki w pierwszym wierszu).

Shoper

Instrukcja generowania klucza API z ograniczonymi uprawnieniami (tylko odczyt katalogu). Klucz wkleisz w panelu ZenTalk w zakładce Integracje.

Zalecana praktyka bezpieczeństwa: używaj osobnego użytkownika z dostępem tylko do WebAPI w trybie odczytu. ZenTalk nie potrzebuje dostępu do zamówień ani danych klientów.

1

Utwórz grupę administratorów

Zaloguj się do panelu Shopera. Wejdź w: Ustawienia → Ogólne → Grupy administratorów. Kliknij Dodaj grupę i nazwij ją np. "AI Integracja".

2

Ustaw tylko odczyt WebAPI

W zakładce Uprawnienia odznacz wszystko. Zaznacz jedynie WebAPI (dostęp do API). W sekcji WebAPI ustaw TYLKO odczyt (GET) dla: Produkty (Kategorie, Producenci, Atrybuty, Warianty, Zdjęcia), Strony informacyjne, Blog (Wpisy, Kategorie). Ważne: Zamówienia i Klienci muszą być ODZNACZONE.

3

Dodaj użytkownika do grupy

Wejdź w: Ustawienia → Ogólne → Użytkownicy. Dodaj nowego użytkownika (np. api_zenTalk), ustaw hasło i przypisz go do grupy "AI Integracja". Zapisz.

4

Wygeneruj klucz API

W panelu Shopera wejdź w sekcję WebAPI lub Integracje (w zależności od wersji). Utwórz nowy klucz API / token dla utworzonego użytkownika (lub zaloguj się na tego użytkownika i wygeneruj klucz). Skopiuj wyświetlony klucz API – to jedyna wartość, której potrzebujesz.

5

Wklej klucz w ZenTalk

W panelu ZenTalk (zakładka Integracje przy danym kliencie) dodaj integrację typu Shoper. W polu "Shoper API Key" wklej skopiowany klucz. Zapisz. Od tego momentu synchronizacja będzie pobierać tylko produkty, strony i blog.

Shoper API Key
wklej_skopiowany_klucz_api

Shopify

Instrukcja generowania kluczy API z ograniczonymi uprawnieniami (odczyt katalogu). Klucze wkleisz w panelu ZenTalk w zakładce Integracje.

1

Utwórz aplikację niestandardową

Zaloguj się do panelu Shopify. Wejdź w: Ustawienia → Aplikacje i kanały sprzedaży → Opracuj aplikacje → Utwórz aplikację. Nazwij ją np. "ZenTalk AI".

2

Skonfiguruj uprawnienia API

W konfiguracji aplikacji wybierz Admin API. Ustaw tylko uprawnienia do odczytu, np.: read_products, read_online_store_pages (strony), read_content (blog). Nie włączaj uprawnień do zamówień ani klientów. Zapisz.

3

Zainstaluj aplikację i pobierz dane

Zainstaluj aplikację na sklepie (jeśli wymagane). W sekcji Klucze API / Tokeny skopiuj Client ID (lub API key) oraz Client Secret (lub API secret). W nowszych wersjach Shopify możesz wygenerować Admin API access token – skopiuj go.

4

Wklej klucze w ZenTalk

W panelu ZenTalk (zakładka Integracje) dodaj integrację typu Shopify. Wklej skopiowany API Key i API Secret w odpowiednie pola. Zapisz. Synchronizacja będzie pobierać tylko produkty i treści zgodnie z uprawnieniami.

Shopify API Key
shpua_xxxxxxxxxxxxxxxx
Shopify API Secret
shpus_xxxxxxxxxxxxxxxx
Skopiuj klucze od razu – w niektórych konfiguracjach Secret pokazywany jest tylko raz.

Wix

Instrukcja generowania klucza API. Klucz wkleisz w panelu ZenTalk w zakładce Integracje.

Użyj klucza API z uprawnieniami tylko do odczytu treści strony (produkty, blog, strony). ZenTalk nie potrzebuje dostępu do zamówień ani danych użytkowników.

1

Wejdź do Centrum Deweloperów

Zaloguj się na konto Wix. Wejdź na developers.wix.com lub w panelu strony: Ustawienia strony → Zaawansowane → API. Otwórz dashboard dewelopera / integracje.

2

Utwórz aplikację lub wybierz stronę

Utwórz nową aplikację (lub użyj istniejącej). Wybierz swoją stronę / sklep. W konfiguracji ustaw uprawnienia tylko do odczytu (np. odczyt katalogu, stron, bloga).

3

Wygeneruj klucz API

W sekcji API Keys / Credentials wygeneruj nowy klucz API (lub skopiuj istniejący). Zapisz go w bezpiecznym miejscu – to jedyna wartość, której potrzebujesz do ZenTalk.

4

Wklej klucz w ZenTalk

W panelu ZenTalk (zakładka Integracje przy danym kliencie) dodaj integrację typu Wix. W polu "Wix API Key" wklej skopiowany klucz. Zapisz. Synchronizacja będzie pobierać treści zgodnie z uprawnieniami klucza.

Wix API Key
wklej_skopiowany_klucz_api