Salt la conținut
Azorel PBX — pagina principală
04.1Exploratorul arhitecturii

Urmăriți apelul.

Alegeți o componentă ca să vedeți ce face și cu cine comunică, sau apăsați redare și urmăriți un apel prin AZOREL PBX — semnalizarea și media, fiecare pe drumul ei.

Componente

Alegeți o componentă din diagramă sau din listă.

Descrierea textuală a arhitecturii

Telefoane și softphone — Terminale SIP
Agenți SIP înregistrați ca interioare. Ajung la platformă doar prin OpenSIPS (semnalizare, necriptată sau TLS) și RTPengine (media). Dispozitivele compatibile își descarcă automat configurația prin HTTPS: șabloane Yealink, softphone-uri mobile prin cod QR.
  • → OpenSIPS: Semnalizare SIP — SIP de la telefoane și softphone-uri (UDP, TCP sau TLS)
  • → RTPengine: Media RTP — Voce RTP de la și către telefoane
  • → Reverse proxy: Provizionare (HTTPS) — Dispozitivele își descarcă configurația
Trunchiuri SIP — Operatori
Trunchiuri SIP autentificate prin înregistrare sau prin IP. Apelurile primite sunt identificate după DID și ID-ul apelantului; cele efectuate urmează tipare de formare cu rescrierea cifrelor și căutarea trunchiului. Starea în timp real este citită din FreeSWITCH.
  • → OpenSIPS: Semnalizare SIP — SIP de la și către operatori
  • → RTPengine: Media RTP — Voce RTP de la și către operatori
OpenSIPS — Margine SIP
Margine SIP / session border controller. Termină TLS-ul public, respinge mesajele SIP malformate, aplică ACL-uri, limitarea cererilor, reguli GeoIP și blocări și ascunde topologia internă. Nu este registrar: REGISTER și dialogurile noi sunt transmise către FreeSWITCH. Starea lui curentă este trimisă de backend, iar pentru fiecare apel configurează releul media în RTPengine.
  • → FreeSWITCH: Semnalizare SIP — SIP transmis în rețeaua internă
  • → RTPengine: Control — Deschide și închide fiecare releu media
RTPengine — Margine media
Releu media la marginea rețelei. Fiecare flux RTP dintre exterior și motorul de apeluri trece pe aici, astfel că FreeSWITCH nu trimite și nu primește niciodată media direct din internet. OpenSIPS creează și închide fiecare releu prin protocolul de control al RTPengine; tot aici se face și traversarea NAT pentru media.
  • → FreeSWITCH: Media RTP — RTP transmis în rețeaua internă
FreeSWITCH — Motor de apeluri · intern
Registrarul de referință și execuția planului de rutare — conectare, IVR, cozi, conferințe, parcare, mesagerie vocală, înregistrare, muzică de așteptare. Doar în rețeaua internă. Agenda SIP și planul de rutare sunt preluate live din backend prin mod_xml_curl la fiecare REGISTER și INVITE; evenimentele apelurilor ajung în backend prin ESL. Codec-uri: Opus, G.722, G.711.
    Backend Go — Control · API
    Monolit modular în Go: API REST, autentificare și roluri, jurnal de audit, generator de configurație, motor de provizionare, client ESL, punct xml_curl și un hub WebSocket/SSE pentru vizualizări live. Configurația structurală este generată, validată, înlocuită atomic și reîncărcată pe componente.
    • → FreeSWITCH: Control — Agendă și plan de rutare (xml_curl), evenimente și control al apelurilor (ESL)
    • → OpenSIPS: Control — Starea curentă a ACL-urilor, limitărilor și blocărilor
    • → PostgreSQL: Stare — Citește și scrie toată configurația și înregistrările
    • → Redis: Stare — Stare curentă și contoare de limitare
    PostgreSQL — Sursa de adevăr
    Sursa de adevăr pentru toate datele de business — interioare, trunchiuri, rute, meniuri IVR, înregistrări CDR, jurnal de audit — cu migrări de schemă versionate.
      Redis — Stare curentă
      Doar stare temporară, reconstruibilă: instantanee ale apelurilor și înregistrărilor pentru panouri și contoarele de limitare a autentificărilor. Dacă se pierde, sistemul o reface din PostgreSQL și din evenimentele noi ale motorului.
        Next.js — Administrare
        Interfață de administrare Next.js, accesibilă doar prin reverse proxy-ul HTTPS. Lucrează prin API-ul backend-ului; apelurile și înregistrările apar live prin WebSocket.
        • → Backend Go: Control — API REST și actualizări live prin WebSocket
        Reverse proxy — TLS
        Reverse proxy HTTPS care termină TLS în fața interfeței de administrare. Cererile de provizionare ale dispozitivelor sunt transmise motorului de provizionare din backend.
        • → Next.js: Control — Transmite către interfața de administrare
        • → Backend Go: Provizionare (HTTPS) — Cereri de provizionare către backend
        Browser admin — HTTPS
        Se autentifică în interfața de administrare prin HTTPS, cu parolă protejată Argon2id și TOTP; fiecare permisiune este verificată pe server, pe roluri.
        • → Reverse proxy: Control — Administrare prin HTTPS
        1. 1. Începe un apel. Un telefon formează un număr. Mesajul SIP INVITE ajunge la OpenSIPS — singura cale de intrare în platformă.
        2. 2. Marginea verifică. OpenSIPS validează mesajul, aplică ACL-uri, limitarea cererilor și reguli GeoIP, apoi îl transmite către FreeSWITCH în rețeaua internă.
        3. 3. O decizie de rutare. FreeSWITCH cere backend-ului planul de rutare pentru exact acest apel; backend-ul răspunde din configurația stocată în PostgreSQL.
        4. 4. Apelul este gestionat. FreeSWITCH execută ruta: sună un interior sau un grup, redă un meniu IVR, pune apelantul într-o coadă — sau alege un trunchi.
        5. 5. Destinația sună. INVITE-ul de ieșire pleacă prin OpenSIPS către destinație: un alt telefon sau trunchiul SIP al unui operator.
        6. 6. Vocea circulă. OpenSIPS îi cere lui RTPengine să deschidă un releu media. Fluxul RTP al fiecărei părți a apelului trece prin RTPengine la margine și este schimbat cu FreeSWITCH în rețeaua internă — niciodată direct cu internetul.
        7. 7. Totul se vede live. Evenimentele apelului ajung în backend prin ESL; starea curentă merge în Redis și apare imediat în interfața de administrare prin WebSocket. La final, înregistrarea apelului este scrisă în PostgreSQL.