Skip to content

Extensions, Lines & Ring Groups

Overview

All SIP extensions are managed via the Platform API and delivered dynamically to FreeSwitch viamod_xml_curl. There are no static file extensions.


Extensions

Current occupation

Extension Name Domain: Users Type
1000 Staff sip.xynap.tech admin (1) Standard
1001 Staff 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 Short term
webrtc 1 WebRTC Client 1 sip.xynap.tech WebRTC
webrtc 3 WebRTC Client 3 sip.xynap.tech WebRTC

Number plan

Area Use
1000–1099 Regular extensions (employees)
1010-1019 Line Extensions (multiple lines)
21–29 Short choices (Support, Sales etc.)
webrtc * WebRTC-Only Clients
*99 Test extension → LiveKit SIP Bridge

API management

# 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

Password handling

Passwords are generated on the server side and Fernet-encrypted is stored in the database. The/configendpoint returns the password decrypted — this endpoint requires the corresponding RBAC permission.


Lines (multiple lines)

Lines allow to associate several phone numbers/trunks of an extension. A line linked:

  • Extension(e.g. 1010)
  • DID(incoming call number)
  • Trunk(external 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 distribute incoming calls to multiple extensions simultaneously or successively.

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

Strategy Description
simultaneous All extensions ring simultaneously
sequence Extensions ring in succession
random Random selection

Call Filters

Call filters allow black and whitelisting of phone numbers:

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

SIP-Phone Provisioning

Connection data

Parameters Value
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 or WSS

Settings for a typical SIP phone:

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 and STUN

Since FreeSwitch listens directly to the public IP withnetwork_mode: host, no STUN/TURN is required for the server side. Clients behind NAT may need STUN for their own RTP address detection.

Softphones (Linphone, Open-SIP etc.)

Same settings like Hardphones. Use Port 5061 for TLS connections and accept thesip.xynap.techcertificate.


WebRTC Softphone

The integrated WebRTC softphone in the xynap Platform usesJsSIPvia a WSS connection.

Technical details

Parameters Value
Library JSIP
Protocol WSS (WebSocket Secure)
URL wss://sip.xynap.tech:7443
Codecs Opus (preferably), PCMA, PCMU
SRTP Mandatory (WSS requires encrypted media)

Acquaintances

JsSIP Race Conditions

JsSIP has known race conditions during connection setup. The WebRTC client must wait until the WebSocket connection is fully built up before a REGISTER is sent. The Platform-UI implements a connection-state handler with retry logic.

ICE Timeout

With slow connections, ICE-Gathering can take too long. The timeout is configured for 5 seconds. If the timeout regularly strikes, it can be adjusted in the FreeSwitch-Config.


DIDs (numbers)

DIDs (Direct Inward Dialing) assign incoming numbers to the correct routing.

# 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 objectives

Type Description
extension Directly to the extension
ring_group To a Ring Group
ivr_menu To an IVR menu
voicemail To a Voicemailbox
external Forwarding to external number