Průvodci
SIP
Když ti nestačí hlasový agent ani jednoduché přesměrování a chceš si číslo připojit do vlastního softphonu nebo telefonní ústředny (PBX), potřebuješ SIP trunk poskytovatele - volai jím je. Tahle stránka je návod krok za krokem.
1Příchozí hovory na tvůj SIP server
Nastav směrování čísla na mode: "sip" a zadej svoji sipUri - odsud dál hovor putuje přímo k tobě, ne k naší nabídce agenta ani přesměrování:
curl -X PATCH "https://volai.cz/v1/numbers/+420601234567" \
-H "Authorization: Bearer vk_TVUJ_KLIC" \
-H "Content-Type: application/json" \
-d '{"routing": {"mode": "sip", "sipUri": "sip:recepce@tvuj-server.cz"}}'Účtuje se jen příchozí minuta (0,50 Kč/min), žádný agent navíc - kompletní tvar požadavku i ostatní režimy směrování jsou v REST API referenci.
Ověření na tvé ústředně
Hovor na tvůj SIP server posíláme nejdřív jako neověřený INVITE na sipUri. Ústředna, která na něj odpoví výzvou k přihlášení (401/407) a bez dalších údajů hovor odmítne, ho v tomhle tvaru nedostane - výzvu totiž nemá kdo zvednout. Vyplň proto do směrování navíc sipUsername a sipPassword - vyplněním obou se naše síť na cíli přihlásí (SIP digest) a vytočí volané číslo. Ověřeno živým hovorem na nativní SIP číslo Vapi, které přihlašovací údaje přijme bez ohledu na jejich obsah. Jestli hovor spojí i tvoje ústředna, je na ní - musí na INVITE opravdu odpovědět výzvou a zadané jméno s heslem uznat; to negarantujeme pro každou ústřednu (v testu se to nepovedlo třeba proti SIP doméně Twilia). Bez sipUsername a sipPassword zůstává směrování v dnešním neověřeném tvaru. Přihlášení do směrování přidáš takhle:
curl -X PATCH "https://volai.cz/v1/numbers/+420601234567" \
-H "Authorization: Bearer vk_TVUJ_KLIC" \
-H "Content-Type: application/json" \
-d '{"routing": {"mode": "sip", "sipUri": "sip:recepce@tvuj-server.cz", "sipUsername": "recepce", "sipPassword": "tajneheslo123"}}'Volané číslo posíláme vždy přesně v tom tvaru, v jakém je v sipUri před zavináčem - žádnou předvolbu ani nulu nepřidáváme ani neubíráme, takže se cílová ústředna musí umět vypořádat přesně s tím, co tam napíšeš.
sipUsername ani sipPassword nesmí obsahovat dvojtečku, zavináč, mezeru, uvozovku ani zpětné lomítko a smí mít nejvýš 64 znaků každé.
Vyplnit jen jedno z polí nejde - API vrátí chybu „Vyplň prosím jméno i heslo, nebo obojí nech prázdné.“.
Dvojtečka v uživatelské části sipUri (před zavináčem) ani port v hostu (za dvojtečkou u serveru, např. :5060) se s vyplněnými sipUsername a sipPassword zatím nepodporují - obojí vrací stejnou tvrdou chybu. Bez přihlašovacích údajů obojí funguje beze změny.
Kdo ještě jméno a heslo uvidí
Jméno a heslo putují s hovorem dál do naší sítě a zůstávají v technických záznamech o jeho směrování - nejsi jediný, kdo je uvidí. Založ proto na ústředně vyhrazený účet jen pro nás, ne hlavní administrátorské heslo.
Partial update: vynechané pole zůstává, jak bylo
Když v PATCH pošleš jen sipUri a vynecháš sipUsername i sipPassword , obě pole zůstanou beze změny - nemusíš je zadávat znovu při každé úpravě sipUri. Vynechané pole (v těle úplně chybí) se vždy ponechá uložené; přihlašování zruší jen výslovný prázdný řetězec u OBOU polí najednou. Jediná výjimka je změna serveru: když v sipUri upravíš i část za zavináčem, musíš heslo poslat znovu - uložené heslo nepošleme na jiný server, než pro který jsi ho zadal. Aktuální stav ověříš polem hasSipPassword v odpovědi.
Hovor se nespojil? Pusť nás podle IP
Sipa přihlášení funguje jen proti cíli, který na INVITE vyzve a údaje přijme (ověřeno s Vapi) - jinak hovor nedostaneš, ať přihlašovací údaje vyplníš, nebo ne. Naše signalizace chodí z rozsahu 81.31.45.0/24, v praxi nejčastěji z 81.31.45.51 a 81.31.45.56. Povol si na ústředně celý tenhle rozsah - hovor pak pozná podle zdrojové adresy, ne podle jména a hesla, a přihlašovací údaje vůbec nepotřebuješ.
2SIP údaje čísla
Přihlašovací údaje linky si vyzvedneš jedním voláním:
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
-H "Authorization: Bearer vk_TVUJ_KLIC"{
"server": "sip.volai.cz",
"username": "123456",
"password": "a1b2c3d4e5f6",
"outboundTrunkAddress": "sip.volai.cz",
"port": 5060,
"transport": "tcp",
"inboundSignallingCidrs": ["81.31.45.0/24"]
}Nastavení v softphonu (Zoiper, Linphone)
V obou appkách zadáváš v zásadě totéž, jen jinak pojmenované - hledej „Přidat účet“ / „SIP účet“:
| Pole | Hodnota |
|---|---|
| Server / Doména | sip.volai.cz |
| Uživatelské jméno | z odpovědi výše (username) |
| Heslo | z odpovědi výše (password) |
| Transport | TCP |
| Port | 5060 (výchozí SIP - pokud pole nabízí prázdnou volbu, nech ji prázdnou) |
Klient chce vyplnit realm?
Nech pole prázdné - většina klientů si realm vezme z výzvy serveru. V logu klienta se může objevit technická doména naší sítě, to je v pořádku. Když tvůj klient realm vyžaduje jako povinný, napiš na podporu.
Po uložení by se měl softphone zaregistrovat (stavová ikona „online“/„zaregistrováno“) a hovory na číslo začnou zvonit přímo v něm.
3Odchozí volání přes SIP klienta
Jakmile je softphone zaregistrovaný, může přes tuhle linku sám vytáčet ven - nemusíš kvůli tomu volat žádné naše API, vytáčíš přímo z klienta jako z obyčejné telefonní linky.
Minuty jdou z kreditu volai
Odchozí volání přes SIP klienta se účtuje stejnou sazbou jako odchozí hovor přes API (0,92 Kč/min) a strhává se z tvého kreditu - ne z nějakého odděleného SIP účtu. Sazby jsou bez DPH, jako celý ceník.
Spojení jde přímo mezi tvým klientem a serverem sip.volai.cz, ne přes naše API, takže minuty nejde zablokovat přesně v okamžiku vytáčení. Hovor vytočený přímo ze SIP klienta se účtuje ze záznamů sítě zpětně - nejdříve 10 minut po skončení, obvykle do půl hodiny - a na kreditu se neprojeví v okamžiku vytáčení. Denní limit hovorů a kontrola kreditu při vytáčení se na tyhle hovory nevztahují, protože hlídají jen hovory přes API - kredit tedy může klesnout pod nulu, a pak platí stejná pravidla jako dnes. Když kredit klesne k nule, nové placené akce přes API/MCP se začnou odmítat (hovor potřebuje zůstatek aspoň 5 Kč). Když dluh přesáhne 50 Kč, přijde varovný e-mail - a pokud se do týdne nedorovná, číslo se uvolní zpátky do zásoby (SIP přístup tím definitivně zanikne). Kredit si proto hlídej v předstihu, ne až na nule.
Máš hlasového AI agenta, ne softphone?
Tenhle krok počítá s klientem, který se k lince umí zaregistrovat (SIP REGISTER) - softphone, PBX. Platforma, která hovor jen jednorázově autentizovaně odešle bez trvalé registrace (typicky hlasoví AI agenti jako ElevenLabs), potřebuje jiný postup - viz Vlastní agent.
Adresu odchozího trunku platformy ber z pole outboundTrunkAddress, ne ze server výše - podrobně na té stránce.
4Omezení
- Jedna registrace na linku - jedny přihlašovací údaje unesou jedno zaregistrované zařízení najednou. Když se přihlásíš druhým klientem, první o registraci nejspíš přijde - nespoléhej na víc zařízení současně na jedné lince.
- Odchozí z vlastního agenta ano, plné trunk peerování ne - přihlašovací údaje linky slouží k tomu, aby se TVŮJ klient zaregistroval k NÁM jako telefon. Odchozí hovory z vlastního hlasového agenta (ElevenLabs i jiná platforma) ale dnes JDOU - přes relay, viz Vlastní agent. Pořád ale nejde připojit tvoji ústřednu jako rovnocenného operátora s vlastním směrováním PŘÍCHOZÍCH hovorů zvenčí - na to použij směrování
forwardna číslo tvojí ústředny. - Jen hlas - žádné video ani jiné SIP rozšíření.
Související
REST API
Kompletní reference všech endpointů: čísla, hovory, SMS, agenti a jejich koncepty, nástroje, nahrávky, webhooky, seznam nevolat, relay, účet, úkoly, kredit, doklady, kalendáře a integrace.
Hlasový agent
Systémový prompt, nástroje, přepojení na člověka, nahrávky a zapsané údaje z hovoru.
Vlastní agent
Napojení cizí platformy (ElevenLabs, Asterisk...) - bez agentní přirážky.