1. Osadzenie widgetu
W aplikacji ładowany jest skrypt embed ElevenLabs, a widget montowany jest zdynamic-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.
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ź:
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
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.
5. System prompt - obsługa statusu
Dodaj do system promptu jednoznaczną instrukcję, że wynik płatności rozstrzyga wyłącznie polestatus 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ść.