Přeskočit na obsah

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í:

bash
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:

bash
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:

bash
curl "https://volai.cz/v1/numbers/+420601234567/sip" \
  -H "Authorization: Bearer vk_TVUJ_KLIC"
json
{
  "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“:

PoleHodnota
Server / Doménasip.volai.cz
Uživatelské jménoz odpovědi výše (username)
Hesloz odpovědi výše (password)
TransportTCP
Port5060 (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í forward na číslo tvojí ústředny.
  • Jen hlas - žádné video ani jiné SIP rozšíření.