Treceți la conținut

Ghiduri

SIP

Dacă agentul vocal și redirecționarea simplă nu vă ajung și doriți să conectați un număr la propriul softphone sau la centrala telefonică (PBX), aveți nevoie de un furnizor de SIP trunk - volai este unul. Această pagină este un ghid pas cu pas.

1Apeluri primite către serverul dumneavoastră SIP

Setați rutarea numărului pe mode: "sip" și introduceți sipUri dumneavoastră - de aici apelul ajunge direct la dumneavoastră, nu la oferta noastră de agent sau de redirecționare:

bash
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:reception@your-server.com"}}'

Se taxează doar minutul primit (0,50 kr/min (≈ 0,10 RON)), fără agent suplimentar - forma completă a cererii și celelalte moduri de rutare sunt în referința API REST.

Autentificarea pe centrala dumneavoastră

Apelul către serverul dumneavoastră SIP îl trimitem mai întâi ca INVITE neautentificat către sipUri. O centrală care răspunde la el cu o cerere de autentificare (401/407) și fără alte date respinge apelul, nu îl va primi în această formă - cererea nu are cine să o preia. Completați de aceea în rutare, suplimentar, sipUsername și sipPassword - completându-le pe ambele, rețeaua noastră se autentifică pe țintă (SIP digest) și formează numărul apelat. Verificat cu un apel real către un număr SIP nativ Vapi, care acceptă datele de autentificare indiferent de conținutul lor. Dacă apelul îl conectează și centrala dumneavoastră depinde de ea - trebuie să răspundă efectiv la INVITE cu o cerere de autentificare și să accepte numele și parola introduse; nu garantăm acest lucru pentru fiecare centrală (în test nu a reușit, de exemplu, împotriva unui domeniu SIP Twilio). Fără sipUsername și sipPassword rutarea rămâne în forma actuală, neautentificată. Autentificarea o adăugați în rutare astfel:

bash
curl -X PATCH "https://volai.eu/v1/numbers/+420601234567" \
  -H "Authorization: Bearer vk_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"routing": {"mode": "sip", "sipUri": "sip:reception@your-server.com", "sipUsername": "reception", "sipPassword": "supersecret123"}}'

Numărul apelat îl trimitem întotdeauna exact în forma în care apare în sipUri înainte de semnul @ - nu adăugăm și nu eliminăm niciun prefix sau zero, deci centrala țintă trebuie să se descurce exact cu ceea ce scrieți acolo.

sipUsername și sipPassword nu au voie să conțină două puncte, semnul @, spațiu, ghilimele sau backslash și pot avea cel mult 64 de caractere fiecare.

Completarea doar a unuia dintre cele două câmpuri este respinsă - API-ul returnează "Please fill in both username and password, or leave both empty."

Două puncte în partea de utilizator a sipUri (înainte de @) și portul din host (după două puncte la server, de exemplu :5060) nu sunt deocamdată acceptate împreună cu sipUsername și sipPassword completate - ambele returnează aceeași eroare fermă. Fără date de autentificare ambele funcționează neschimbat.

Excepție: SIP trunk-ul BYO Vapi (adresa <credentialId>.sip.vapi.ai, pentru o organizație din regiunea UE <credentialId>.sip.eu.vapi.ai) nu folosește date de autentificare. Vapi recunoaște apelurile noastre după IP-urile din gateways ale trunk-ului, iar cu sipUsername și sipPassword completate apelul nu s-ar conecta, de aceea API-ul respinge o astfel de rutare cu codul validation. Numărul SIP nativ Vapi (sip:<nume>@sip.vapi.ai) nu este afectat.

Cine altcineva mai vede numele și parola

Numele și parola circulă odată cu apelul în rețeaua noastră și rămân în înregistrările tehnice ale rutării sale - nu sunteți singurul care le vede. Creați de aceea pe centrală un cont dedicat doar nouă, nu parola principală de administrator.

Partial update: câmpul omis rămâne cum a fost

Dacă în PATCH trimiteți doar sipUri și omiteți sipUsername și sipPassword , ambele câmpuri rămân neschimbate - nu trebuie să le introduceți din nou la fiecare modificare a sipUri. Un câmp omis (lipsește complet din corp) se păstrează întotdeauna așa cum este salvat; autentificarea o anulează doar un șir gol explicit la AMBELE câmpuri simultan. Singura excepție este schimbarea serverului: dacă în sipUri modificați și partea de după @, trebuie să trimiteți parola din nou - parola salvată nu o trimitem către alt server decât cel pentru care ați introdus-o. Starea curentă o verificați prin câmpul hasSipPassword din răspuns.

Apelul nu s-a conectat? Lăsați-ne să trecem după IP

Autentificarea SIP funcționează doar împotriva unei ținte care cere autentificare la INVITE și acceptă datele (verificat cu numărul SIP nativ Vapi) - altfel nu primiți apelul, indiferent dacă completați datele de autentificare sau nu. Semnalizarea noastră vine din intervalul 81.31.45.0/24, în practică cel mai des din 81.31.45.51 și 81.31.45.56. Permiteți pe centrală întregul interval - apelul este atunci recunoscut după adresa sursă, nu după nume și parolă, și nu aveți deloc nevoie de date de autentificare.

2Datele SIP ale numărului

Datele de autentificare ale liniei le obțineți cu un singur apel:

bash
curl "https://volai.eu/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"]
}

Configurare în softphone (Zoiper, Linphone)

În ambele aplicații introduceți în esență același lucru, doar denumit diferit - căutați „Adăugare cont” / „Cont SIP”:

CâmpValoare
Server / Domeniusip.volai.cz
Nume de utilizatordin răspunsul de mai sus (username)
Parolădin răspunsul de mai sus (password)
TransportTCP
Port5060 (SIP implicit - dacă câmpul oferă o opțiune goală, lăsați-o goală)

Clientul vă cere să completați realm?

Lăsați câmpul gol - majoritatea clienților preiau realm din cererea serverului. În jurnalul clientului poate apărea domeniul tehnic al rețelei noastre, este în regulă. Dacă clientul dumneavoastră cere realm ca obligatoriu, scrieți-ne la suport.

După salvare, softphone-ul ar trebui să se înregistreze (pictograma de stare „online” / „înregistrat”), iar apelurile către număr încep să sune direct în el.

3Apeluri efectuate printr-un client SIP

De îndată ce softphone-ul este înregistrat, poate iniția singur apeluri prin această linie - nu trebuie să apelați API-ul nostru pentru asta, formați direct din client ca de pe o linie telefonică obișnuită.

Minutele se scad din creditul volai

Un apel efectuat printr-un client SIP se taxează cu același tarif ca un apel efectuat prin API (0,92 kr/min (≈ 0,19 RON)) și se scade din creditul dumneavoastră - nu dintr-un cont SIP separat. Tarifele sunt fără TVA, ca întreaga listă de prețuri.

Conexiunea merge direct între clientul dumneavoastră și serverul sip.volai.cz, nu prin API-ul nostru, deci minutele nu pot fi blocate exact în momentul formării numărului. Un apel format direct dintr-un client SIP se taxează retroactiv din înregistrările rețelei - cel mai devreme la 10 minute după încheierea lui, de obicei în cel mult o jumătate de oră - și nu apare în credit în momentul formării. Limita zilnică de apeluri și verificarea creditului la formare nu se aplică acestor apeluri, deoarece supraveghează doar apelurile prin API - creditul poate deci scădea sub zero. Când creditul scade spre zero, noile acțiuni plătite prin API/MCP încep să fie respinse (un apel necesită un sold de cel puțin 5 CZK). Când soldul scade sub zero, accesul SIP al liniei este oprit în câteva minute, redirecționarea este deconectată și primiți un e-mail; după ce reîncărcați cel puțin până la 5 CZK, totul se reia singur, iar parola rămâne aceeași. Dacă datoria nu este acoperită în decurs de o săptămână, numărul este eliberat înapoi în stoc (accesul SIP încetează astfel definitiv). Urmăriți de aceea creditul din timp, nu abia când ajunge la zero.

Aveți un agent vocal AI, nu un softphone?

Acest pas presupune un client care se poate înregistra la linie (SIP REGISTER) - softphone, PBX. O platformă care trimite apelul doar o dată, autentificat, fără înregistrare permanentă (de obicei agenții vocali AI precum ElevenLabs), are nevoie de o altă procedură - vedeți Agent propriu.

Adresa trunk-ului de apeluri efectuate al platformei o luați din câmpul outboundTrunkAddress, nu din server de mai sus - detalii pe acea pagină.

4Limitări

  • O singură înregistrare pe linie - un singur set de date de autentificare susține un singur dispozitiv înregistrat la un moment dat. Dacă vă conectați cu un al doilea client, primul își pierde probabil înregistrarea - nu vă bazați pe mai multe dispozitive simultan pe aceeași linie.
  • Apeluri efectuate de la un agent propriu da, peering complet de trunk nu - datele de autentificare ale liniei servesc ca CLIENTUL dumneavoastră să se înregistreze la NOI ca telefon. Apelurile efectuate de la propriul agent vocal (ElevenLabs sau altă platformă) MERG însă astăzi - printr-un relay, vedeți Agent propriu. Tot nu se poate însă conecta centrala dumneavoastră ca operator egal, cu rutare proprie a apelurilor PRIMITE din exterior - pentru asta folosiți rutarea forward către numărul centralei dumneavoastră.
  • Doar voce - fără video sau alte extensii SIP.