Treceți la conținut

Ghiduri

Agent vocal

Un agent este la fel de bun ca promptul său de sistem. Pagina de față vă arată cum să scrieți unul, vă oferă trei exemple gata de copiat și explică limitele pe care trebuie să le aveți în vedere.

Numărul asistentului

Un agent răspunde la apeluri și efectuează apeluri de la numărul pe care i-l atribuiți în detaliul agentului (câmpul numberE164 în API). Un număr vocal primește și efectuează apeluri, dar nu primește SMS. Dacă doriți ca asistentul dumneavoastră să aibă un număr la care oamenii pot suna și trimite SMS și de la care el efectuează apeluri și trimite SMS, comandați un număr pentru apeluri și SMS: un număr fix din Praga care, după înregistrarea la operator (de obicei în 1 zi lucrătoare, cel mult în 48 de ore), este deservit de un agent care rulează pe motorul vocal propriu al volai. Apelurile de la el merg doar către numere cehe (+420), iar SMS-urile sale nu au rapoarte de livrare. Detalii găsiți în referința API, la secțiunea Număr pentru apeluri și SMSs.

1Structura systemPrompt

Un prompt bun are patru părți. Dacă omiteți oricare dintre ele, agentul va ajunge până la urmă într-un impas și nu va ști ce să facă mai departe - fie tace, fie inventează ceva.

  • Cine sunt - una sau două propoziții: numele firmei, rolul, tonul. Agentul trebuie să își stabilească această identitate chiar din prima replică.
  • Ce pot face - sarcinile concrete pe care agentul le gestionează efectiv (comenzi, programări, informații) - nu un vag „vă pot ajuta cu orice”.
  • Ce NU fac NICIODATĂ - limitele: ce nu are voie agentul să inventeze, să promită sau să comunice. Această parte este omisă cel mai des și tocmai ea face diferența între un agent care inventează prețuri și unul care spune cinstit „nu știu, sunați la...”.
  • Cum închei apelul - când și cum se încheie apelul (rezumat, rămas-bun) și ce se face când apelantul cere ceva în afara domeniului.

Instrucțiunile mai lungi încetinesc răspunsul cu aproximativ o zecime de secundă la fiecare două mii de caractere - editorul agentului vă avertizează începând de la 3000 de caractere. Limita maximă este de 6000 de caractere.

Trei exemple complete - copiați-le și adaptați-le la cazul dumneavoastră:

Recepționer de cafenea

text
Ești recepționerul vocal al cafenelei Nula Cafe din Vinohrady. Vorbești
calm, cald și concis - așa cum ar face un angajat cu experiență,
nu un robot.

CE POȚI FACE
- Preiei comenzi pentru ridicare (cafea, ceai, croissante, sandvișuri).
- Spui apelanților programul actual: de luni până vineri 8:00-18:00,
  în weekend 9:00-15:00.
- La finalul comenzii o repeți integral și confirmi ora de ridicare
  (cel puțin 15 minute de acum).

CE NU FACI NICIODATĂ
- Nu inventezi prețuri sau produse care nu sunt în meniu - spui că
  personalul va confirma prețul exact la fața locului.
- Nu promiți livrare, cafeneaua nu livrează.
- Nu te dai drept om când apelantul te întreabă direct - spui
  că ești asistentul vocal al cafenelei.

CUM ÎNCHEI APELUL
Rezumi comanda și ora de ridicare, urezi o zi bună și închizi
apelul. Dacă apelantul vrea ceva ce nu poți rezolva (reclamații,
catering), îl rogi să sune din nou în timpul programului și să vorbească
direct cu proprietarul.

Sondaj de satisfacție

text
Suni în numele magazinului online Botanika pentru un scurt sondaj
de satisfacție după o comandă recentă. Ești politicos, mergi direct
la subiect și nu prelungești apelul.

CE POȚI FACE
- Întrebi dacă clientul are un minut pentru trei întrebări scurte.
- Întrebarea 1: cum ar evalua satisfacția față de comandă,
  pe o scară de la 1 la 5.
- Întrebarea 2: a ajuns coletul la timp?
- Întrebarea 3: avem ceva de îmbunătățit?
- Reții răspunsurile și le rezumi pe scurt la finalul
  apelului.

CE NU FACI NICIODATĂ
- Nu insiști pe lângă un client care refuză sau spune că nu are timp -
  închei imediat și politicos apelul.
- Nu rezolvi reclamații sau retururi - acestea țin de linia de
  suport pentru clienți, pe care o poți citi la cerere.
- Nu oferi reduceri sau cupoane, nu ai această competență.

CUM ÎNCHEI APELUL
Mulțumești pentru timp și pentru feedback, urezi o zi bună. Dacă
clientul spune în orice moment că nu vrea să continue, închei apelul
politicos, imediat, fără alte întrebări.

Recepție / poartă

text
Ești recepția vocală a clădirii de birouri Nordwex din
Pankrác. La acest număr sună curieri, vizitatori și furnizori.

CE POȚI FACE
- Afli cine sună și de ce (un curier cu un colet, un vizitator
  pentru o întâlnire, un furnizor).
- Pentru un vizitator, afli numele și cu cine are întâlnire, apoi îi spui
  să se înregistreze la recepția de la parter și să aștepte până când
  vine cineva după el.
- Unui curier îi spui să lase coletul la recepție și să scrie pe el
  numele firmei și al destinatarului.
- Preiei un mesaj scurt când persoana căutată nu este
  disponibilă în acel moment.

CE NU FACI NICIODATĂ
- Nu dai numerele de mobil private ale angajaților - oferi
  transferul la recepție sau preiei un mesaj.
- Nu lași pe nimeni să urce „singur” - toți vizitatorii trec prin recepție.
- Nu spui cine se află în clădire în prezent sau până când - spui că
  trebuie să verifice la recepție.

CUM ÎNCHEI APELUL
Repeți ce s-a stabilit (mesajul, așteptarea la recepție, transferul),
urezi o zi bună și închizi apelul.

2Șabloane pe domenii

Nu vreți să scrieți un prompt de la zero? Pe site există șabloane gata făcute pentru șase domenii (cabinet stomatologic, service auto, restaurant, magazin online, agenție imobiliară, meseriași) - un prompt de sistem complet, un dialog exemplu și un exemplu de cât ar costa un asemenea recepționer. Copiați-l și adaptați-l, la fel ca exemplele de mai sus.

Vezi șabloanele pe domenii

3firstMessage

firstMessage este prima propoziție pe care o aude clientul - imediat după ce ridică telefonul, la un apel primit, sau imediat după ce persoana apelată răspunde, la un apel efectuat.

  • Limbă vorbită, scurtă - așa cum ar spune-o un om, nu cum ar scrie un e-mail.
  • Spuneți de la început cine sau ce sună ori răspunde - clientul trebuie să afle în trei secunde cu cine vorbește.
  • Încheiați cu o întrebare deschisă („cu ce vă pot ajuta”, „aveți un minut”) - nu cu un monolog lung.
  • Citiți textul cu voce tare - ce arată bine în scris poate suna stângaci rostit.
  • La apelurile efectuate, prezentați-vă și spuneți motivul apelului chiar de la început - oamenii sunt precauți când răspund la numere necunoscute.

4Instrumente

Un instrument este adresa API-ului dumneavoastră, pe care agentul o apelează în mijlocul convorbirii și al cărei răspuns îl folosește imediat în vorbire. Fără instrument, agentul poate doar să vorbească; cu unul, poate verifica o comandă, găsi un interval liber sau înregistra o rezervare.

Instrumentele se creează în portal la /agent/nastroje (sau prin POST /v1/tools), apoi se activează pentru un agent printr-o casetă de selectare în detaliul acestuia (în API câmpul toolIds). Un instrument aparține contului, nu unui agent - același instrument poate fi folosit de mai mulți agenți. Pentru el specificați patru lucruri:

  • Nume - unul lizibil („Verificare comandă”). Numele pe care îl vede modelul este derivat automat din el (overit_objednavku) și afișat sub câmp.
  • Când îl folosește agentul - singurul element pe baza căruia modelul decide dacă apelează instrumentul. Scrieți-l ca instrucțiune: „Folosește când apelantul întreabă unde este comanda sa.”
  • Adresă și metodă - doar https, accesibilă public. GET trimite parametrii în query string, POST în corpul JSON. Plus anteturi, de obicei Authorization.
  • Parametri - pentru fiecare indicați de unde provine valoarea: modelul o extrage din convorbire, numărul apelantului sau al celui apelat se completează automat ori este o valoare fixă.

Iată cum arată cererea care ajunge la endpoint-ul dumneavoastră în timpul apelului:

http
POST https://api.yourapp.com/orders
Content-Type: application/json
Authorization: Bearer your_key

{
  "order_number": "A-42",
  "phone": "+420777123456"
}

Iar acesta este răspunsul cu care agentul poate lucra - un scurt JSON pe care îl poate transforma într-o singură propoziție:

json
{
  "status": "shipped",
  "delivery": "tomorrow morning"
}

Încercați instrumentul înainte de a-l salva

Formularul are un buton Încearcă: trimite o cerere reală la adresa indicată cu valori de probă și afișează statusul, timpul de răspuns și începutul răspunsului. Nimic nu se salvează în acest proces. Merită - un endpoint care răspunde lent este auzit de apelant ca tăcere în timpul apelului.

Limite: cel mult 10 instrumente pe cont, 10 parametri și 5 anteturi pe instrument, timeout de răspuns între 5 și 30 de secunde (implicit 20) - exact atât așteaptă agentul, rostind între timp o formulă de umplere, ca apelantul să nu audă tăcere. Valorile anteturilor vi le afișăm doar mascate (Bear***) - valoarea completă nu mai poate fi citită din cont.

Poarta de confirmare pentru un instrument care trimite ceva

Pentru un instrument cu efect secundar (trimite un SMS, creează o cerere), activați poarta de confirmare cu câmpul requireConfirmation: true (POST și PATCH /v1/tools, în MCP create_tool și update_tool). Motorul vocal volai rulează atunci instrumentul numai dacă ultimul răspuns al apelantului spune clar da. La un răspuns neclar („Alo?”, „Da?”, „Da, dar mai târziu”) instrumentul nu rulează, agentul primește indicația să întrebe din nou, iar o încercare de a încheia apelul în aceeași rundă este reținută. Implicit este dezactivată.

Se aplică doar unui agent de pe motorul propriu al volai în cehă sau slovacă: motorul cunoaște cuvintele de consimțământ doar în aceste două limbi (pentru en, de și pl ar bloca chiar și un „Da” clar), așa că câmpul este ignorat pentru un agent în altă limbă, iar ElevenLabs nu îl folosește. Un instrument aparține contului și este partajat de mai mulți agenți, deci salvarea lui nu este niciodată refuzată din cauza limbii. Poarta citește doar ultimul răspuns al apelantului și nu cunoaște întrebarea agentului: surprinde consimțământul neclar, nu orice „Da” spus ca răspuns la o altă întrebare. O modificare a unui instrument ajunge la un agent care rulează deja pe motor doar la următoarea salvare sau publicare a agentului - editarea unui instrument nu rescrie niciodată agenții de la sine. Pentru o campanie în desfășurare contează modul: republicarea neschimbată a ciornei testate păstrează marcajul de testat, deci sarcina continuă să ruleze, acum cu o poartă pe care testul nu a acoperit-o; o salvare directă a agentului (PATCH /v1/agents/{id}) șterge marcajul de testat și oprește sarcina cu agent_version_changed. Planificați activarea porții în afara unei campanii în desfășurare și testați apoi campania din nou.

În portal activați poarta cu Solicită consimțământul clar al apelantului în editorul instrumentului (/agent/nastroje). Se aplică aceleași reguli ca mai sus; pentru un agent care rulează deja pe motor, modificarea ajunge la el prin butonul Publică din detaliul său.

5Transfer către un om

Agentul poate transfera apelul la numărul dumneavoastră când apelantul cere o persoană sau întâlnește ceva ce agentul nu poate rezolva. Se activează în detaliul agentului (câmpul transferTo în API); condiția o scrieți ca instrucțiune pentru model în transferCondition. Fără ea folosim o propoziție implicită.

Pe motorul vocal propriu al volai

Pe motorul vocal propriu al volai transferul se face printr-o punte: agentul spune că vă conectează, apelantul aude sunând, iar omul de la numărul dumneavoastră vede numărul agentului. Odată ce ridicați, agentul tace și apelul continuă între voi doi prin volai. Dacă unul dintre voi închide, apelul se încheie pentru amândoi. Dacă nu răspundeți în 25 de secunde, agentul își cere scuze apelantului, se oferă să preia un mesaj și continuă.

Două lucruri bune de știut dinainte

Nu transmitem omului un rezumat al apelului. Apelantul aude că este transferat, dar persoana de la celălalt capăt preia direct apelantul - nu există un „transfer cald” în care agentul informează mai întâi omul; rețeaua telefonică nu permite acest lucru. Planificați în instrucțiuni: cereți agentului să-i spună apelantului că poate fi nevoit să se repete.

Un transfer este un apel efectuat obișnuit și se tarifează ca atare: 0.92 CZK/min de la ridicare până la închidere, fără supliment pentru agent (agentul nu mai este pe acest segment). Îl recunoașteți în istoricul apelurilor după tipul transfer, iar pagina de detaliu a apelului inițial conține un card Transfer cu trimitere la acest segment. Segmentul primit continuă și se tarifează separat.

Platforma standard (ElevenLabs)

Pe platforma standard (ElevenLabs) transferul nu funcționează - operatorul SIP nu îl finalizează niciodată. După ce activați transferul, volai încearcă să mute agentul pe motorul vocal propriu imediat după salvare. Încercarea poate fi suspendată, motorul poate fi indisponibil sau mutarea poate eșua; verificați câmpul returnat provider pentru a vă asigura că agentul este efectiv pe motor. Transferul nu funcționează cât timp agentul rămâne pe ElevenLabs. O mutare reușită poate schimba vocea agentului; vocea implicită a motorului este Milena.

Nu puteți transfera către propriul număr volai - apelul s-ar întoarce în sine până la epuizarea creditului. Liniile cu tarif special (90x) sunt interzise din același motiv.

Un agent care folosește un număr pentru apeluri și SMS transferă doar către numere cehe (+420): apelurile de la acel număr merg doar către numere cehe, deci un număr de transfer din afara +420 nu se salvează pentru un astfel de agent, iar API-ul returnează destination_not_allowed.

6Date colectate din apeluri

În loc să citiți transcrierea completă, puteți specifica exact ce doriți să obțineți dintr-un apel - un nume, un număr de articole, dacă este urgent. Agentul completează datele după apel, iar dumneavoastră le primiți înapoi ca JSON.

Fiecare câmp are o cheie, un tip și o descriere. Până la zece câmpuri pe agent:

  • Cheie (key) - litere mici, cifre și caractere de subliniere, până la 40 de caractere - trebuie să înceapă cu o literă mică. Valoarea o găsiți în rezultat sub acest nume.
  • Tip (type) - string, number sau boolean.
  • Descriere (description) - exact ce trebuie să extragă modelul, între 5 și 500 de caractere. Spuneți și ce să facă atunci când apelul nu menționează informația.
  • Opțiuni (enumValues) - o listă opțională, doar pentru câmpurile text. Modelul alege atunci numai dintre valorile oferite, deci rezultatul poate fi filtrat direct. Cel mult 20 de opțiuni, fiecare până la 60 de caractere.
bash
curl -X PATCH https://volai.eu/v1/agents/ag_kx91fa2b \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "dataFields": [
      {"key": "name", "type": "string", "description": "Numele apelantului, așa cum l-a spus. Lasă gol dacă nu a fost menționat."},
      {"key": "coffee_count", "type": "number", "description": "Câte cafele a comandat apelantul."},
      {"key": "urgency", "type": "string", "description": "Cât de urgentă a fost solicitarea.", "enumValues": ["low", "normal", "high"]}
    ]
  }'

Rezultatul apare în trei locuri: pe pagina de detaliu a apelului din portal, ca un card „Date colectate”, în câmpul data al apelului (atât GET /v1/calls, cât și GET /v1/calls/{id}) și în corpul webhook-ului call.completed.

json
{
  "call": {
    "id": "c_8f2ac1d4",
    "status": "completed",
    "hasRecording": true,
    "data": {
      "name": "Jane Smith",
      "coffee_count": 2,
      "urgency": "normal"
    }
  }
}

O valoare null înseamnă „nu a fost menționat în apel” - același lucru se aplică dacă modelul returnează un șir gol. Dacă un agent nu are câmpuri configurate, cheia data nu apare deloc în răspuns.

7Obiectivul agentului și evaluarea

Un obiectiv este o propoziție care descrie ce trebuie să realizeze apelul - „programează o vizionare”, „aflați dacă clientul este interesat de ofertă”. Îl completați în câmpul „Obiectivul agentului” din portal (la crearea agentului sau oricând mai târziu, la editare), sau prin REST API și MCP în câmpul goal al POST/PATCH /v1/agents și al create_agent/update_agent (până la 300 de caractere).

Obiectivul ajunge la agent ca criteriu de evaluare a apelului: după încheierea apelului, un model citește transcrierea în raport cu el și decide dacă obiectivul a fost atins, neatins sau nu poate fi stabilit din apel. Rezultatul îl vedeți la apel în portal - pe pagina de detaliu a apelului și în lista de apeluri - precum și în e-mailul de după apel, lângă rezumat.

Este o estimare a unui model, nu un fapt

Evaluarea citește doar transcrierea apelului, nu ce s-a întâmplat după aceea (dacă clientul a venit efectiv). O precizare cinstită: obiectivul agentului (goal) poate fi setat și citit prin REST API și MCP, dar REZULTATUL evaluării unui anumit apel rămâne doar în portal și în e-mailul de după apel - GET /v1/calls și get_call nu îl returnează. Evaluarea rulează, de asemenea, doar pentru agenții de pe noul motor vocal al volai - pe ce platformă rulează un agent arată câmpul provider (GET /v1/agents, list_agents și pagina de detaliu a agentului din portal); mutarea o gestionează volai. Agenții mai vechi, rămași pe platforma inițială, o vor primi doar după ce vor fi mutați pe acest motor.

Ce știe agentul (materiale de fundal)

Pe lângă instrucțiuni, puteți da agentului materiale de fundal - programul de funcționare, o listă de prețuri, o secțiune de întrebări frecvente. Le completați în câmpul „Ce știe agentul” din portal (secțiunea Avansat) sau în câmpul knowledge al POST/PATCH /v1/agents. Textul este adăugat la finalul promptului, încape în 20000 de caractere, iar un PATCH cu valoare goală îl șterge. Spre deosebire de un instrument, aceste materiale nu se schimbă niciodată în timpul unui apel - tot ce se schimbă (starea comenzii, intervale libere) aparține unui instrument, nu acestui câmp.

8E-mail după apel

După ce se încheie un apel cu agentul, volai vă trimite un e-mail cu rezumatul și un link către detaliul apelului din portal - același rezumat pe care îl vedeți în API în câmpul summary. Se trimite pentru agenții care rulează pe motorul vocal propriu al volai (provider: "engine"); un agent pe ElevenLabs (provider: "elevenlabs") nu îl primește încă.

Comutatorul „E-mail după fiecare apel” se află pe pagina Setări - dezactivarea lui oprește e-mailul pentru întregul cont dintr-o dată. Pentru a-l opri doar pentru un singur agent, folosiți caseta „Trimite-mi e-mail după fiecare apel” din detaliul agentului respectiv (câmpul notifyEmail: false în API). Primiți cel mult un e-mail pe apel, iar un apel fără nimic de raportat (fără rezumat, fără date colectate și fără motiv de încheiere) nu declanșează unul.

9Înregistrări

Apelurile agentului sunt înregistrate și le puteți reda direct din pagina de detaliu a apelului din portal - un clic în transcriere sare la punctul corespunzător din înregistrare. Pentru a o descărca sau reda în altă parte, folosiți GET /v1/calls/{id}/recording (aceeași cheie API) - formatul urmează antetul content-type al răspunsului: audio/mpeg (MP3) pentru un agent pe ElevenLabs, audio/ogg în prezent pentru un agent pe motorul volai. Câmpul hasRecording spune dacă un apel are înregistrare.

  • O păstrăm 90 de zile după apel, apoi o ștergem. Transcrierea și rezumatul se păstrează separat și nu sunt șterse odată cu înregistrarea. După nouăzeci de zile, endpoint-ul returnează recording_expired.
  • O puteți dezactiva pentru fiecare agent cu un comutator din detaliul acestuia sau cu câmpul recordCalls: false în API. Nu se face nicio înregistrare pentru apelurile începute din acel moment; un apel care sună deja sau este în desfășurare urmează setarea din momentul în care a început (un apel efectuat, din momentul în care a fost format), deci este totuși înregistrat.
  • Sunt înregistrate doar apelurile gestionate de agentul integrat. O punte directă între două numere, un apel relay și un apel SIP nu sunt niciodată înregistrate.

Informarea apelantului este responsabilitatea dumneavoastră

Înregistrarea unui apel este prelucrare de date cu caracter personal. Agentul nu informează apelantul din proprie inițiativă - dacă doriți să o facă, activați „Informează apelantul că apelul este înregistrat” la agent (recordingNotice: true în API), iar volai adaugă o scurtă propoziție la primul mesaj al agentului, care spune că apelul este înregistrat. Puteți la fel de bine să o scrieți singur în replica de deschidere. Asigurarea că informarea respectă legea în situația dumneavoastră este responsabilitatea dumneavoastră, în calitate de operator de date.

Fiecare eroare a API-ului conține cause (cine o remediază) și action (ce trebuie făcut) - vezi Formatul erorilor în referința REST API.

10Limite

  • Un apel durează cel mult 10 minute (600 de secunde), apoi agentul îl încheie singur.
  • Dacă apelantul tace 20 de secunde, agentul consideră că apelul s-a încheiat și închide.
  • Agentul răspunde la aproximativ 1 secundă după ce terminați de vorbit - în traficul real variază ușor în funcție de încărcare.

11Limbi

Agentul poate vorbi cinci limbi - cehă (implicită), slovacă, engleză, germană și poloneză - limba o setați în detaliul agentului (câmpul language în POST/PATCH /v1/agents, create_agent/update_agent). O voce dedicată pentru fiecare limbă (Cartesia) este disponibilă doar unui agent care rulează pe motorul propriu al volai (vezi capitolul Voci de mai jos) - un agent care rămâne pe ElevenLabs vorbește limba aleasă cu vocea Anet.

12Apel de test

Butonul „Sună-mă pentru test” din detaliul agentului din portal face ca agentul să efectueze un apel real la numărul pe care îl introduceți - o verificare rapidă a felului în care sună și a modului în care reacționează la promptul dumneavoastră de sistem, fără a fi nevoie să formați manual numărul lui.

Se tarifează ca un apel efectuat obișnuit cu agentul, inclusiv suplimentul pentru agent (vezi capitolul Prețuri de mai jos) - fără reducere, fără tarif special.

Un agent pe motorul vocal propriu al volai poate face un apel de test chiar și fără număr de telefon propriu - apelul pleacă prin linia comună volai, deci persoana apelată vede pe ecran numărul volai, nu pe cel al agentului. Un agent pe ElevenLabs fără număr propriu nu poate porni un apel de test până nu îi atribuiți unul.

Cel mult 3 încercări de apel de test pe cont pe zi, pentru toți agenții împreună - contează fiecare încercare care s-a conectat efectiv, chiar și una la care nu a răspuns nimeni; o încercare care a eșuat înainte de conectare (credit insuficient, linie ocupată) nu se numără în limită. Apelurile obișnuite prin POST /v1/calls nu au o limită atât de strictă.

13Voci

Alegerea furnizorului la creare are trei stări: useForOutboundTasks: true în POST /v1/agents sau create_agent alege motorul vocal propriu al volai, false pornește pe ElevenLabs chiar și cu transfer, iar omiterea folosește valoarea implicită a implementării, care depinde de disponibilitatea motorului, de activarea lui și de limbile configurate. Alegerea doar a cs sau sk nu garantează motorul; când valoarea implicită a motorului este dezactivată, crearea pornește pe ElevenLabs. Când un false explicit suprascrie valoarea implicită a motorului pentru limbă, răspunsul de creare conține avertismentul elevenlabs_by_explicit_choice, deci creați fără acest câmp un agent destinat doar apelurilor primite. Când activați transferTo pe un agent ElevenLabs, volai încearcă să îl mute pe motor după salvare. Încercarea poate fi suspendată, indisponibilă sau poate eșua, așa că verificați rezultatul cu un GET /v1/agents/{id} ulterior pentru REST sau în agentul returnat pentru MCP. Câmpul provider spune pe ce platformă rulează un agent; transferul nu funcționează cât timp agentul rămâne pe ElevenLabs. O mutare reușită poate schimba vocea acestuia. Aceeași încercare urmează după o schimbare de language la un agent ElevenLabs dintr-o limbă în care agenții noi pornesc pe ElevenLabs (în prezent en, de, pl) într-una în care pornesc pe motor (cs, sk); agentul primește atunci vocea implicită a motorului pentru noua limbă (Milena, Katarina). O schimbare între cs și sk nu mută nimic. Mutarea între platforme în alte situații o face suportul volai. ElevenLabs acceptă din catalog doar katty sau un id brut de voce ElevenLabs; celelalte voci din catalog necesită motorul.

voiceId la create_agent/update_agent (și câmpul cu același nume din POST/PATCH /v1/agents) alege vocea agentului. Lista nefiltrată GET /v1/voices (MCP list_voices fără argumentul provider) nu arată vocea ElevenLabs katty - REST o returnează doar cu ?provider=elevenlabs, MCP cu argumentul provider: "elevenlabs". Vocile Cartesia (Milena, Jan și vocile pentru alte limbi) sunt pentru agenții de pe motorul propriu al volai, Katty pentru agenții de pe ElevenLabs (nota de mai sus explică pe ce platformă rulează un agent). Vocea mai veche anet rămâne doar la agenții care o au deja - din 12 septembrie 2026 ElevenLabs nu o mai atribuie agenților noi, iar volai respinge o asemenea cerere cu o explicație. La creare cu useForOutboundTasks: true explicit, o voce din catalog recunoscută, dar indisponibilă pe motor, inclusiv katty, este înlocuită cu valoarea implicită a motorului pentru limba aleasă; când un câmp omis alege motorul prin valoarea implicită a implementării, aceeași voce incompatibilă este respinsă. Un id brut ElevenLabs este întotdeauna respins pentru motor. Fără voiceId, agentul primește vocea implicită a furnizorului său - Milena pe motor, vocea șablonului (Katty) pe ElevenLabs.

Catalogul oferă cel puțin o voce feminină și una masculină pentru fiecare limbă (în prezent patru pentru cehă): 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. Portalul oferă doar voci în limba aleasă a agentului - se schimbă împreună (vezi capitolul Limbi de mai sus).

Fiecare voce din tabel aparține motorului vocal propriu al volai. Pentru un agent pe ElevenLabs, API-ul le respinge cu o eroare 400 - acel agent acceptă doar katty (pe care lista nefiltrată nu o arată) și un id brut de voce ElevenLabs.

idDescriereAscultare
milenaMilena - The default volai voice - calm and natural, a good fit for most agents.
janJan - The male counterpart to Milena - matter-of-fact, easy-to-follow delivery.
terezaTereza - The second female voice - professional, well-structured delivery.
marekMarek - The second male voice - calm, resonant delivery for longer calls.
katarinaKatarina - Slovak female voice - calm, natural delivery.
peterPeter - Slovak male voice - matter-of-fact, easy-to-follow delivery.
skylarSkylar - English female voice - calm, friendly delivery.
danielDaniel - English male voice - matter-of-fact, confident delivery.
alinaAlina - German female voice - calm, warm delivery.
lukasLukas - German male voice - matter-of-fact, easy-to-follow delivery.
ewaEwa - Polish female voice - calm, natural delivery.
kacperKacper - Polish male voice - matter-of-fact, confident delivery.
arielAriel - Dutch female voice - natural conversational delivery.
alexanderAlexander - Dutch male voice - warm, natural delivery.
christineChristine - Portuguese female voice - relaxed conversational delivery.
filipeFilipe - Portuguese male voice - natural, expressive delivery.
mikidutzaMikidutza - Romanian female voice - clear, friendly delivery.
oliverOliver - Romanian male voice - matter-of-fact, clear delivery.
isabellaIsabella - Danish female voice - warm, calm delivery.
sorenSøren - Danish male voice - clear, confident delivery.
yoanaYoana - Bulgarian female voice - fresh, engaging delivery.
peterkPeter K - Bulgarian male voice - warm, smooth delivery.
soiliSoili - Finnish female voice - neutral, light delivery.
jussiJussi - Finnish male voice - strong, lively delivery.
crhysaCrhysa - Greek female voice - professional, lively delivery.
iordanisIordanis - Greek male voice - natural conversational delivery.
natashaNatasha - French female voice - soft, conversational delivery.
maxMax - French male voice - charismatic, friendly delivery.
rossanaRossana - Italian female voice - warm conversational delivery.
marcoMarco - Italian male voice - charismatic, friendly delivery.
zsofiaZsófia - Hungarian female voice - soft, inviting delivery.
gaborGábor - Hungarian male voice - warm, natural, confident delivery.
sannaSanna - Swedish female voice - direct, natural delivery.
filipFilip - Swedish male voice - energetic, expressive delivery.
sarah-slSarah - Slovenian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation).
daniel-slDaniel - Slovenian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation).
alice-etAlice - Estonian female voice - clear, engaging delivery (multilingual voice, the model drives the pronunciation).
chris-etChris - Estonian male voice - down-to-earth, charming delivery (multilingual voice, the model drives the pronunciation).
matilda-lvMatilda - Latvian female voice - knowledgeable, professional delivery (multilingual voice, the model drives the pronunciation).
george-lvGeorge - Latvian male voice - warm, captivating delivery (multilingual voice, the model drives the pronunciation).
sarah-ltSarah - Lithuanian female voice - calm, confident delivery (multilingual voice, the model drives the pronunciation).
daniel-ltDaniel - Lithuanian male voice - steady, broadcaster-style delivery (multilingual voice, the model drives the pronunciation).

voiceId acceptă și un ID brut ElevenLabs, dar numai pentru un agent pe platforma standard (provider: "elevenlabs"). Folosiți un id de voce din catalog pentru un agent pe motor. O valoare necunoscută sau incompatibilă cu furnizorul returnează o eroare cu lista opțiunilor valide.

14Statistici

Ecranul de detaliu al agentului din portal arată numărul de apeluri preluate, durata lor medie și maximă și câte au avut loc în ultimele 30 de zile - nu există un API dedicat pentru asta, aceleași cifre le puteți calcula singur din GET /v1/calls.

15Prețuri

Agentul vocal se tarifează peste prețul apelului, pe secundă - fără rotunjire în sus la minute întregi. Tarifele nu includ TVA, la fel ca întreaga listă de prețuri.

DirecțieApelAgentTotal
Efectuat0.92 CZK/min (~EUR 0.04)2.50 CZK/min (~EUR 0.10)3.42 CZK/min (~EUR 0.14)
Primit0.50 CZK/min (~EUR 0.02)2.50 CZK/min (~EUR 0.10)3.00 CZK/min (~EUR 0.13)

Prețurile complete, cu exemple, se află pe pagina Prețuri.

Preferați propriul ElevenLabs, Vapi sau altă platformă? Puteți evita suplimentul pentru agent cu propriul agent - vezi Adu-ți propriul agent.

16Transcrieri și webhook

După ce se încheie un apel, preluați transcrierea și rezumatul prin GET /v1/calls/{id} (câmpurile transcript și summary) - sau volai vi le poate trimite la adresa dumneavoastră ca eveniment call.completed, imediat ce sunt gata. Formatul transcrierii, verificarea semnăturii și tratarea erorilor se află pe pagina Webhooks.

Nu vreți să așteptați un webhook sau să interogați API-ul? În portal, pagina de detaliu a fiecărui agent afișează și o listă a apelurilor recente, cu transcrierea chiar acolo, de citit.

17Motorul vocal volai

Unii agenți rulează în prezent pe motorul vocal propriu al volai în loc de ElevenLabs. Mutarea schimbă rutarea apelurilor, iar întreaga configurație a agentului se mută odată cu el - instrucțiunile, replica de deschidere, câmpurile de date, obiectivul apelului, materialele de fundal, instrumentele și transferul apelului. Ce se schimbă și ce nu:

  • Voci un agent care avea selectată o voce ElevenLabs (Katty sau mai vechea Anet) primește, după mutare, vocea implicită a motorului pentru limba sa - Milena pentru cehă. Motorul nu oferă o voce ElevenLabs ca voce principală, ElevenLabs rămâne doar ca rezervă în cazul unei întreruperi Cartesia. Setările agentului vă permit apoi să alegeți orice altă voce din catalog pentru limba agentului, printre ele Jan pentru cehă. O voce pe care agentul o are deja din catalogul motorului rămâne neschimbată.
  • Timp de răspuns rămâne la fel ca la ElevenLabs - aproximativ 1 secundă după ce terminați de vorbit.
  • Înregistrări neschimbate - se păstrează tot 90 de zile și pot fi dezactivate la fel, în detaliul agentului.
  • Informarea despre înregistrare neschimbată - cu informarea despre înregistrare activată pentru agent (`recordingNotice`), volai adaugă și aici o scurtă propoziție la primul mesaj al agentului, care spune că apelul este înregistrat (vezi secțiunea Înregistrări de mai sus). Fără această opțiune sau cu înregistrarea dezactivată, propoziția nu se adaugă deloc.
  • Informarea despre IA neschimbată - replica de deschidere ajunge la furnizor exact așa cum ați scris-o. Nu o impunem: dacă replica nu spune că apelantul vorbește cu un asistent digital, vă avertizăm doar (Regulamentul UE privind IA, articolul 50), salvarea trece oricum. Informarea rămâne responsabilitatea dumneavoastră la oricare dintre furnizori.
  • Instrumente și transferul apelului se mută odată cu agentul - o mutare reușită trimite motorului instrumentele și transferul configurat către un om, deci nu trebuie să le configurați din nou. Pe motorul vocal propriu al volai transferul funcționează printr-o punte (la fel ca în secțiunea Transfer către un om de mai sus) - puntea este verificată în exploatarea curentă, iar portalul afișează formularul complet de transfer pentru un agent pe motor. Activarea transferului la un agent pe platforma standard (ElevenLabs) declanșează o încercare imediată de mutare după salvare; verificați rezultatul în `provider`, pentru că o încercare suspendată, un motor indisponibil sau o eroare îl pot lăsa pe ElevenLabs, unde transferul nu funcționează. O mutare reușită îi poate schimba vocea în cea implicită a motorului. Migrarea în masă a numerelor, pe valuri, omite de aceea agenții cu transfer configurat.
  • Detectarea mesageriei vocale la apelurile efectuate o poate face doar motorul vocal propriu al volai - în câteva secunde de la ridicare recunoaște o mesagerie vocală în loc de o persoană și, în funcție de setare, doar o marchează, închide sau așteaptă semnalul sonor și citește un mesaj. Se setează în detaliul agentului (doar agenți pe motor), câmpul `voicemail` prin API și MCP. Lista de apeluri afișează apoi „Mesagerie vocală” pentru un apel efectuat care a ajuns la o mesagerie, în locul rezultatului obișnuit. Platforma standard (ElevenLabs) nu are o astfel de detectare.
  • Reamintire la tăcere o redă doar motorul vocal propriu al volai - când apelantul tace o vreme, agentul întreabă o singură dată dacă mai este acolo. Setarea (pornit/oprit, de la 3 la 25 de secunde) se salvează pentru oricare dintre furnizori - pentru un agent pe platforma standard (ElevenLabs) câmpul din detaliul agentului este estompat, iar valoarea se aude după ce agentul trece pe motor. Propria dumneavoastră propoziție de reamintire (`silencePromptText`, până la 80 de caractere, în locul reamintirii implicite pentru limba agentului, care în engleză este „Are you still there?”) se salvează la fel.
  • Protecția primei replici o poate face doar motorul vocal propriu al volai și doar la apelurile efectuate: cât timp se redă prima replică (numărul de secunde pe care îl setați, de la 0 la 20), o scurtă reacție a persoanei care a răspuns („Alo?”, „Da?”) nu o întrerupe: un răspuns fără un cuvânt de întrerupere (de exemplu stop, nu, așteaptă) este ignorat în fereastra protejată, deci nu întrerupe replica, nu apare în transcriere și agentul nu reacționează la el, în schimb un cuvânt de întrerupere o întrerupe întotdeauna. Cuvintele de întrerupere urmează limba agentului: un agent în engleză este întrerupt de stop, no, wait sau hold. Câmpul `firstMessageProtectSecs` se salvează pentru oricare dintre furnizori, fără valoare implicită impusă - pentru un agent pe platforma standard (ElevenLabs) este estompat în detaliul agentului și se aude după ce agentul trece pe motor. În transcrierea apelului, o replică a agentului întreruptă de apelant poartă indicatorul `interrupted`.
  • Râsul agentului doar motorul vocal propriu al volai poate râde la rândul lui când dumneavoastră sau apelantul râdeți ori glumiți în timpul apelului - și doar cu o voce Cartesia cehă (Milena, Jan și restul catalogului). Platforma standard (ElevenLabs) nu poate face asta deloc, nici cu câmpul setat. În setările agentului alegeți Automat (motorul dezactivează singur râsul pentru subiecte sensibile, precum recuperarea creanțelor, sănătatea, autoritățile sau serviciile funerare), Pornit (suprascrie această detectare) sau Oprit. Modificarea are efect de la următorul apel.

18Calendar și programări

Un agent pe motorul vocal propriu al volai poate verifica un interval liber în calendarul dumneavoastră Google sau Apple chiar în timpul apelului și poate face programarea pe loc - spune apelantului dacă o oră este liberă, oferă cele mai apropiate intervale libere și face programarea după ce a confirmat un nume. O activați în fila Calendar a editorului agentului: alegeți conexiunea (Date și integrări), calendarul concret și regulile de disponibilitate.

  • Reguli de disponibilitate intervale pe zile ale săptămânii (când oferă agentul programări), durata programării, o pauză între programări, preavizul minim înainte de ora programată și orizontul - cât de departe în viitor caută agentul. Editorul completează valori implicite, dar fiecare agent poate avea valorile sale.
  • Instrumente integrate calendarul folosește două instrumente integrate, check_availability și book_appointment - spre deosebire de instrumentele personalizate din capitolul Instrumente de mai sus, nu se creează manual, se activează odată cu calendarul și nu se numără în limita de instrumente a contului.
  • Doar motorul propriu al volai funcționează doar pentru un agent pe motorul vocal propriu al volai. Dacă activați calendarul pentru un agent pe platforma standard (ElevenLabs), setarea se salvează, iar agentul încearcă să treacă pe motorul volai imediat după salvare - la fel ca la transferul către un om.
  • Ce spune și ce nu spune agentul agentul nu citește niciodată ce este scris în calendar - doar dacă o anumită oră este liberă. Numărul de telefon al apelantului se adaugă la eveniment doar când agentul îl cunoaște (un număr ascuns înseamnă că evenimentul nu are număr de telefon).
  • Și în afara unui apel aceeași căutare de intervale libere și aceeași programare funcționează și în afara unui apel, prin REST (POST /v1/integrations/{id}/availability, POST /v1/integrations/{id}/events) și MCP (find_free_slots, create_calendar_event) - detalii vedeți în secțiunea Calendare din referința REST API și în referința MCP.