Poradniki
Agent głosowy
Agent jest tak dobry, jak dobrze napisany jest jego prompt systemowy. Ta strona pokazuje, jak go napisać, zawiera trzy gotowe wzory do skopiowania oraz limity, które trzeba uwzględnić.
Numer asystenta
Agent odbiera i wykonuje połączenia z numeru, który mu przypiszesz na stronie szczegółów agenta (w API pole numberE164). Numer głosowy przyjmuje i wykonuje połączenia, ale nie obsługuje SMS-ów. Jeśli chcesz, żeby asystent miał numer, pod który ludzie mogą zadzwonić i napisać, i z którego sam dzwoni i wysyła SMS-y, zamów numer do połączeń i SMS: praski numer stacjonarny, który po rejestracji u operatora (zwykle w ciągu 1 dnia roboczego, najpóźniej w ciągu 48 godzin) odbiera agent działający na własnym silniku głosowym volai. Połączenia z tego numeru idą tylko na numery czeskie (+420), a SMS-y z niego nie mają potwierdzeń doręczenia. Szczegóły znajdziesz w dokumentacji API, w sekcji Numer do połączeń i SMS.
1Struktura systemPrompt
Dobry prompt ma cztery części. Bez którejkolwiek z nich agent prędzej czy później utknie i nie będzie wiedział, co dalej - albo zamilknie, albo coś wymyśli.
- Kim jestem - jedno lub dwa zdania: nazwa firmy, rola, ton głosu. Agent musi odnaleźć się w tym już w pierwszej kwestii.
- Co potrafię - konkretne zadania, które agent naprawdę wykonuje (zamówienie, termin, informacja) - a nie ogólne „pomogę we wszystkim”.
- Czego NIGDY nie robię - granice: czego agent nie może wymyślać, obiecywać ani ujawniać. Ta część jest pomijana najczęściej, a właśnie ona odróżnia agenta, który wymyśla ceny, od agenta, który uczciwie powie „tego nie wiem, proszę zadzwonić na...”.
- Jak zakończyć rozmowę - kiedy i jak zamknąć rozmowę (podsumowanie, pożegnanie) oraz co zrobić, gdy klient chce czegoś spoza zakresu.
Dłuższe instrukcje spowalniają odpowiedź mniej więcej o jedną dziesiątą sekundy na każde dwa tysiące znaków - edytor agenta ostrzega o tym od 3000 znaków. Twardy limit wynosi 6000 znaków.
Trzy kompletne wzory - skopiuj i dostosuj do siebie:
Recepcjonistka z zamówieniami
Jesteś głosową recepcjonistką kawiarni Nula na Vinohradach. Mówisz spokojnie,
przyjaźnie i zwięźle - tak, jak mówiłaby doświadczona obsługa, a nie robot.
CO POTRAFISZ
- Przyjmujesz zamówienia na odbiór osobisty (kawa, herbata, croissanty, kanapki).
- Podajesz aktualne godziny otwarcia: od poniedziałku do piątku 8:00-18:00,
w weekend 9:00-15:00.
- Na końcu zamówienia powtarzasz je w całości i potwierdzasz godzinę odbioru
(najwcześniej za 15 minut od teraz).
CZEGO NIGDY NIE ROBISZ
- Nie wymyślasz cen ani pozycji, których nie ma w ofercie - powiedz, że
dokładną cenę potwierdzi obsługa na miejscu.
- Nie obiecujesz dowozu, kawiarnia nie dowozi zamówień.
- Nigdy nie udajesz człowieka, gdy klient zapyta o to wprost - powiedz,
że jesteś głosowym asystentem kawiarni.
JAK ZAKOŃCZYĆ ROZMOWĘ
Podsumuj zamówienie i godzinę odbioru, życz miłego dnia i zakończ rozmowę.
Jeśli klient chce czegoś, czego nie umiesz załatwić (reklamacja, catering),
powiedz, żeby zadzwonił ponownie w godzinach pracy i porozmawiał
bezpośrednio z właścicielem.Ankieta satysfakcji
Dzwonisz w imieniu sklepu internetowego Botanika z krótką ankietą
satysfakcji po niedawnym zamówieniu. Jesteś uprzejma, przechodzisz od razu
do rzeczy i nie przeciągasz rozmowy.
CO POTRAFISZ
- Pytasz, czy klient ma chwilę na trzy krótkie pytania.
- Pytanie 1: Jak oceniłby swoje zadowolenie z zamówienia w skali 1-5.
- Pytanie 2: Czy paczka dotarła na czas?
- Pytanie 3: Czy jest coś, co moglibyśmy poprawić?
- Zapamiętujesz odpowiedzi i na końcu rozmowy krótko je podsumowujesz.
CZEGO NIGDY NIE ROBISZ
- Nie naciskasz na klienta, gdy odmówi lub powie, że nie ma czasu - od razu
uprzejmie się pożegnaj.
- Nie zajmujesz się reklamacjami ani zwrotami towaru - to sprawa infolinii
obsługi klienta, której numer podasz klientowi na prośbę.
- Nie oferujesz zniżek ani kuponów, nie masz do tego upoważnienia.
JAK ZAKOŃCZYĆ ROZMOWĘ
Podziękuj za czas i opinię, życz miłego dnia. Jeśli klient w dowolnym
momencie powie, że nie chce kontynuować, od razu uprzejmie zakończ rozmowę
bez dalszych pytań.Portiernia / biuro podawcze
Jesteś głosową portiernią firmy Nordwex w biurowcu na
Pankráci. Pod ten numer dzwonią kurierzy, goście i dostawcy.
CO POTRAFISZ
- Ustalasz, kto dzwoni i w jakim celu (kurier z paczką, gość umówiony
na spotkanie, dostawca).
- W przypadku gościa ustalasz imię i nazwisko oraz z kim jest umówiony,
mówisz, żeby zgłosił się w recepcji na parterze i poczekał, aż ktoś po niego
przyjdzie.
- W przypadku kuriera mówisz, żeby zostawił paczkę w recepcji i napisał na
niej nazwę firmy oraz adresata.
- Przyjmujesz krótką wiadomość, gdy osoba, do której dzwonią, jest chwilowo
niedostępna.
CZEGO NIGDY NIE ROBISZ
- Nie podajesz numerów prywatnych telefonów komórkowych pracowników - zaproponuj
połączenie z recepcją lub przyjęcie wiadomości.
- Nie wpuszczasz nikogo "na górę samodzielnie" - wszyscy goście przechodzą
przez recepcję.
- Nie udzielasz informacji o tym, kto jest w budynku i kiedy - powiedz,
że trzeba to sprawdzić w recepcji.
JAK ZAKOŃCZYĆ ROZMOWĘ
Powtórz, co ustalono (wiadomość, oczekiwanie w recepcji, przełączenie),
życz miłego dnia i zakończ rozmowę.2Szablony według branży
Nie chcesz pisać promptu od zera? Na stronie są gotowe szablony dla sześciu branż (gabinet dentystyczny, warsztat samochodowy, restauracja, sklep internetowy, biuro nieruchomości, rzemieślnicy) - gotowy prompt systemowy, przykładowy dialog i przykład tego, ile kosztowałaby taka recepcjonistka. Skopiuj i dostosuj do siebie, tak jak wzory powyżej.
Przegląd szablonów według branży
3firstMessage
firstMessage to pierwsze zdanie, które usłyszy klient - przy połączeniu przychodzącym zaraz po odebraniu, przy wychodzącym zaraz po tym, jak rozmówca podniesie słuchawkę.
- Krótko, językiem mówionym - tak, jak powiedziałby to człowiek, a nie jak napisałby w e-mailu.
- Od razu powiedz, kto lub co dzwoni albo odbiera - klient musi w ciągu trzech sekund wiedzieć, z kim rozmawia.
- Zakończ otwartym pytaniem („w czym mogę pomóc”, „czy ma Pan/Pani chwilę”) - a nie długim monologiem.
- Przeczytaj to na głos - to, co dobrze wygląda na papierze, może brzmieć topornie, gdy zostanie wypowiedziane.
- W połączeniach wychodzących od razu na początku przedstaw się i podaj powód dzwonienia - na nieznane numery ludzie niechętnie odbierają.
4Narzędzia
Narzędzie to adres Twojego API, który agent wywołuje w trakcie rozmowy, a odpowiedź od razu wykorzystuje w mowie. Bez narzędzia agent potrafi tylko mówić; z narzędziem może sprawdzić zamówienie, znaleźć wolny termin lub zapisać rezerwację.
Narzędzia zakłada się w portalu pod /agent/nastroje (lub przez POST /v1/tools), a następnie włącza agentowi polem wyboru na jego stronie szczegółów (w API pole toolIds). Narzędzie należy do konta, nie do agenta - to samo narzędzie może więc używać wielu agentów. Podajesz dla niego cztery rzeczy:
- Nazwa - czytelna („Sprawdź zamówienie”). Nazwa dla modelu zostanie z niej wyprowadzona automatycznie (
sprawdz_zamowienie) i pokaże się pod polem. - Kiedy agent ma go użyć - jedyne, na podstawie czego model w ogóle zdecyduje się wywołać narzędzie. Pisz to jako polecenie: „Użyj, gdy dzwoniący pyta, gdzie jest jego zamówienie.”
- Adres i metodę - tylko
https, publicznie dostępny.GETwysyła parametry w query,POSTw treści JSON. Do tego nagłówki, zazwyczajAuthorization. - Parametry - dla każdego określasz, skąd pochodzi wartość: model wyciąga ją z rozmowy, wstawia się numer dzwoniącego lub numer wybierany, albo jest to wartość stała.
Tak wygląda żądanie, które trafi do Twojego endpointu w trakcie rozmowy:
POST https://api.twojaaplikacja.pl/orders
Content-Type: application/json
Authorization: Bearer twoj_klucz
{
"order_number": "A-42",
"phone": "+420777123456"
}A tak odpowiedź, z którą agent potrafi pracować - krótki JSON, z którego da się ułożyć jedno zdanie:
{
"status": "shipped",
"delivery": "jutro przed południem"
}Zanim zapiszesz narzędzie, wypróbuj je
Formularz ma przycisk Wypróbuj: wysyła na podany adres prawdziwe żądanie z przykładowymi wartościami i pokazuje status, czas odpowiedzi oraz początek odpowiedzi. Nic przy tym nie jest zapisywane. Warto to zrobić - endpoint, który odpowiada wolno, dzwoniący odbiera jako ciszę w rozmowie.
Limity: najwyżej 10 narzędzi na konto, 10 parametrów i 5 nagłówków na narzędzie, limit czasu odpowiedzi od 5 do 30 sekund (domyślnie 20) - dokładnie tyle agent czeka na odpowiedź, a w międzyczasie mówi zdanie pomostowe, żeby dzwoniący nie słyszał ciszy. Wartości nagłówków pokażemy Ci z powrotem tylko zamaskowane (Bear***) - pełnej treści nie da się odczytać z konta.
Bramka zgody przy narzędziu, które coś wysyła
Przy narzędziu z efektem ubocznym (wysyła SMS, zakłada zgłoszenie) włącz polem requireConfirmation: true bramkę zgody (POST i PATCH /v1/tools, w MCP create_tool i update_tool). Własny silnik głosowy volai wykona wtedy narzędzie tylko wtedy, gdy ostatnia wypowiedź dzwoniącego jasno wyraża zgodę. Przy niejasnej odpowiedzi („Halo”, „Tak?”, „Tak, ale później”) narzędzie nie zostanie wykonane, agent dostanie polecenie, by zapytać ponownie, a zakończenie rozmowy w tej samej turze zostanie wstrzymane. Domyślnie jest wyłączona.
Dotyczy tylko agenta na własnym silniku w języku czeskim lub słowackim: silnik zna słowa zgody tylko w tych dwóch językach (dla en, de i pl blokowałby nawet jasne „Yes”), więc pole u agenta w innym języku jest ignorowane, a ElevenLabs go nie używa. Narzędzie należy do konta i jest współdzielone przez wielu agentów, dlatego jego zapis nie jest odrzucany z powodu języka. Bramka czyta tylko ostatnią wypowiedź i nie zna pytania agenta: wychwytuje niejasną zgodę, ale nie każde „Tak” powiedziane w odpowiedzi na inne pytanie. Zmiana narzędzia trafia do agenta, który już działa na silniku, dopiero przy jego następnym zapisie lub publikacji - edycja narzędzia sama nie nadpisuje agentów. W przypadku trwającej kampanii liczy się sposób: ponowna publikacja przetestowanego szkicu bez zmian zachowuje znacznik „przetestowano”, zadanie działa dalej, ale już z bramką, której test nie obejmował; bezpośredni zapis agenta (PATCH /v1/agents/{id}) znacznik usuwa, a zadanie zostaje zatrzymane kodem agent_version_changed. Włączenie bramki zaplanuj więc poza trwającą kampanią i po nim przetestuj kampanię ponownie.
W portalu bramkę włączasz przełącznikiem Wymagaj jasnej zgody dzwoniącego w edytorze narzędzia (/agent/nastroje). Obowiązuje dla niej to samo, co opisano wyżej; agentowi, który już działa na silniku, zmiana trafia po kliknięciu Publikuj na jego stronie szczegółów.
5Przełączenie do człowieka
Agent potrafi przekazać rozmowę na Twój numer, gdy dzwoniący poprosi o człowieka albo trafi na sprawę, której agent nie umie rozwiązać. Włącza się to na stronie szczegółów agenta (w API pole transferTo), warunek zapisujesz jako polecenie dla modelu w transferCondition. Bez niego użyjemy zdania domyślnego.
Na własnym silniku głosowym volai
Na własnym silniku głosowym volai przełączenie odbywa się mostem: agent powie, że Cię łączy, dzwoniący słyszy sygnał połączenia, a osoba pod Twoim numerem widzi numer agenta. Po odebraniu agent milknie, a rozmowa toczy się dalej między Wami dwiema stronami przez volai. Jeśli któraś ze stron się rozłączy, rozmowa kończy się dla obu. Jeśli nie odbierzesz w ciągu 25 sekund, agent przeprosi dzwoniącego, zaproponuje przyjęcie wiadomości i będzie kontynuował.
Dwie rzeczy, które trzeba wiedzieć z góry
Podsumowania rozmowy człowiekowi nie przekazujemy. Dzwoniący usłyszy, że jest przełączany, ale operator po drugiej stronie odbiera od razu dzwoniącego - nie ma „warm transfer”, w którym agent najpierw streściłby, o co chodzi; przez sieć telefoniczną tego nie umiemy. Uwzględnij to w instrukcjach: niech agent powie dzwoniącemu, że być może będzie musiał powtórzyć sprawę.
Przełączenie jest zwykłym połączeniem wychodzącym i tak też jest rozliczane: 0.92 CZK/min od odebrania do rozłączenia, bez narzutu za agenta (agenta na tym odcinku już nie ma). W historii połączeń rozpoznasz je po rodzaju transfer, a na stronie szczegółów pierwotnego połączenia znajdziesz kartę Przełączenie z odnośnikiem do tego odcinka. Odcinek przychodzący trwa dalej i jest rozliczany osobno.
Platforma standardowa (ElevenLabs)
Na platformie standardowej (ElevenLabs) przełączenie nie działa - operator SIP go nie dokończy. Po włączeniu przełączenia volai zaraz po zapisie spróbuje przenieść agenta na własny silnik głosowy. Próba może być wstrzymana, silnik niedostępny albo przełączenie może się nie powieść; na podstawie zwróconego pola provider sprawdź więc, czy agent rzeczywiście działa na silniku. Dopóki pozostaje na ElevenLabs, przełączenie nie działa. Udane przełączenie może zmienić głos agenta, domyślnym głosem silnika jest Milena.
Nie można przełączyć na własny numer volai - połączenie wracałoby samo do siebie, aż skończyłoby się saldo. Linie o podwyższonej opłacie (90x) są z tego samego powodu zablokowane.
Agent korzystający z numer do połączeń i SMS przełącza tylko na numery czeskie (+420): połączenia z tego numeru idą tylko na numery czeskie, więc numer do przełączenia spoza +420 nie zostanie u takiego agenta zapisany, a API zwróci destination_not_allowed.
6Co zapisać z rozmowy
Zamiast czytać cały zapis rozmowy, możesz określić, czego dokładnie z rozmowy potrzebujesz - imię, liczbę sztuk, czy sprawa jest pilna. Agent wypełni to po rozmowie, a Ty otrzymasz to jako JSON.
Każde pole ma klucz, typ i opis. Najwyżej dziesięć pól na agenta:
- Klucz (
key) - małe litery bez znaków diakrytycznych, cyfry i podkreślniki, do 40 znaków - musi zaczynać się od małej litery. Pod tą nazwą znajdziesz wartość w wyniku. - Typ (
type) -string,numberlubboolean. - Opis (
description) - co dokładnie model ma wyciągnąć, od 5 do 500 znaków. Napisz też, co ma zrobić, jeśli w rozmowie to nie padnie. - Opcje (
enumValues) - opcjonalna lista wartości, tylko dla pola tekstowego. Model wybiera wtedy wyłącznie spośród zaproponowanych wartości, dzięki czemu wynik można od razu filtrować. Najwyżej 20 opcji, każda do 60 znaków.
curl -X PATCH https://volai.eu/v1/agents/ag_kx91fa2b \
-H "Authorization: Bearer vk_TWOJ_KLUCZ" \
-H "Content-Type: application/json" \
-d '{
"dataFields": [
{"key": "name", "type": "string", "description": "Imię dzwoniącego, które sam podał. Jeśli nie padło, zostaw puste."},
{"key": "coffee_count", "type": "number", "description": "Ile kaw zamówił dzwoniący."},
{"key": "urgency", "type": "string", "description": "Jak pilna była sprawa.", "enumValues": ["low", "normal", "high"]}
]
}'Wynik pojawia się w trzech miejscach: na stronie szczegółów rozmowy w portalu jako karta „Zapisane dane”, w polu data przy rozmowie (GET /v1/calls i GET /v1/calls/{id}) oraz w treści webhooka call.completed.
{
"call": {
"id": "c_8f2ac1d4",
"status": "completed",
"hasRecording": true,
"data": {
"name": "Anna Kowalska",
"coffee_count": 2,
"urgency": "normal"
}
}
}Wartość null oznacza „w rozmowie to nie padło” - tak samo, gdy model odpowie pustym tekstem. Jeśli agent nie ma żadnych pól, klucza data w odpowiedzi w ogóle nie ma.
7Cel agenta i ocena
Cel to jedno zdanie opisujące, co ma osiągnąć rozmowa - „umówić termin oglądania”, „dowiedzieć się, czy klient jest zainteresowany ofertą”. Wpisujesz go w portalu w polu „Cel agenta” (przy zakładaniu agenta i w dowolnym momencie później w jego edycji) albo przez REST API i MCP w polu goal w POST/PATCH /v1/agents oraz create_agent/update_agent (najwyżej 300 znaków).
Cel trafia do agenta jako kryterium oceny rozmowy: po jej zakończeniu model czyta zapis rozmowy i rozstrzyga, czy cel został osiągnięty, nieosiągnięty, czy nie da się tego poznać z rozmowy. Wynik zobaczysz przy rozmowie w portalu - na stronie szczegółów i na liście rozmów - a także w e-mailu po rozmowie, obok podsumowania.
To szacunek modelu, nie fakt
Ocena czyta tylko zapis rozmowy, a nie to, co wydarzyło się potem (czy klient faktycznie pojawił się na spotkaniu). Uczciwe zastrzeżenie: cel agenta (goal) można przez REST API i MCP ustawić i odczytać, ale WYNIK oceny konkretnej rozmowy pozostaje tylko w portalu i w e-mailu po rozmowie - GET /v1/calls i get_call go nie zwracają. Ocena działa ponadto tylko u agentów na nowym silniku głosowym volai - na której platformie działa agent, mówi pole provider (GET /v1/agents, list_agents i strona szczegółów agenta w portalu); przełączenie załatwia volai. Starsi agenci, którzy pozostają na pierwotnej platformie, doczekają się oceny dopiero po przeniesieniu na ten silnik.
Co agent wie (materiały)
Oprócz instrukcji możesz dać agentowi materiały - godziny otwarcia, cennik, najczęstsze pytania. Wypełniasz je w portalu w polu „Co agent wie” (sekcja Zaawansowane), a przez API w polu knowledge w POST/PATCH /v1/agents. Tekst jest doklejany na koniec promptu, mieści się w 20000 znakach, a PATCH z pustą wartością go usuwa. W odróżnieniu od narzędzia materiały nie zmieniają się w trakcie rozmowy - to, co się zmienia (status zamówienia, wolne terminy), należy do narzędzia, nie tutaj.
8E-mail po rozmowie
Po zakończeniu rozmowy z agentem volai wyśle Ci e-mail z podsumowaniem i odnośnikiem do szczegółów rozmowy w portalu - to samo podsumowanie, które widzisz w API w polu summary. Przychodzi od agentów działających na własnym silniku głosowym volai (pole provider: "engine"); agent na ElevenLabs (provider: "elevenlabs") jeszcze go nie dostanie.
Przełącznik „E-mail po każdej rozmowie” znajdziesz na stronie Ustawienia - wyłączenie go zatrzymuje e-mail dla całego konta naraz. Pojedynczemu agentowi wyłączysz go osobno polem wyboru „Wyślij mi e-mail po każdej rozmowie” na jego stronie szczegółów (w API pole notifyEmail: false). Za rozmowę przychodzi najwyżej jeden e-mail, a rozmowa, z której nie ma czego zgłaszać (brak podsumowania, brak zapisanych danych i powodu zakończenia), e-maila nie uruchamia.
9Nagrania
Rozmowy agenta są nagrywane i w portalu odtworzysz je od razu na stronie szczegółów rozmowy - klikając w zapisie rozmowy, przesuwasz się w nagraniu na właściwe miejsce. Pobrać lub odtworzyć je gdzie indziej można z GET /v1/calls/{id}/recording (ten sam klucz API) - format określa nagłówek odpowiedzi content-type: u agenta na ElevenLabs audio/mpeg (MP3), u agenta na silniku volai obecnie audio/ogg. To, czy rozmowa ma nagranie, mówi pole hasRecording.
- Przechowujemy je 90 dni od rozmowy, potem są usuwane. Zapis rozmowy i podsumowanie zachowujemy dalej, nie są usuwane razem z nagraniem. Po dziewięćdziesięciu dniach endpoint zwraca
recording_expired. - Można je wyłączyć u każdego agenta przełącznikiem na jego stronie szczegółów albo polem
recordCalls: falsew API. Dla rozmów rozpoczętych od tej chwili nagranie nie powstaje; rozmowa, która już dzwoni lub trwa, podlega ustawieniu z chwili rozpoczęcia (wychodząca z chwili wybrania numeru), więc nadal jest nagrywana. - Nagrywane są tylko rozmowy obsługiwane przez wbudowanego agenta. Bezpośredni most między dwoma numerami, rozmowa przez relay i rozmowa SIP nie są nigdy nagrywane.
Poinformowanie rozmówcy leży po Twojej stronie
Nagrywanie rozmowy to przetwarzanie danych osobowych. Agent nie informuje o tym dzwoniącego sam z siebie - jeśli chcesz, żeby to robił, włącz u agenta „Poinformuj dzwoniącego, że rozmowa jest nagrywana” (recordingNotice: true w API), a volai doklei do pierwszej wypowiedzi agenta krótkie zdanie o nagrywaniu rozmowy. Równie dobrze możesz je wpisać do wypowiedzi powitalnej samodzielnie. Zadbanie o to, by informacja spełniała wymogi prawa w Twojej sytuacji, należy do Ciebie jako administratora danych.
Każdy błąd API niesie cause (kto go naprawia) i action (co zrobić) - patrz Format błędu w dokumentacji REST API.
10Limity
- Rozmowa trwa najwyżej 10 minut (600 sekund), potem agent sam ją kończy.
- Jeśli dzwoniący milczy przez 20 sekund, agent uzna to za koniec rozmowy i się rozłączy.
- Agent odpowiada mniej więcej 1 sekundę po tym, jak skończysz mówić - w prawdziwym ruchu zależy to nieco od obciążenia.
11Języki
Agent może mówić w pięciu językach - czeskim (domyślnie), słowackim, angielskim, niemieckim i polskim - język ustawiasz na stronie szczegółów agenta (pole language w POST/PATCH /v1/agents, create_agent/update_agent). Własny głos dla każdego języka (Cartesia) jest dostępny tylko u agenta działającego na własnym silniku volai (patrz rozdział Głosy poniżej) - agent, który pozostaje na ElevenLabs, mówi w wybranym języku głosem Anet.
12Połączenie próbne
Przycisk „Zadzwoń do mnie na próbę” na stronie szczegółów agenta w portalu sprawia, że agent wykona prawdziwe połączenie na podany numer - szybkie sprawdzenie, jak brzmi i jak reaguje na Twój prompt systemowy, bez ręcznego wybierania jego numeru.
Rozliczane jak zwykłe połączenie wychodzące z agentem, wraz z narzutem za agenta (patrz rozdział Ceny poniżej) - bez zniżki i bez specjalnej stawki.
Agent na własnym silniku głosowym volai może wykonać połączenie próbne nawet bez własnego numeru telefonu - wychodzi wspólną linią volai, więc odbierający widzi na wyświetlaczu numer volai, a nie numer agenta. Agent na ElevenLabs bez własnego numeru nie może rozpocząć połączenia próbnego, dopóki mu go nie przypiszesz.
Najwyżej 3 próby połączenia próbnego na konto dziennie, łącznie dla wszystkich agentów - liczy się każda próba, która faktycznie się połączyła, nawet gdy nikt nie odebrał; próba, która nie powiodła się jeszcze przed połączeniem (niewystarczające saldo, zajęta linia), do limitu się nie wlicza. Zwykłe połączenia przez POST /v1/calls takiego surowszego limitu nie mają.
13Głosy
Wybór dostawcy przy zakładaniu ma trzy stany: useForOutboundTasks: true w POST /v1/agents lub create_agent wybiera własny silnik głosowy volai, false zaczyna na ElevenLabs nawet z przełączeniem do człowieka, a pominięcie pola użyje ustawienia domyślnego wdrożenia, które zależy od dostępności silnika, jego włączenia i skonfigurowanych języków. Samo wybranie cs lub sk nie gwarantuje silnika; gdy domyślne użycie silnika jest wyłączone, agent zaczyna na ElevenLabs. Gdy jawne false nadpisuje domyślny silnik dla języka, odpowiedź na założenie niesie ostrzeżenie elevenlabs_by_explicit_choice, dlatego agenta przeznaczonego tylko do połączeń przychodzących zakładaj bez tego pola. Gdy u agenta na ElevenLabs włączysz transferTo, volai po zapisie spróbuje przenieść go na silnik. Próba może być wstrzymana, niedostępna lub się nie powieść, dlatego sprawdź wynik kolejnym GET /v1/agents/{id} w REST albo w zwróconym agencie w MCP. Pole provider mówi, na której platformie działa agent; przełączenie do człowieka nie działa, dopóki pozostaje na ElevenLabs. Udane przełączenie może zmienić jego głos. Ta sama próba następuje po zmianie language u agenta na ElevenLabs z języka, w którym nowi agenci zaczynają na ElevenLabs (obecnie en, de, pl), na język, w którym zaczynają na silniku (cs, sk); agent dostaje wtedy domyślny głos silnika nowego języka (Milena, Katarina). Zmiana między cs a sk niczego nie przenosi. Przenoszenie między platformami w pozostałych przypadkach załatwia wsparcie volai. ElevenLabs przyjmuje z katalogu tylko katty albo surowe id głosu ElevenLabs; pozostałe głosy z katalogu wymagają silnika.
voiceId w create_agent/update_agent (i pole o tej samej nazwie w POST/PATCH /v1/agents) wybiera głos agenta. Lista bez filtra GET /v1/voices (MCP list_voices bez argumentu provider) nie pokazuje głosu ElevenLabs katty - REST zwraca go tylko z ?provider=elevenlabs, MCP z argumentem provider: "elevenlabs". Głosy Cartesia (Milena, Jan i głosy dla innych języków) są dla agentów na własnym silniku volai, Katty dla agentów na ElevenLabs (która platforma obsługuje agenta, wyjaśnia uwaga powyżej). Starszy głos anet pozostaje tylko u agentów, którzy go już mają - od 12 września 2026 ElevenLabs nie przypisuje go nowym agentom, a volai odrzuca takie żądanie z wyjaśnieniem. Przy założeniu z jawnym useForOutboundTasks: true rozpoznany głos z katalogu, niedostępny na silniku, w tym katty, jest zastępowany domyślnym głosem silnika dla wybranego języka; gdy silnik zostaje wybrany przez pominięte pole i ustawienie domyślne wdrożenia, ten sam niezgodny głos jest odrzucany. Surowe id ElevenLabs jest dla silnika zawsze odrzucane. Bez voiceId agent dostaje domyślny głos swojego dostawcy - Milenę na silniku, głos szablonu (Katty) na ElevenLabs.
Katalog oferuje co najmniej jeden głos żeński i jeden męski na język (dla czeskiego obecnie cztery): cs: Milena, Jan, Tereza, Marek; sk: Katarina, Peter; en: Skylar, Daniel; de: Alina, Lukas; pl: Ewa, Kacper; nl: Ariel, Alexander; pt: Christine, Filipe; sl: Sarah, Daniel; ro: Mikidutza, Oliver; da: Isabella, Søren; et: Alice, Chris; lv: Matilda, George; bg: Yoana, Peter K; fi: Soili, Jussi; el: Crhysa, Iordanis; fr: Natasha, Max; it: Rossana, Marco; hu: Zsófia, Gábor; lt: Sarah, Daniel; sv: Sanna, Filip. Portal oferuje tylko głosy w wybranym języku agenta - przełączają się razem (patrz rozdział Języki powyżej).
Każdy głos w tabeli należy do własnego silnika głosowego volai. Dla agenta na ElevenLabs API odrzuca je kodem 400 - ten agent przyjmuje tylko katty (którego lista bez filtra nie pokazuje) i surowe id głosu ElevenLabs.
| id | Opis | Podgląd |
|---|---|---|
| milena | Milena - The default volai voice - calm and natural, a good fit for most agents. | |
| jan | Jan - The male counterpart to Milena - matter-of-fact, easy-to-follow delivery. | |
| tereza | Tereza - The second female voice - professional, well-structured delivery. | |
| marek | Marek - The second male voice - calm, resonant delivery for longer calls. | |
| katarina | Katarina - Slovak female voice - calm, natural delivery. | |
| peter | Peter - Slovak male voice - matter-of-fact, easy-to-follow delivery. | |
| skylar | Skylar - English female voice - calm, friendly delivery. | |
| daniel | Daniel - English male voice - matter-of-fact, confident delivery. | |
| alina | Alina - German female voice - calm, warm delivery. | |
| lukas | Lukas - German male voice - matter-of-fact, easy-to-follow delivery. | |
| ewa | Ewa - Polish female voice - calm, natural delivery. | |
| kacper | Kacper - Polish male voice - matter-of-fact, confident delivery. | |
| ariel | Ariel - Dutch female voice - natural conversational delivery. | |
| alexander | Alexander - Dutch male voice - warm, natural delivery. | |
| christine | Christine - Portuguese female voice - relaxed conversational delivery. | |
| filipe | Filipe - Portuguese male voice - natural, expressive delivery. | |
| mikidutza | Mikidutza - Romanian female voice - clear, friendly delivery. | |
| oliver | Oliver - Romanian male voice - matter-of-fact, clear delivery. | |
| isabella | Isabella - Danish female voice - warm, calm delivery. | |
| soren | Søren - Danish male voice - clear, confident delivery. | |
| yoana | Yoana - Bulgarian female voice - fresh, engaging delivery. | |
| peterk | Peter K - Bulgarian male voice - warm, smooth delivery. | |
| soili | Soili - Finnish female voice - neutral, light delivery. | |
| jussi | Jussi - Finnish male voice - strong, lively delivery. | |
| crhysa | Crhysa - Greek female voice - professional, lively delivery. | |
| iordanis | Iordanis - Greek male voice - natural conversational delivery. | |
| natasha | Natasha - French female voice - soft, conversational delivery. | |
| max | Max - French male voice - charismatic, friendly delivery. | |
| rossana | Rossana - Italian female voice - warm conversational delivery. | |
| marco | Marco - Italian male voice - charismatic, friendly delivery. | |
| zsofia | Zsófia - Hungarian female voice - soft, inviting delivery. | |
| gabor | Gábor - Hungarian male voice - warm, natural, confident delivery. | |
| sanna | Sanna - Swedish female voice - direct, natural delivery. | |
| filip | Filip - Swedish male voice - energetic, expressive delivery. | |
| sarah-sl | Sarah - Slovenian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation). | |
| daniel-sl | Daniel - Slovenian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation). | |
| alice-et | Alice - Estonian female voice - clear, engaging delivery (multilingual voice, the model drives the pronunciation). | |
| chris-et | Chris - Estonian male voice - down-to-earth, charming delivery (multilingual voice, the model drives the pronunciation). | |
| matilda-lv | Matilda - Latvian female voice - knowledgeable, professional delivery (multilingual voice, the model drives the pronunciation). | |
| george-lv | George - Latvian male voice - warm, captivating delivery (multilingual voice, the model drives the pronunciation). | |
| sarah-lt | Sarah - Lithuanian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation). | |
| daniel-lt | Daniel - Lithuanian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation). |
voiceId przyjmuje też surowe ID ElevenLabs, ale tylko dla agenta na platformie standardowej (provider: "elevenlabs"). Dla agenta na silniku użyj id głosu z katalogu. Nieznana wartość lub niezgodna z dostawcą zwraca błąd z listą prawidłowych opcji.
14Statystyki
Ekran szczegółów agenta w portalu pokazuje liczbę odebranych rozmów, ich średnią i najdłuższą długość oraz ile ich było w ostatnich 30 dniach - osobnego API do tego nie ma, te same liczby możesz policzyć sam z GET /v1/calls.
15Ceny
Agent głosowy jest rozliczany ponad cenę połączenia, co do sekundy - bez zaokrąglania do pełnych minut. Stawki nie zawierają VAT, tak jak cały cennik.
| Kierunek | Połączenie | Agent | Razem |
|---|---|---|---|
| Wychodzące | 0.92 CZK/min (~EUR 0.04) | 2.50 CZK/min (~EUR 0.10) | 3.42 CZK/min (~EUR 0.14) |
| Przychodzące | 0.50 CZK/min (~EUR 0.02) | 2.50 CZK/min (~EUR 0.10) | 3.00 CZK/min (~EUR 0.13) |
Pełny cennik z przykładami znajdziesz na stronie Cennik.
Wolisz własne ElevenLabs, Vapi lub inną platformę? Narzutu za agenta możesz uniknąć własnym agentem - patrz Własny agent.
16Zapisy rozmów i webhook
Po zakończeniu rozmowy pobierzesz zapis i podsumowanie przez GET /v1/calls/{id} (pola transcript i summary) - albo volai może je wysłać na Twój adres jako zdarzenie call.completed, gdy będą gotowe. Format zapisu, weryfikacja podpisu i obsługa błędów są na stronie Webhooki.
Nie chcesz czekać na webhook ani odpytywać API? W portalu strona szczegółów każdego agenta pokazuje też listę ostatnich rozmów z zapisem do przeczytania na miejscu.
17Silnik głosowy volai
Niektórzy agenci działają dziś na własnym silniku głosowym volai zamiast na ElevenLabs. Przełączenie zmienia routing połączeń, a razem z nim przenosi się cała konfiguracja agenta - instrukcje, wypowiedź powitalna, pola danych, cel rozmowy, materiały, narzędzia i przełączenie do człowieka. Co się zmienia, a co nie:
- Głosy agent, który miał wybrany głos ElevenLabs (Katty lub starszy Anet), po przełączeniu dostaje domyślny głos silnika dla swojego języka - Milenę dla czeskiego. Silnik nie oferuje głosu ElevenLabs jako głosu głównego, ElevenLabs pozostaje tylko jako rezerwa na wypadek awarii Cartesii. W ustawieniach agenta możesz potem wybrać dowolny inny głos z katalogu dla języka agenta, dla czeskiego między innymi Jana. Głos z katalogu silnika, który agent już ma, pozostaje bez zmian.
- Czas odpowiedzi pozostaje taki sam jak na ElevenLabs - około 1 sekundy po tym, jak skończysz mówić.
- Nagrania bez zmian - nadal przechowywane 90 dni i można je wyłączyć w ten sam sposób na stronie szczegółów agenta.
- Informacja o nagrywaniu bez zmian - przy włączonej u agenta informacji o nagrywaniu (`recordingNotice`) volai doklei do pierwszej wypowiedzi agenta krótkie zdanie, że rozmowa jest tu również nagrywana (patrz sekcja Nagrania powyżej). Bez tej opcji lub przy wyłączonym nagrywaniu zdanie nie jest doklejane wcale.
- Ujawnienie, że to AI bez zmian - wypowiedź powitalna trafia do dostawcy dokładnie tak, jak ją napiszesz. Nie narzucamy jej: jeśli wypowiedź nie mówi, że dzwoniący rozmawia z cyfrowym asystentem, tylko Cię ostrzeżemy (EU AI Act, art. 50), zapis i tak przejdzie. Ujawnienie pozostaje Twoją odpowiedzialnością u obu dostawców.
- Narzędzia i przełączenie do człowieka przenoszą się razem z agentem - udane przełączenie wysyła silnikowi jego narzędzia i skonfigurowane przełączenie do człowieka, więc nie musisz ich ustawiać od nowa. Na własnym silniku głosowym volai przełączenie działa mostem (tak samo jak w sekcji Przełączenie do człowieka powyżej) - most jest sprawdzony w codziennym użyciu, a portal pokazuje pełny formularz przełączenia dla agenta na silniku. Włączenie przełączenia u agenta na platformie standardowej (ElevenLabs) uruchamia po zapisie natychmiastową próbę przełączenia; wynik sprawdź w `provider`, bo wstrzymana próba, niedostępny silnik lub awaria mogą zostawić go na ElevenLabs, gdzie przełączenie nie działa. Udane przełączenie może zmienić jego głos na domyślny głos silnika. Zbiorcza migracja numerów falami pomija więc agentów ze skonfigurowanym przełączeniem.
- Wykrywanie poczty głosowej w połączeniach wychodzących potrafi to tylko własny silnik głosowy volai - w ciągu kilku sekund od odebrania rozpoznaje pocztę głosową zamiast człowieka i, zależnie od ustawienia, tylko to oznacza, rozłącza się albo czeka na sygnał i odczytuje wiadomość. Ustawia się to na stronie szczegółów agenta (tylko agenci na silniku), przez API i MCP polem `voicemail`. Lista rozmów pokazuje wtedy dla połączenia wychodzącego z pocztą głosową „Odebrała poczta głosowa” zamiast zwykłego wyniku. Platforma standardowa (ElevenLabs) takiego wykrywania nie ma.
- Przypomnienie przy ciszy odtwarza je tylko własny silnik głosowy volai - gdy dzwoniący przez pewien czas milczy, agent raz zapyta, czy nadal jest na linii. Ustawienie (włączone/wyłączone, od 3 do 25 sekund) jest zapisywane dla obu dostawców - u agenta na platformie standardowej (ElevenLabs) pole na stronie szczegółów agenta jest wyszarzone, a wartość będzie słyszalna po przełączeniu agenta na silnik. Własne zdanie przypomnienia (`silencePromptText`, do 80 znaków, zamiast domyślnego przypomnienia dla języka agenta, które po polsku brzmi „Czy nadal Pan/Pani jest na linii?”) jest zapisywane tak samo.
- Ochrona pierwszej wypowiedzi potrafi to tylko własny silnik głosowy volai i tylko w połączeniach wychodzących: gdy odtwarzana jest pierwsza wypowiedź (liczba sekund, którą ustawisz, od 0 do 20), krótka reakcja osoby, która odebrała („Halo?”, „Tak?”), jej nie przerywa: odpowiedź bez słowa przerywającego (na przykład stop, nie, czekaj) jest w chronionym oknie odrzucana, więc nie przerywa wypowiedzi, nie trafia do zapisu rozmowy i agent na nią nie reaguje, natomiast słowo przerywające zawsze ją przerywa. Słowa przerywające zależą od języka agenta: agenta mówiącego po angielsku przerywają stop, no, wait lub hold. Pole `firstMessageProtectSecs` jest zapisywane dla obu dostawców bez wymuszonej wartości domyślnej - u agenta na platformie standardowej (ElevenLabs) jest wyszarzone na stronie szczegółów agenta i będzie słyszalne po przełączeniu agenta na silnik. W zapisie rozmowy tura agenta, którą dzwoniący przerwał, niesie znacznik `interrupted`.
- Śmiech agenta tylko własny silnik głosowy volai potrafi zaśmiać się w odpowiedzi, gdy Ty lub dzwoniący śmiejecie się albo żartujecie w trakcie rozmowy - i to tylko z czeskim głosem Cartesia (Milena, Jan i pozostałe z katalogu). Platforma standardowa (ElevenLabs) nie potrafi tego wcale, nawet po ustawieniu pola. W ustawieniach agenta wybierasz Automatycznie (silnik sam wyłącza śmiech przy wrażliwych tematach, takich jak windykacja, ochrona zdrowia, urzędy czy usługi pogrzebowe), Włączone (nadpisuje to wykrywanie) lub Wyłączone. Zmiana obowiązuje od następnej rozmowy.
18Kalendarz i terminy
Agent na własnym silniku głosowym volai potrafi w trakcie rozmowy sprawdzić wolny termin w Twoim kalendarzu Google lub Apple i od razu zarezerwować spotkanie - powie dzwoniącemu, czy dana godzina jest wolna, zaproponuje najbliższe wolne terminy, a po potwierdzeniu imienia i nazwiska zarezerwuje termin. Włączysz to w edytorze agenta na karcie Kalendarz: wybierz połączenie (Dane i integracje), konkretny kalendarz i zasady dostępności.
- Zasady dostępności okna w poszczególne dni tygodnia (kiedy agent w ogóle proponuje terminy), długość spotkania, bufor między spotkaniami, minimalny czas z wyprzedzeniem przed zarezerwowaną godziną oraz horyzont - jak daleko w przód agent szuka. Edytor wypełnia wartości domyślne, ale każdy agent może mieć własne.
- Wbudowane narzędzia kalendarz korzysta z dwóch wbudowanych narzędzi, check_availability i book_appointment - w odróżnieniu od własnych narzędzi z rozdziału Narzędzia powyżej nie zakłada się ich ręcznie, włączają się razem z kalendarzem i nie wliczają się do limitu narzędzi konta.
- Tylko własny silnik volai działa tylko dla agenta na własnym silniku głosowym volai. Jeśli włączysz kalendarz agentowi na platformie standardowej (ElevenLabs), ustawienie zostanie zapisane, a agent po zapisie spróbuje przełączyć się na silnik volai - tak samo jak przy przełączeniu do człowieka.
- Co agent mówi, a czego nie agent nigdy nie odczytuje tego, co jest zapisane w kalendarzu - tylko to, czy dana godzina jest wolna. Numer telefonu dzwoniącego jest dodawany do wydarzenia tylko wtedy, gdy agent go zna (ukryty numer oznacza, że wydarzenie nie ma numeru telefonu).
- Także poza rozmową to samo wyszukiwanie wolnych terminów i rezerwowanie spotkań działa też poza rozmową, przez REST (POST /v1/integrations/{id}/availability, POST /v1/integrations/{id}/events) i MCP (find_free_slots, create_calendar_event) - szczegóły w sekcji Kalendarze w dokumentacji REST API i w dokumentacji MCP.
Powiązane
Serwer MCP
Podłącz Claude Code, Codex CLI, Codex desktop, Cursor i inne edytory AI.
REST API
Pełna dokumentacja wszystkich endpointów: numery, połączenia, SMS, numery komórkowe do SMS, agenci i ich wersje robocze, narzędzia, nagrania, webhooki, lista „nie dzwonić”, relay, konto, zadania, saldo, dokumenty, kalendarze i integracje.
Webhooki
Zdarzenia, dane strukturalne w treści, weryfikacja podpisu, ponowienia po błędzie.
Własny agent
Podłączenie platformy zewnętrznej (ElevenLabs, Asterisk...) - bez dopłaty za agenta.