Přeskočit na obsah

Průvodci

Hlasový agent

Agent je jen tak dobrý, jak dobře napsaný má systémový prompt. Tahle stránka je návod, jak ho napsat, tři hotové vzory ke zkopírování a limity, se kterými je potřeba počítat.

1Struktura systemPrompt

Dobrý prompt má čtyři části. Bez kterékoli z nich agent dřív nebo později zůstane stát a neví, co dál - buď mlčí, nebo si něco vymyslí.

  • Kdo jsem - jedna až dvě věty: jméno firmy, role, tón hlasu. Agent se v tom musí najít hned na první replice.
  • Co umím - konkrétní úkoly, které agent skutečně zvládne (objednávka, termín, informace) - ne obecné „pomůžu s čímkoli“.
  • Co NIKDY nedělám - hranice: co si agent nesmí vymýšlet, slibovat ani sdělovat. Tahle část se nejčastěji vynechává, a přitom dělá rozdíl mezi agentem, co si vymýšlí ceny, a agentem, co férově řekne „to nevím, zavolejte na...“.
  • Jak ukončit hovor - kdy a jak hovor uzavřít (shrnutí, rozloučení) a co dělat, když zákazník chce něco mimo rozsah.

Delší instrukce zpomalují odpověď zhruba o desetinu sekundy na každé dva tisíce znaků - editor agenta na to od 3000 znaků upozorní. Tvrdý strop je 6000 znaků.

Tři kompletní vzory - zkopíruj a uprav podle sebe:

Recepční s objednávkami

text
Jsi hlasová recepční kavárny Nula na Vinohradech. Mluvíš klidně,
přátelsky a stručně - tak, jak by mluvila zkušená obsluha, ne robot.

CO UMÍŠ
- Přijímáš objednávky na vyzvednutí (káva, čaj, croissanty, sendviče).
- Řekneš aktuální otevírací dobu: pondělí až pátek 8:00-18:00, víkend
  9:00-15:00.
- Na konci objednávky ji celou zopakuješ a potvrdíš čas vyzvednutí
  (nejdřív za 15 minut od teď).

CO NIKDY NEDĚLÁŠ
- Nevymýšlíš si ceny ani položky, které nejsou v nabídce - řekni, že
  přesnou cenu potvrdí obsluha na místě.
- Neslibuješ rozvoz, kavárna nerozváží.
- Nikdy nepředstíráš, že jsi člověk, když se tě na to zákazník přímo
  zeptá - řekni, že jsi hlasový asistent kavárny.

JAK UKONČIT HOVOR
Shrň objednávku a čas vyzvednutí, popřej hezký den a hovor ukonči. Pokud
zákazník chce něco, co neumíš vyřešit (reklamace, catering), řekni mu ať
zavolá znovu v provozní době a mluví přímo s majitelem.

Průzkum spokojenosti

text
Voláš jménem e-shopu Botanika jako krátký průzkum spokojenosti po
nedávné objednávce. Jsi zdvořilá, jdeš rovnou k věci, hovor netáhneš
zbytečně dlouho.

CO UMÍŠ
- Zeptáš se, jestli má zákazník minutku na tři krátké otázky.
- Otázka 1: Jak by ohodnotil spokojenost s objednávkou na škále 1-5.
- Otázka 2: Dorazil balík včas?
- Otázka 3: Je něco, co bychom mohli zlepšit?
- Odpovědi si zapamatuješ a na konci hovoru je stručně shrneš.

CO NIKDY NEDĚLÁŠ
- Netlačíš na zákazníka, když odmítne nebo řekne, že nemá čas - ihned
  se slušně rozlouč.
- Neřešíš reklamace ani vrácení zboží - to patří na zákaznickou linku,
  kterou zákazníkovi na požádání nadiktuješ.
- Nenabízíš slevy ani kupóny, na to nemáš mandát.

JAK UKONČIT HOVOR
Poděkuj za čas a zpětnou vazbu, popřej hezký den. Pokud zákazník kdykoli
řekne, že nechce pokračovat, hned zdvořile ukonči hovor bez dalších
otázek.

Vrátnice / podatelna

text
Jsi hlasová vrátnice firmy Nordwex v administrativní budově na
Pankráci. Voláním na tohle číslo se hlásí kurýři, návštěvy a dodavatelé.

CO UMÍŠ
- Zjistíš, kdo volá a za jakým účelem (kurýr s balíkem, návštěva na
  schůzku, dodavatel).
- U návštěvy zjistíš jméno a s kým má schůzku, řekneš ať se ohlásí na
  recepci v přízemí a počká, dokud pro ně někdo nepřijde.
- U kurýra řekneš, ať balík nechá na recepci a napíše tam jméno firmy
  a adresáta.
- Vezmeš krátký vzkaz, když volaný není momentálně dostupný.

CO NIKDY NEDĚLÁŠ
- Nesděluješ čísla na soukromé mobily zaměstnanců - nabídneš přepojení
  na recepci nebo vzkaz.
- Nepouštíš nikoho "nahoru samotného" - všechny návštěvy jdou přes
  recepci.
- Neposkytuješ informace o tom, kdo je v budově přítomný a kdy - řekni,
  že si to musí ověřit na recepci.

JAK UKONČIT HOVOR
Zopakuj, co se domluvilo (vzkaz, čekání na recepci, přepojení), popřej
hezký den a hovor ukonči.

2Šablony podle oboru

Nechceš psát prompt od nuly? Na webu jsou hotové šablony pro šest oborů (zubní ordinace, autoservis, restaurace, e-shop, realitní kancelář, řemeslníci) - hotový systémový prompt, ukázkový dialog i příklad, kolik by taková recepční stála. Zkopíruj a uprav podle sebe, stejně jako vzory výš.

Přehled šablon podle oboru

3firstMessage

firstMessage je první věta, kterou zákazník uslyší - u příchozího hovoru hned po zvednutí, u odchozího hned po tom, co volaný zvedne telefon.

  • Krátká, mluvená čeština - jak by to řekl člověk, ne jak by to napsal do e-mailu.
  • Řekni hned, kdo nebo co volá/zvedá - zákazník musí za tři vteřiny vědět, s kým mluví.
  • Konči otevřenou otázkou („jak vám mohu pomoct“, „máte chvilku“) - ne dlouhým monologem.
  • Nahlas si to přečti - co vypadá dobře napsané, může znít kostrbatě řečené.
  • U odchozích hovorů se hned na začátku představ i s důvodem volání - na neznámá čísla lidé neradi berou telefon.

4Nástroje

Nástroj je adresa tvého API, kterou agent zavolá uprostřed hovoru a odpověď rovnou použije v řeči. Bez nástroje umí agent jen mluvit; s nástrojem umí ověřit objednávku, najít volný termín nebo zapsat rezervaci.

Nástroje se zakládají v portálu na /agent/nastroje (nebo přes POST /v1/tools) a pak se agentovi zapnou zaškrtávátkem na jeho detailu (v API pole toolIds). Nástroj patří účtu, ne agentovi - týž nástroj tak může používat víc agentů. Zadáváš u něj čtyři věci:

  • Název - čitelný („Ověřit objednávku“). Jméno pro model se z něj odvodí samo (overit_objednavku) a ukáže se pod polem.
  • Kdy to má agent použít - jediné, podle čeho se model rozhodne, že nástroj vůbec zavolá. Piš to jako pokyn: „Použij, když se volající ptá, kde je jeho objednávka.“
  • Adresu a metodu - jen https, veřejně dostupnou. GET pošle parametry v query, POST v JSON těle. K tomu hlavičky, typicky Authorization.
  • Parametry - u každého řekneš, odkud se bere hodnota: vytáhne ji model z hovoru, doplní se číslo volajícího nebo volané číslo, anebo je to pevná hodnota.

Takhle pak vypadá požadavek, který tvému endpointu přijde během hovoru:

http
POST https://api.tvojeappka.cz/objednavky
Content-Type: application/json
Authorization: Bearer tvuj_klic

{
  "cislo_objednavky": "A-42",
  "telefon": "+420777123456"
}

A takhle odpověď, se kterou agent umí pracovat - krátký JSON, ze kterého se dá říct jedna věta:

json
{
  "stav": "expedovano",
  "doruceni": "zitra dopoledne"
}

Než nástroj uložíš, vyzkoušej ho

Formulář má tlačítko Vyzkoušet: pošle na zadanou adresu skutečný požadavek s ukázkovými hodnotami a ukáže stav, dobu odezvy a začátek odpovědi. Nic se přitom neukládá. Vyplatí se to - endpoint, který odpovídá pomalu, poslouchá volající jako ticho v hovoru.

Limity: nejvýš 10 nástrojů na účet, 10 parametrů a 5 hlaviček na nástroj, časový limit odpovědi 5 až 30 vteřin (výchozí 20) - přesně tolik agent na odpověď čeká, mezitím řekne přemosťovací větu, ať volající neslyší ticho. Hodnoty hlaviček ti zpátky ukážeme jen maskované (Bear***) - plné znění se z účtu přečíst nedá.

5Přepojení na člověka

Agent umí hovor předat na tvoje číslo, když si volající řekne o člověka nebo narazí na věc, kterou agent neumí vyřešit. Zapíná se na detailu agenta (v API pole transferTo), podmínku napíšeš jako pokyn modelu do transferCondition. Bez ní dosadíme výchozí větu.

Na vlastním hlasovém motoru volai

Na vlastním hlasovém motoru volai jde přepojení mostem: agent řekne, že tě spojuje, volající slyší vyzvánění a člověk na tvém čísle vidí číslo agenta. Po zvednutí agent zmlkne a hovor pokračuje mezi vámi dvěma přes volai. Zavěsí-li kdokoli z vás, hovor skončí pro oba. Když nezvedneš do 25 vteřin, agent se volajícímu omluví, nabídne vzkaz a pokračuje.

Dvě věci, které je potřeba vědět předem

Shrnutí hovoru člověku nepředáme. Volající uslyší, že ho přepojujeme, ale operátor na druhé straně zvedne rovnou volajícího - žádný „warm transfer“, kde by agent napřed shrnul, o co jde, přes telefonní síť neumíme. Počítej s tím v instrukcích: ať agent volajícímu řekne, že bude muset věc zopakovat.

Přepojení je běžný odchozí hovor a tak se i účtuje: 0,92 Kč/min od zvednutí do zavěšení, bez agentní přirážky (agent už na téhle noze není). V historii hovorů ji poznáš podle druhu transfer a v detailu původního hovoru najdeš kartu Přepojení s odkazem na tuhle nohu. Příchozí noha běží dál a účtuje se zvlášť.

Standardní platforma (ElevenLabs)

Na standardní platformě (ElevenLabs) přepojení nefunguje - operátor SIP přepojení nedokončí. Po zapnutí přepojení se volai hned po uložení pokusí agenta převést na vlastní hlasový motor. Pokus může být pozastavený, motor nedostupný nebo přepnutí může selhat; podle vráceného pole provider proto ověř, že agent opravdu běží na motoru. Dokud zůstává na ElevenLabs, přepojení nefunguje. Úspěšným přepnutím se může změnit hlas agenta, výchozí hlas motoru je Milena.

Přepojit na vlastní volai číslo nejde - hovor by se vracel sám na sebe, dokud by nedošel kredit. Prémiové linky (90x) jsou z téhož důvodu zakázané.

6Co si zapsat z hovoru

Místo čtení celého přepisu si můžeš říct, co přesně z hovoru chceš - jméno, počet kusů, jestli věc spěchá. Agent to po hovoru vyplní a ty to dostaneš jako JSON.

Každé pole má klíč, typ a popis. Nejvýš deset polí na agenta:

  • Klíč (key) - malá písmena bez diakritiky, číslice a podtržítka, do 40 znaků - musí začínat malým písmenem. Pod tímhle jménem hodnotu najdeš ve výsledku.
  • Typ (type) - string, number nebo boolean.
  • Popis (description) - co přesně má model vytáhnout, 5 až 500 znaků. Napiš i to, co má udělat, když to v hovoru nezazní.
  • Možnosti (enumValues) - nepovinný výčet, jen u textového pole. Model pak vybírá jen z nabídnutých hodnot, takže se výsledek dá rovnou filtrovat. Nejvýš 20 možností, každá do 60 znaků.
bash
curl -X PATCH https://volai.cz/v1/agents/ag_kx91fa2b \
  -H "Authorization: Bearer vk_TVUJ_KLIC" \
  -H "Content-Type: application/json" \
  -d '{
    "dataFields": [
      {"key": "jmeno", "type": "string", "description": "Jméno volajícího, které sám řekl. Když nezaznělo, nech prázdné."},
      {"key": "pocet_kav", "type": "number", "description": "Kolik káv si volající objednal."},
      {"key": "spechalo", "type": "string", "description": "Jak moc věc spěchala.", "enumValues": ["nizka", "bezna", "vysoka"]}
    ]
  }'

Výsledek se objeví na třech místech: na detailu hovoru v portálu jako karta „Zapsané údaje“, v poli data u hovoru (GET /v1/calls i GET /v1/calls/{id}) a v těle webhooku call.completed.

json
{
  "call": {
    "id": "c_8f2ac1d4",
    "status": "completed",
    "hasRecording": true,
    "data": {
      "jmeno": "Jana Nováková",
      "pocet_kav": 2,
      "spechalo": "bezna"
    }
  }
}

Hodnota null znamená „v hovoru to nezaznělo“ - stejně tak, když model odpoví prázdným textem. Když u agenta žádná pole nemáš, klíč data v odpovědi vůbec není.

7Cíl agenta a hodnocení

Cíl je jedna věta, co má hovor splnit - „domluvit termín prohlídky“, „zjistit, jestli má zákazník zájem o nabídku“. Vyplníš ho v portálu do pole „Cíl agenta“ (při zakládání agenta i kdykoli později v jeho editaci), nebo přes REST API a MCP polem goal v POST/PATCH /v1/agents a create_agent/update_agent (nejvýš 300 znaků).

Cíl jde k agentovi jako kritérium k vyhodnocení hovoru: po skončení hovoru nad ním model přečte přepis a rozhodne, jestli byl cíl splněný, nesplněný, nebo se to z hovoru nedá poznat. Výsledek uvidíš u hovoru v portálu - na detailu i v seznamu hovorů - a taky v e-mailu po hovoru, vedle shrnutí.

Je to odhad modelu, ne fakt

Hodnocení čte jen přepis hovoru, ne to, co se stalo pak (jestli zákazník na schůzku skutečně dorazil). Poctivá výhrada: cíl agenta (goal) jde přes REST API i MCP nastavit a přečíst, ale VÝSLEDEK vyhodnocení konkrétního hovoru zůstává jen v portálu a e-mailu po hovoru - GET /v1/calls a get_call ho nevrací. Hodnocení navíc běží jen u agentů na novém hlasovém motoru volai - na které platformě agent běží, řekne pole provider (GET /v1/agents, list_agents a detail agenta v portálu); přepnutí zařizuje volai. Starší agenti, kteří zůstávají na původní platformě, se hodnocení dočkají až po převedení na tenhle motor.

Co agent ví (podklady)

Kromě instrukcí můžeš agentovi dát podklady - otevírací dobu, ceník, časté dotazy. Vyplníš je v portálu do pole „Co agent ví“ (sekce Pokročilé), přes API polem knowledge v POST/PATCH /v1/agents. Text se připojí na konec promptu, vejde se do 20000 znaků a PATCH s prázdnou hodnotou ho smaže. Na rozdíl od nástroje se podklady nemění během hovoru - co se mění (stav objednávky, volné termíny), patří do nástroje, ne sem.

8E-mail po hovoru

Po skončení hovoru s agentem ti volai pošle e-mail se shrnutím a odkazem na detail hovoru v portálu - stejné shrnutí, jaké vidíš i v API v poli summary. Chodí u agentů běžících na vlastním hlasovém motoru volai (pole provider: "engine"); agent na ElevenLabs (provider: "elevenlabs") ho zatím nedostane.

Přepínač „E-mail po každém hovoru“ najdeš na stránce Nastavení - vypnutím ho zastavíš pro celý účet naráz. Jednotlivému agentovi ho vypneš zvlášť zaškrtávátkem „Poslat mi e-mail po každém hovoru“ na jeho detailu (v API pole notifyEmail: false). Za hovor přijde nejvýš jeden e-mail a hovor, ze kterého není co hlásit (žádné shrnutí, žádné zapsané údaje ani důvod ukončení), e-mail nespustí.

9Nahrávky

Hovory agenta se nahrávají a v portálu si je pustíš rovnou na detailu hovoru - klikáním v přepisu se v nahrávce přesouváš na správné místo. Stáhnout nebo přehrát jinde ji jde z GET /v1/calls/{id}/recording (stejný API klíč) - formát určuje hlavička content-type odpovědi: u agenta na ElevenLabs audio/mpeg (MP3), u agenta na motoru volai dnes audio/ogg. Jestli hovor nahrávku má, řekne pole hasRecording.

  • Držíme je 90 dní od hovoru, pak se mažou. Přepis a shrnutí si necháváme dál, ty se nemažou s nahrávkou. Po devadesáti dnech vrátí endpoint recording_expired.
  • Vypnout je jde u každého agenta zvlášť - přepínačem na jeho detailu, v API polem recordCalls: false. Od té chvíle nahrávka nevzniká.
  • Nahrávají se jen hovory zabudovaného agenta. Přímé spojení dvou čísel (bridge), relay ani hovor přes SIP se nenahrává.

Za informování volajícího odpovídáš ty

Nahrávání hovoru je zpracování osobních údajů. Když je zapnuté, volai k první větě agenta automaticky připojí krátkou větu, že hovor se nahrává - stane se to samo, nic k tomu do promptu ani do první věty psát nemusíš. Za to, že sdělení odpovídá zákonu pro tvoji situaci, i tak odpovídáš ty jako správce osobních údajů.

Každá chyba API nese cause (kdo ji opraví) a action (co udělat) - viz Formát chyb v referenci REST API.

10Limity

  • Hovor trvá maximálně 10 minut (600 vteřin), pak ho agent sám ukončí.
  • Když volající 20 vteřin mlčí, agent to bere jako konec hovoru a zavěsí.
  • Odezva agenta je zhruba 1 vteřina od doby, co domluvíš - v reálném provozu mírně kolísá podle zátěže.

11Jazyky

Agent umí mluvit pěti jazyky - čeština (výchozí), slovenština, angličtina, němčina a polština - jazyk nastavíš na detailu agenta (pole language v POST/PATCH /v1/agents, create_agent/update_agent) - hlas pro každý jazyk zvlášť (Cartesia) má jen vlastní hlasový motor volai (viz kapitolu Hlasy níže), agent na ElevenLabs mluví zvoleným jazykem hlasem Anet.

12Zkušební hovor

Tlačítko „Zavolat mi na zkoušku“ na detailu agenta v portálu spustí od agenta skutečný hovor na číslo, které zadáš - rychlé ověření, jak agent zní a jak reaguje na tvůj systémový prompt, bez nutnosti volat ručně na jeho číslo.

Účtuje se jako běžný odchozí hovor s agentem, včetně agentní přirážky (viz kapitolu Ceny níže) - žádná sleva ani zvláštní sazba.

Agent na vlastním hlasovém motoru volai zkušební hovor zvládne i bez vlastního telefonního čísla - použije se sdílená linka volai, takže volaný na displeji uvidí číslo volai, ne agentovo. Agent na ElevenLabs bez vlastního čísla zkušební hovor spustit nemůže, dokud mu číslo nepřiřadíš.

Nejvýš 3 pokusy o zkušební hovor denně na účet, napříč všemi agenty - počítá se každý pokus, který se doopravdy vytočil, i když ho nikdo nezvedl; pokus, který selhal ještě před vytočením (nedostatečný kredit, obsazená linka), se do limitu nepočítá. Běžné hovory přes POST /v1/calls tenhle přísnější limit nemají.

13Hlasy

Volba poskytovatele při založení má tři stavy: useForOutboundTasks: true v POST /v1/agents nebo create_agent vybere vlastní hlasový motor volai, false začne na standardní platformě (ElevenLabs), i když zároveň nastavíš přepojení, a vynechané pole použije aktuální výchozí nastavení nasazení, které závisí na zapnutí motoru a povolených jazycích. Samotné cs nebo sk motor nezaručuje; při vypnutém výchozím motoru agent vzniká na ElevenLabs. Když výslovné false přebije výchozí motor jazyka, nese odpověď na založení varování elevenlabs_by_explicit_choice; agenta jen na příchozí hovory proto zakládej bez pole. Když agentovi na ElevenLabs zapneš transferTo, volai se ho po uložení pokusí převést na motor. Pokus může být pozastavený, nedostupný nebo selhat, proto vždy ověř výsledek: u REST následným GET /v1/agents/{id}, u MCP ve vráceném agentovi. Kterou platformu agent používá, říká pole provider; dokud zůstává na ElevenLabs, přepojení nefunguje. Při úspěchu se může změnit hlas. Stejný pokus spustí změna language u agenta na ElevenLabs z jazyka, ve kterém noví agenti vznikají na ElevenLabs (dnes en, de, pl), na jazyk, ve kterém vznikají na motoru (cs, sk); agent pak dostane výchozí hlas motoru pro nový jazyk (Milena, Katarina). Změna mezi cs a sk nic nepřesouvá. Jinak mezi platformami přepíná volai (podpora). Agent na ElevenLabs bere jen katty nebo syrové ElevenLabs voice id; ostatní hlasy katalogu fungují jen na motoru.

voiceId u create_agent/update_agent (a stejnojmenné pole v POST/PATCH /v1/agents) vybírá hlas agenta. Nefiltrovaný výpis GET /v1/voices (MCP list_voices bez argumentu provider) hlas ElevenLabs katty neukáže - REST ho vrátí až s ?provider=elevenlabs, MCP s argumentem provider: "elevenlabs". Hlasy Cartesia (Milena, Jan a hlasy dalších jazyků) jsou pro agenty na vlastním motoru volai, Katty pro agenty na ElevenLabs (o tom, na které platformě agent běží, je poznámka výš). Starší hlas anet zůstává jen agentům, kteří ho už mají - ElevenLabs ho od 12. 9. 2026 novým agentům nepřiděluje a volai takový požadavek odmítne s vysvětlením. Při založení s explicitním useForOutboundTasks: true se známý hlas nepodporovaný motorem, včetně katty, nahradí výchozím hlasem motoru pro zvolený jazyk; pokud motor zvolí až výchozí nastavení při vynechaném poli, stejný nekompatibilní hlas se odmítne. Syrové ElevenLabs ID motor odmítne vždy. Bez voiceId agent dostane výchozí hlas svého poskytovatele - u motoru Milenu, u ElevenLabs hlas šablony (Katty).

Katalog nabízí pro každý jazyk aspoň jeden ženský a jeden mužský hlas (u češtiny dnes čtyři): cs: Milena, Jan, Tereza, Marek; sk: Katarina, Peter; en: Skylar, Daniel; de: Alina, Lukas; pl: Ewa, Kacper. Portál nabízí jen hlasy zvoleného jazyka agenta - přepínají se spolu (viz kapitolu Jazyky výš).

Všechny hlasy v tabulce patří vlastnímu hlasovému motoru volai. Agentovi na ElevenLabs je API odmítne chybou 400 - ten bere z katalogu jen katty (v nefiltrovaném výpisu skrytý) a syrové ElevenLabs voice id.

idPopisUkázka
milenaMilena - Výchozí hlas volai - klidný a přirozený, vhodný pro většinu agentů.
janJan - Mužský protějšek Mileny - věcný a srozumitelný projev.
terezaTereza - Druhý ženský hlas - profesionální a strukturovaný projev.
marekMarek - Druhý mužský hlas - klidný, nosný projev pro delší hovory.
katarinaKatarina - Slovenský ženský hlas - klidný a přirozený projev.
peterPeter - Slovenský mužský hlas - věcný a srozumitelný projev.
skylarSkylar - Anglický ženský hlas - klidný a přátelský projev.
danielDaniel - Anglický mužský hlas - věcný a sebejistý projev.
alinaAlina - Německý ženský hlas - klidný a vřelý projev.
lukasLukas - Německý mužský hlas - věcný a srozumitelný projev.
ewaEwa - Polský ženský hlas - klidný a přirozený projev.
kacperKacper - Polský mužský hlas - věcný a sebejistý projev.

voiceId přijímá i syrové ElevenLabs ID, ale jen pro agenta na standardní platformě (provider: "elevenlabs"). Pro agenta na motoru použij id hlasu z katalogu. Neznámá nebo s poskytovatelem nekompatibilní hodnota vrátí chybu, která vyjmenuje platné možnosti.

14Statistiky

Detail agenta v portálu ukazuje počet zvednutých hovorů, jejich průměrnou a nejdelší délku a počet za posledních 30 dní - žádné vlastní API pro tohle není, čísla si spočítáš i sám nad výstupem GET /v1/calls.

15Ceny

Hlasový agent se účtuje navíc k ceně hovoru, po vteřinách - žádné zaokrouhlování na celé minuty. Sazby jsou bez DPH, jako celý ceník.

SměrHovorAgentCelkem
Odchozí0,92 Kč/min2,50 Kč/min3,42 Kč/min
Příchozí0,50 Kč/min2,50 Kč/min3,00 Kč/min

Podrobný ceník i s příklady je na stránce Ceník.

Radši svoje ElevenLabs, Vapi nebo jinou platformu? Bez agentní přirážky to jde přes vlastního agenta - viz Vlastní agent.

16Transkripty a webhook

Po skončení hovoru si přepis a shrnutí vyzvedneš přes GET /v1/calls/{id} (pole transcript a summary) - anebo ti je volai sám pošle na tvoji URL formou události call.completed, jakmile je má hotové. Formát přepisu, ověření podpisu a chování při chybě je na stránce Webhooky.

Nechceš čekat na webhook ani pollovat API? V portálu má každý agent v detailu i přehled posledních hovorů s přepisem přímo k přečtení.

17Hlasový motor volai

Část agentů dnes běží na vlastním hlasovém motoru volai místo na ElevenLabs. Přepnutí mění směrování hovoru a přenáší se s ním celá konfigurace agenta - instrukce, první věta, sběrná pole, cíl hovoru, znalosti, nástroje i přepojení na člověka. Co se přepnutím mění a co ne:

  • Hlasy agent, který měl vybraný hlas ElevenLabs (Katty, nebo starší Anet), dostane po přepnutí výchozí hlas motoru pro svůj jazyk - u češtiny Milenu. Motor hlas ElevenLabs jako svůj hlavní hlas nenabízí, ElevenLabs u něj zůstává jen záskokem pro výpadek Cartesie. V nastavení agenta si pak vybereš kterýkoli jiný hlas z katalogu pro jazyk agenta, u češtiny třeba Jana. Hlas, který agent už má z katalogu motoru, se přepnutím nemění.
  • Odezva zůstává stejná jako u ElevenLabs - kolem 1 vteřiny od doby, co domluvíš.
  • Nahrávky beze změny - pořád se drží 90 dní a jde je stejně vypnout na detailu agenta.
  • Upozornění na nahrávání beze změny - máš-li nahrávání zapnuté, volai i tady připojí k první větě agenta krátkou větu, že se hovor nahrává (viz sekce Nahrávky výš). Vypnuté nahrávání znamená, že se věta nepřipojuje vůbec.
  • Sdělení, že mluví AI beze změny - první větu posíláme poskytovateli tak, jak sis ji napsal(a). Nevynucujeme ji: když sdělení, že volající mluví s digitální asistentkou, chybí, jen tě na to upozorníme (evropský AI Act, čl. 50), uložení to nezastaví. Odpovědnost za sdělení zůstává na tobě u obou poskytovatelů stejně.
  • Nástroje a přepojení hovoru přecházejí s agentem - úspěšné přepnutí posílá motoru i jeho nástroje a nastavené přepojení na člověka, nemusíš je zadávat znovu. Na vlastním hlasovém motoru volai přepojení funguje mostem (stejně jako popisuje kapitola Přepojení na člověka výš) - most je ověřený v běžném provozu a portál u agenta na motoru ukazuje plný formulář přepojení. U agenta na standardní platformě (ElevenLabs) spustí zapnutí přepojení hned po uložení pokus o převod na vlastní motor; ověř výsledek v poli `provider`, protože při pozastavení, nedostupnosti motoru nebo chybě může zůstat na ElevenLabs a přepojení tam nefunguje. Úspěšným převodem se mu může změnit hlas na výchozí hlas motoru. Hromadná migrace čísel po vlnách proto agenty s nastaveným přepojením vynechává.
  • Hlasová schránka u odchozích hovorů umí rozpoznat jen vlastní hlasový motor volai - do pár vteřin po zvednutí pozná záznamník místo člověka a podle nastavení ho jen označí, zavěsí, nebo počká na tón a přečte vzkaz. Nastavuje se v detailu agenta (jen agent na motoru), API i MCP polem `voicemail`. Výpis hovorů pak u odchozího hovoru se schránkou ukáže "Zvedla schránka" místo obvyklého výsledku. Standardní platforma (ElevenLabs) detekci nemá.
  • Připomínka v tichu přehraje jen vlastní hlasový motor volai - když volající dlouho mlčí, agent se jednou zeptá, jestli tam ještě je. Nastavení (zapnuto/vypnuto, počet vteřin 3 až 25) se ukládá u obou poskytovatelů - u agenta na standardní platformě (ElevenLabs) je pole v detailu agenta zašedlé a hodnota zazní až po přepnutí na motor.
  • Smích agentky jen vlastní hlasový motor volai umí zareagovat smíchem, když se v hovoru zasměješ nebo zažertuješ ty nebo volající - a jen u českého hlasu Cartesia (Milena, Jan a další z katalogu). Standardní platforma (ElevenLabs) smích neumí vůbec, i když pole nastavíš. V nastavení agenta zvolíš Automaticky (motor smích sám vypne u citlivých témat, třeba dluhů, zdravotnictví, úřadů nebo pohřebnictví), Zapnuto (přebije tuhle detekci) nebo Vypnuto. Změna platí od dalšího hovoru.

18Kalendář a termíny

Agent na vlastním hlasovém motoru volai umí přímo v hovoru zjistit volný termín v tvém Google nebo Apple kalendáři a schůzku rovnou zapsat - řekne volajícímu, jestli je čas volný, nabídne nejbližší volné termíny a po potvrzení jména zapíše schůzku. Zapíná se v editoru agenta na záložce Kalendář: vybereš připojení (Data a integrace), konkrétní kalendář a pravidla dostupnosti.

  • Pravidla dostupnosti okna podle dne v týdnu (kdy agent vůbec nabízí termíny), délka schůzky, rezerva mezi termíny, minimální předstih před sjednaným časem a horizont, jak daleko dopředu agent hledá. Výchozí hodnoty vyplní editor sám, jdou ale upravit pro každého agenta zvlášť.
  • Vestavěné nástroje kalendář používá dva vestavěné nástroje, check_availability a book_appointment - na rozdíl od vlastních nástrojů z kapitoly Nástroje výš se nezakládají ručně, zapnou se samy spolu s kalendářem a nepočítají se do limitu nástrojů na účet.
  • Jen vlastní motor volai funguje výhradně u agenta na vlastním hlasovém motoru volai. Když kalendář zapneš u agenta na standardní platformě (ElevenLabs), nastavení se uloží a agent se hned po uložení pokusí přepnout na motor volai - stejně jako u přepojení na člověka.
  • Co agent řekne a neřekne agent nikdy nepřečte, co je v kalendáři zapsané - jen jestli je daný čas volný. Telefon volajícího se do události zapíše, jen když ho agent zná (skryté číslo znamená událost bez telefonu).
  • I mimo hovor totéž hledání volných termínů a zápis schůzky jde i mimo hovor přes REST (POST /v1/integrations/{id}/availability, POST /v1/integrations/{id}/events) a MCP (find_free_slots, create_calendar_event) - podrobnosti v sekci Kalendáře v REST API referenci a v MCP referenci.