/* BEGIN BLOG-CLOSE-CHAT */ /* END BLOG-CLOSE-CHAT */

FreeSWITCH Configuration

FreeSWITCH is the PBX engine. Its configuration is managed by ICTCore and stored in /etc/freeswitch. Every time you save in the portal, ICTCore writes the dialplan and directory as static XML and reloads FreeSWITCH. Don’t hand-edit those files, because ICTCore regenerates them.

Key Ports

Port Protocol Purpose
5080 UDP/TCP SIP signaling (a single webrtc profile)
5066 / 5067 WS / WSS WebRTC, internal only. The browser softphone reaches it through Apache at https://<host>/ws/
8021 TCP ESL (Event Socket, localhost only)
16384–32768 UDP RTP media streams

There’s no SIP profile on 5060.

ESL (Event Socket Layer)

ICTCore connects to FreeSWITCH via ESL for real-time call control. The credentials are in the [freeswitch] section of /usr/ictcore/etc/ictcore.conf. The password is random and set at install, so there’s no default:

[freeswitch]
host     = 127.0.0.1
port     = 8021
password = <random value generated at install>

Test ESL access with that password:

fs_cli -H 127.0.0.1 -P 8021 -p "$ESL_PASS"

Useful fs_cli Commands

A bare fs_cli fails, because it needs the ESL password. Copy it from ictcore.conf into ESL_PASS first:

ESL_PASS='<password from ictcore.conf>'
fs_cli -p "$ESL_PASS" -x "sofia status profile webrtc reg"   # Registered phones and softphones
fs_cli -p "$ESL_PASS" -x "sofia status gateway"             # Trunk registration status
fs_cli -p "$ESL_PASS" -x "show calls"                       # Active calls
fs_cli -p "$ESL_PASS" -x "reloadxml"                        # Reload dialplan XML
fs_cli -p "$ESL_PASS" -x "sofia status"                     # SIP profile status

Avoid reload mod_sofia on a live system. It drops every active call.

Log Files

tail -f /var/log/freeswitch/freeswitch.log

Set log level in fs_cli:

/log 7    # debug
/log 4    # warning (production default)

Media Storage

Path Content
/var/lib/freeswitch/recordings/ Call recordings
/var/lib/freeswitch/storage/voicemail/ Voicemail messages