Zum Inhalt

Extensions, Lines & Ring Groups

Uebersicht

Alle SIP-Extensions werden über die Platform API verwaltet und via mod_xml_curl dynamisch an FreeSwitch ausgeliefert. Es gibt keine statischen Extension-Dateien.


Extensions

Aktuelle Belegung

Extension Name Domain Benutzer Typ
1000 Mitarbeiter sip.xynap.tech admin (1) Standard
1001 Mitarbeiter 2 sip.xynap.tech andre.willing (3) Standard
1010 Line Extension 1 sip.xynap.tech Line
1011 Line Extension 2 sip.xynap.tech Line
1012 Line Extension 3 sip.xynap.tech Line
1013 Line Extension 4 sip.xynap.tech Line
21–24 Support/Sales sip.xynap.tech Kurzwahl
webrtc_1 WebRTC Client 1 sip.xynap.tech WebRTC
webrtc_3 WebRTC Client 3 sip.xynap.tech WebRTC

Nummernplan

Bereich Verwendung
1000–1099 Reguläre Extensions (Mitarbeiter)
1010–1019 Line Extensions (Mehrfach-Leitungen)
21–29 Kurzwahlen (Support, Sales etc.)
webrtc_* WebRTC-Only Clients
*99 Test-Extension → LiveKit SIP Bridge

API-Verwaltung

# Alle Extensions auflisten
GET /api/v1/sip/extensions

# Neue Extension anlegen
POST /api/v1/sip/extensions
{
    "extension": "1002",
    "name": "Neuer Mitarbeiter",
    "domain": "sip.xynap.tech",
    "user_id": 5,
    "password": "auto-generated",
    "enabled": true
}

# Extension-Config fuer SIP-Phone abrufen
GET /api/v1/sip/extensions/{id}/config

Passwort-Handling

Passwörter werden serverseitig generiert und Fernet-verschlüsselt in der Datenbank gespeichert. Der /config-Endpoint liefert das Passwort entschlüsselt zurück — dieser Endpoint erfordert die entsprechende RBAC-Permission.


Lines (Mehrfach-Leitungen)

Lines ermöglichen es, mehrere Rufnummern/Trunks einer Extension zuzuordnen. Eine Line verknüpft:

  • Extension (z.B. 1010)
  • DID (eingehende Rufnummer)
  • Trunk (ausgehender Provider)
# Lines verwalten
GET /api/v1/sip/lines
POST /api/v1/sip/lines
{
    "extension_id": 3,
    "did_id": 1,
    "trunk_id": 2,
    "priority": 1
}

Ring Groups

Ring Groups verteilen eingehende Anrufe auf mehrere Extensions gleichzeitig oder nacheinander.

# Ring Groups verwalten
GET /api/v1/sip/ring-groups
POST /api/v1/sip/ring-groups
{
    "name": "Support Team",
    "strategy": "simultaneous",
    "ring_timeout": 30,
    "extensions": [1000, 1001]
}

Strategien:

Strategie Beschreibung
simultaneous Alle Extensions klingeln gleichzeitig
sequence Extensions klingeln nacheinander
random Zufällige Auswahl

Call Filters

Call Filters erlauben Black- und Whitelisting von Rufnummern:

GET /api/v1/sip/call-filters
POST /api/v1/sip/call-filters
{
    "name": "Spam-Block",
    "type": "blacklist",
    "pattern": "+49176*",
    "action": "reject"
}

SIP-Phone Provisioning

Verbindungsdaten

Parameter Wert
SIP-Server sip.xynap.tech
Port (UDP) 5060
Port (TLS) 5061
WSS (WebRTC) wss://sip.xynap.tech:7443
Domain sip.xynap.tech
Transport UDP, TLS oder WSS

Einstellungen für ein typisches SIP-Hardphone:

Server:          sip.xynap.tech
Port:            5060
Transport:       UDP
Username:        1000
Password:        (aus API /sip/extensions/{id}/config)
Domain:          sip.xynap.tech
Outbound Proxy:  (leer)
STUN:            nicht noetig (host network)

NAT und STUN

Da FreeSwitch mit network_mode: host direkt auf der öffentlichen IP lauscht, ist kein STUN/TURN für die Serverseite nötig. Clients hinter NAT benötigen ggf. STUN für ihre eigene RTP-Adress-Erkennung.

Softphones (Linphone, Offen-SIP etc.)

Gleiche Einstellungen wie Hardphones. Für TLS-Verbindungen Port 5061 verwenden und das Zertifikat von sip.xynap.tech akzeptieren.


WebRTC Softphone

Das integrierte WebRTC-Softphone in der xynap Platform nutzt JsSIP über eine WSS-Verbindung.

Technische Details

Parameter Wert
Bibliothek JsSIP
Protokoll WSS (WebSocket Secure)
URL wss://sip.xynap.tech:7443
Codecs Opus (bevorzugt), PCMA, PCMU
SRTP Pflicht (WSS erfordert verschlüsselte Medien)

Bekannte Einschraenkungen

JsSIP Race Conditions

JsSIP hat bekannte Race Conditions beim Verbindungsaufbau. Der WebRTC-Client muss warten, bis die WebSocket-Verbindung vollständig aufgebaut ist, bevor ein REGISTER gesendet wird. Die Platform-UI implementiert dafür einen Connection-State-Handler mit Retry-Logik.

ICE Timeout

Bei langsamen Verbindungen kann das ICE-Gathering zu lange dauern. Der Timeout ist auf 5 Sekunden konfiguriert. Falls der Timeout regelmäßig zuschlägt, kann er in der FreeSwitch-Config angepasst werden.


DIDs (Rufnummern)

DIDs (Direct Inward Dialing) ordnen eingehende Rufnummern dem richtigen Routing zu.

# DIDs verwalten
GET /api/v1/sip/dids
POST /api/v1/sip/dids
{
    "number": "+4934556643378",
    "name": "IVR Hauptnummer",
    "trunk_id": 1,
    "destination_type": "ivr_menu",
    "destination_id": 1
}

Routing-Ziele

Typ Beschreibung
extension Direkt an eine Extension
ring_group An eine Ring Group
ivr_menu An ein IVR-Menü
voicemail An eine Voicemailbox
external Weiterleitung an externe Nummer