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 |
Hardware-Telefone (z.B. Yealink, Snom)¶
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 |