Preskoči na sadržaj

Vodiči

Vlastiti agent

Želite na volai broj povezati vlastitu glasovnu platformu - ElevenLabs Conversational AI u svom radnom prostoru, Vapi, Retell ili jednostavno vlastiti Asterisk/FreeSWITCH IVR - umjesto ugrađenog agenta? Ova stranica je vodič za oba smjera: dolazne i odlazne pozive. Kod odlaznih dodatno ne plaćate doplatak za agenta 2,50 kr/min (≈ 0,10 EUR) - agenta sami pokrećete (i plaćate) na svojoj platformi.

Brzi pregled

Dolazne pozive postavljate usmjeravanjem broja na SIP adresu vaše platforme - nikakva nova mehanika. Odlazni pozivi idu preko kratkotrajne veze releja, jer platforma sama ne može trajno registrirati liniju kao SIP klijenta.

Trebat će vam: volai broj, API ključ (vk_...) i račun na vašoj platformi (ElevenLabs, Vapi, vlastita centrala...).

1Kada vlastiti agent, a kada ugrađeni

Oba puta rade na istom broju i istom stanju - razlikuju se samo u tome TKO vodi logiku razgovora i koliko to košta povrh:

KriterijUgrađeni agentVlastiti agent
Tko vodi razgovorMi - jedan systemPrompt, naš glas i naš ElevenLabs radni prostor.Vi - bilo koja platforma, vlastiti prompt, vlastiti glas, vlastiti alati.
PostavljanjeJedan POST /v1/agents poziv.SIP podaci broja + konfiguracija vaše platforme (ova stranica).
Cijena poziva0,92 kr/min (≈ 0,04 EUR) odlazni, 0,50 kr/min (≈ 0,02 EUR) dolaznijednako - 0,92 kr/min (≈ 0,04 EUR) odlazni, 0,50 kr/min (≈ 0,02 EUR) dolazni
Doplatak za agenta+ 2,50 kr/min (≈ 0,10 EUR)nema - plaćate samo minute poziva
Transkript, sažetak, prepoznavanje automatske sekretariceDa, automatski.Ne - rješava (ili ne rješava) vaša vlastita platforma.

Ne plaćate doplatak za agenta, ali ne plaćate ni ništa dodatno za nas - svoju platformu (ElevenLabs, Vapi...) plaćate sami prema njezinu cjeniku. Mi naplaćujemo samo minute poziva na volai liniji, jednako kao kod SIP klijenta ili ugrađenog agenta. Cijene su bez PDV-a, kao cijeli cjenik.

2Dolazni pozivi na vlastitog agenta

Nikakva nova mehanika - dovoljno je postojeće mode: "sip" usmjeravanje (isto kao za vlastiti softphone, vidi SIP) s sipUri vaše platforme. Za ElevenLabs SIP-trunk broj registriran u VAŠEM vlastitom radnom prostoru to je adresa s istim brojem kakav ima vaša volai linija:

bash
curl -X PATCH "https://volai.cz/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:+420601234567@sip.rtc.elevenlabs.io"}}'

A na svom ElevenLabs računu (Settings → Phone Numbers → Import → SIP trunk) taj broj registrirate s inbound_trunk_config:

json
{
  "provider": "sip_trunk",
  "phone_number": "+420601234567",
  "label": "My own agent",
  "inbound_trunk_config": {
    "allowed_addresses": ["81.31.45.0/24"],
    "media_encryption": "allowed"
  }
}

allowed_addresses gore je naš raspon signalizacije (81.31.45.0/24) - sigurniji od univerzalnog 0.0.0.0/0, koji propušta INVITE odakle god dolazi. Oboje propušta poziv, ali kod uvoza bez podataka za prijavu je allowlist JEDINA provjera - zato navedite raspon, a ne 0.0.0.0/0.

Koristite li drugu platformu, a ne ElevenLabs? Isto načelo - saznajte kod nje SIP adresu na koju treba stizati poziv za vaš broj i unesite je u sipUri. Kod Vapija isti raspon ide u BYO trunk kao gateways.

Kod Vapija je adresa usmjeravanja sip:<E164>@<credentialId>.sip.vapi.ai - <credentialId> nađite na svom BYO SIP trunku u Vapiju; organizacija u EU regiji umjesto sip.vapi.ai koristi domenu sip.eu.vapi.ai. Goli sip.vapi.ai pripada izvornim Vapi brojevima i za broj od nas ne radi. Korisničko ime i lozinku na BYO trunku ostavite prazne, Vapi naše pozive prepoznaje po IP adresi u gateways.

U gateways unesite raspon kao IP 81.31.45.0 i masku (netmask) 24 zasebno. S zadanom maskom 32 Vapi bi propustio samo jednu adresu i naše bi pozive odbio.

3Odlazni pozivi iz vlastitog agenta (relej)

Ovo je suprotan smjer - vaša platforma sama zove van. Većina glasovnih AI platformi (uključujući ElevenLabs) ne može telefonsku liniju trajno registrirati kao SIP klijenta - samo pošalje autentificirani poziv s podacima za prijavu vaše linije. Telefonska mreža takav poziv neće izravno propustiti na ciljni broj, pa ga vodite preko kratkotrajne veze releja:

Zašto relej, a ne izravno biranje

Izravno biranje ciljnog broja preko trunka ne radi ni na jedan od dvaju mogućih načina: na broj izvan naše mreže poziv uopće ne nastane (platforma prijavi neuspjeh, nigdje ne ostane trag), a na drugi volai broj u našoj mreži spoji se samo INTERNO kao anoniman poziv - nikad zapravo ne napusti našu mrežu, iako izgleda kao spojen poziv. Relej je jedini način da poziv doista izađe van.

1. Postavite svoju platformu na svoju liniju

Dohvatite SIP podatke svoje linije:

bash
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
  -H "Authorization: Bearer vk_YOUR_KEY"
json
{
  "server": "sip.volai.cz",
  "username": "123456",
  "password": "a1b2c3d4e5f6",
  "outboundTrunkAddress": "sip.volai.cz",
  "port": 5060,
  "transport": "tcp",
  "inboundSignallingCidrs": ["81.31.45.0/24"]
}

Odgovor vraća server (za REGISTER softphonea, vidi SIP) i outboundTrunkAddress ZASEBNO - nisu zamjenjivi.

I postavite outboundTrunkAddress - NE server - kao odlazni trunk svoje platforme. Kod ElevenLabsa je to outbound_trunk_config dotičnog telefonskog broja (Settings → Phone Numbers → vaš broj → Outbound calling), točno u ovom obliku:

json
{
  "outbound_trunk_config": {
    "address": "sip.volai.cz",
    "transport": "tcp",
    "media_encryption": "allowed",
    "credentials": {
      "username": "123456",
      "password": "a1b2c3d4e5f6"
    }
  }
}

Unesite točno outboundTrunkAddress

Adresa odlaznog trunka mora biti točno vrijednost outboundTrunkAddress iz odgovora - bila ona jednaka server ili ne. Druga adresa znači da se poziv u mreži ne usmjerava, a platforma to prijavi kao 1011 sip request timed out - u povijesti poziva nakon toga ne ostane ništa.

2. Napravite vezu releja

Neposredno prije poziva (veza ima kratak vijek, vidi ograničenja niže) pozovite:

bash
curl -X POST https://volai.cz/v1/relay \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"to": "+420777123456", "from": "+420601234567"}'
json
{
  "id": "rl_4f2a91cd",
  "sipName": "volai_relay_2",
  "sipUri": "sip:volai_relay_2@sip.volai.cz",
  "expiresAt": 1756111760000,
  "callId": "c_9d4e2b7f"
}

Broj pozvane osobe unosite NAMA u to - platforma ga nikad ne vidi, dobije samo goli sipName iz odgovora.

3. Recite platformi da zove sipName

Golo ime, a ne cijeli SIP URI

ElevenLabs to_number odbija cijeli SIP URI porukom „SipCallTo should be a phone number or SIP user, not a full SIP URI“ - zato odgovor gore vraća sipName (golo volai_relay_2) i sipUri (cijeli sip:volai_relay_2@sip.volai.cz) ZASEBNO. U to_number ide samo prvo - nikad cijeli URI.

Kod ElevenLabsa to znači pozvati preko /v1/convai/sip-trunk/outbound-call s to_number izravno postavljenim na sipName:

json
{
  "agent_id": "agent_...",
  "agent_phone_number_id": "phnum_...",
  "to_number": "volai_relay_2"
}

agent_id nađite na svom agentu u ElevenLabsu, agent_phone_number_id je phone_number_id uvezenog broja - vraća ga odgovor uvoza ili ga možete pročitati s popisa Phone numbers.

Koristite vlastitog SIP klijenta ili PBX umjesto ElevenLabsa? Birajte izravno cijeli sipUri kao običan SIP poziv - to ograničenje vrijedi samo za platforme koje traže golo ime bez sip: prefiksa.

4. Što se događa dalje

Telefonska mreža prima poziv na imenu volai_relay_2, prosljeđuje ga na vaš to i postavlja vidljivi broj pozivatelja na vaš from - pozvana osoba na zaslonu vidi vašu volai liniju, a ne interno ime utora releja (ako broj ima vlastita relej imena - vidi Naplata niže, inače pozvana osoba vidi volai demo broj). Nakon završetka poziva lease se oslobađa, a minute se naplaćuju jednako kao običan odlazni poziv - 0,92 kr/min (≈ 0,04 EUR), bez doplatka za agenta.

Odgovor o biranju poziva stiže tek nakon cijelog zvonjenja (slobodno desetak sekundi) - to nije greška, a i kratak timeout s vaše strane u tom bi trenutku izgledao kao neuspjeh, iako poziv teče.

4Rješavanje problema

Najčešće poruke kod vlastitog agenta i što s njima:

PorukaUzrokRješenje
1011 sip request timed outAdresa odlaznog trunka nije outboundTrunkAddress.U ElevenLabsu postavite outbound_trunk_config.address na outboundTrunkAddress iz odgovora sa SIP podacima, a ne na server.
SipCallTo should be a phone number or SIP user, not a full SIP URIto_number sadrži cijeli sipUri umjesto golog imena.U to_number ide samo sipName iz odgovora POST /v1/relay.
Poziv s platforme odmah završi (kod ElevenLabsa failed), kod nas ništaBirali ste telefonski broj izravno, a ne preko releja.Napravite vezu releja (POST /v1/relay) i nazovite vraćeni sipName.
max auth retry attempts reached for SIP invitePlatforma nije prošla prijavu: ili se ne podudaraju korisničko ime ili lozinka odlaznog trunka, ili je poziv stigao kao telefonski broj umjesto sipName - mreža tada traži dodatnu prijavu koju platforma ne može proći.Korisničko ime i lozinku prepišite točno iz SIP podataka broja (username, password). U to_number stavite samo sipName iz POST /v1/relay, a poziv pokrenite preko API-ja (POST /v1/convai/sip-trunk/outbound-call) ili MCP alata ElevenLabsa make_outbound_call, ne obrascem koji prima samo telefonski broj. Lease čeka poziv samo ttlSecs (zadano 120 s).
404 from_number_not_ownedfrom u POST /v1/relay nije vaš volai broj.U from unesite točno onaj volai broj s kojeg zovete.
400 relay_lease_limitNa ovom broju (1) ili računu (2) već je aktivan lease.Pričekajte da se lease oslobodi ili otkažite neiskorišteni (DELETE /v1/relay/{id}).
503 capacity_busyZajednički skup utora releja trenutačno je pun.Ništa se ne naplaćuje - pokušajte ponovno za nekoliko trenutaka.
Dolazni poziv ne zvoniBroj nije uvezen u ElevenLabs, allowed_addresses ne propušta naš raspon ili usmjeravanje u volai nije spremljeno.Provjerite sva tri koraka gore; ako centrala traži 401, unesite korisničko ime i lozinku na usmjeravanju.
Pozvana osoba vidi volai broj umjesto vašegBroj još nema vlastita relej imena. Otvaraju se odmah nakon kupnje, ovaj put nije uspjelo.Sljedeći poziv sam ponovi otvaranje. Ako pozvana osoba vidi volai broj i nakon sat vremena, javite se podršci.
Ponovljeni poziv odmah završi odbijanjem (SIP 603)Platforma je ponovno birala isti sipName, obično nakon neodgovorenog poziva. Lease spaja samo jedan poziv.Prije svakog pokušaja, i ponavljanja nakon neodgovorenog poziva, napravite novi lease (POST /v1/relay) i isključite automatsko ponavljanje u platformi.

5Naplata

Odlazni poziv preko releja naplaćuje se istom cijenom kao običan odlazni poziv - 0,92 kr/min (≈ 0,04 EUR) - bez ikakvog doplatka za agenta. Cijene su bez PDV-a, kao cijeli cjenik.

Istodobnost je ograničena (vidi ograničenja niže): najviše 1 aktivni poziv po jednom vašem broju i najviše 2 na cijelom računu odjednom.

Pozvana osoba vidi vašu volai liniju SAMO ako broj ima vlastita relej imena (relayNames) - broj ih dobiva odmah nakon kupnje. Dok ih nema, lease pada na zajednički skup i pozvana osoba vidi volai demo broj. Ako to traje dulje od sat vremena, javite se podršci.

6Ograničenja, kvote i sigurnost

Gornja granica je 1 aktivni lease po jednom vašem broju i najviše 2 na cijelom računu - namjerna zaštita da jedan korisnik ne zauzme cijeli zajednički skup utora releja:

ŠtoVrijednost
Lease čeka prvi poziv (pending)120 s zadano, ttlSecs 15 do 300 s
Poziv traje (active)15 minuta
Aktivni lease po jednom vašem brojunajviše 1
Aktivni leaseovi po račununajviše 2
Uporaba leaseajednokratna - drugi poziv na isti lease odbija se, i ponavljanje nakon neodgovorenog poziva traži novi lease
  • from mora biti vaš vlastiti volai broj - inače from_number_not_owned. Bez te provjere moglo bi se lažno predstavljati kao tuđa linija (caller ID spoofing).
  • Ista vrata kao kod običnog poziva - popis zabrane pozivanja (vrijedi samo za pozive, ne za SMS), automatska 30-dnevna blokada nakon 3 neuspjela pokušaja na isti broj u 24 sata, linije s posebnom tarifom, zaštita od petlje među volai brojevima, zaključavanje pozvanog broja i opće ograničenje učestalosti poziva. Ništa od toga ne može se zaobići relejem.
  • Pun skup -> 503 capacity_busy - utori releja zajednička su gornja granica istodobnosti CIJELE platforme, ne samo vašeg računa. Kod capacity_busy ništa se ne naplaćuje, pokušajte ponovno za nekoliko trenutaka.
  • Cjelovitu REST referencu (kodovi pogrešaka, GET/DELETE nad leaseovima) nađite na REST API.

Svaka API pogreška nosi cause (tko je ispravlja) i action (što učiniti) - vidi Format pogrešaka u referenci REST API-ja.