Skip to main content
Agent Panel osadza widget ElevenLabs Conversational AI, dzięki czemu użytkownik może porozmawiać głosowo z agentem sprzedażowym, który sprawdza katalog produktów i finalizuje płatność BLIK - bez wpisywania czegokolwiek w interfejsie.

1. Osadzenie widgetu

W aplikacji ładowany jest skrypt embed ElevenLabs, a widget montowany jest z dynamic-variables przekazującymi agentId portfela, do którego przypisana jest rozmowa:
agentId trafia do agenta ElevenLabs jako zmienna dynamiczna i jest przekazywany dalej w każdym wywołaniu narzędzi płatniczych - to on wiąże rozmowę głosową z konkretnym portfelem.
To są dwa różne identyfikatory o podobnej nazwie - łatwo je pomylić:
  • agent-id (atrybut widgetu) - ID bota w ElevenLabs. Wskazuje, którą konfigurację agenta głosowego załadować (prompt, głos, narzędzia). Stała wartość, ta sama dla każdej rozmowy.
  • agentId (wewnątrz dynamic-variables) - identyfikator portfela Paymove (ten sam co w agentId transakcji/agenta w Agent Panel). Zmienia się w zależności od tego, kto otwiera czat, i to on trafia do process_blik_payment, żeby narzędzie wiedziało, z którego portfela zejść płatność.

2. Konfiguracja narzędzi (webhook tools)

W panelu ElevenLabs → agent → Narzędzia skonfiguruj trzy narzędzia webhook wskazujące na Twoje środowisko Agent Panel (np. https://<twoja-domena>):

get_available_products

Zwraca listę produktów z id, name i price (w groszach).

process_blik_payment

Body (JSON): Odpowiedź:
Ta odpowiedź nie zawiera jeszcze wyniku płatności - externalId służy wyłącznie do sprawdzenia statusu w kolejnym kroku. Agent nie powinien na tej podstawie ogłaszać sukcesu.

check_payment_status

Odpowiedź:

3. Przechwycenie externalId jako dynamic variable

externalId powstaje dopiero w odpowiedzi process_blik_payment, więc w konfiguracji tego narzędzia w sekcji przypisań (assignments) dodaj:
  • pole odpowiedzi externalId → zapisz jako dynamic variable, np. payment_external_id
Następnie w check_payment_status parametr externalId ustaw jako tę samą zmienną dynamiczną ({{payment_external_id}}), a nie jako podpowiedź LLM.

4. Kontrakt groszowy

Wszystkie kwoty w tych trzech narzędziach są w groszach (liczba całkowita, 30 zł = 3000). Cena pobrana z get_available_products trafia bez żadnej modyfikacji do process_blik_payment.price. To samo dotyczy pola amount w odpowiedzi - agent powinien podzielić je przez 100, żeby wypowiedzieć cenę klientowi w złotówkach.
W opisie parametru price w konfiguracji narzędzia process_blik_payment w panelu ElevenLabs upewnij się, że jest napisane wprost, że jednostką są grosze (np. “Cena w groszach - 30 zł należy wysłać jako 3000”). Sam opis w promptcie/systemie nie wystarczy, jeśli opis parametru narzędzia sugeruje PLN - LLM kieruje się przede wszystkim opisem pola.

5. System prompt - obsługa statusu

Dodaj do system promptu jednoznaczną instrukcję, że wynik płatności rozstrzyga wyłącznie pole status z check_payment_status, a nie sam fakt, że wywołanie się powiodło:
Agent Panel niezależnie śledzi te same transakcje i wyświetla użytkownikowi wiadomości o postępie zakupu głosowego w czacie - check_payment_status w ElevenLabs jest potrzebny, żeby agent głosowy wiedział, co powiedzieć klientowi, a nie po to, żeby zainicjować samą płatność.