Sebastián Acosta
New Member
Hello Flashphoner team,
Goal
Integrate 3CX → WCS (SIP trunk @ 40000) → WebRTC (Meta integration handled separately). I need WCS to accept inbound SIP trunk calls from 3CX and forward media to a local RTMP endpoint.
Environment
What works
Issue
Config
/usr/local/FlashphonerWebCallServer-5.2.2098/conf/flashphoner.properties (relevant lines):
sip_trunk_enabled=true
sip_add_contact_id=false
rtmp_transponder_stream_name_prefix=
/usr/local/FlashphonerWebCallServer-5.2.2098/conf/sip_trunk.yml:
trunks:
pbx_t0:
localPort: 40000
proxyIp: 54.94.72.97 # 3CX public IP that sends the INVITE
remotePort: 5060
url: rtmp://192.168.1.20:1935/live
visibleName: PBX-Flashphoner
sdp: |
v=0
o=10009 2469 1555 IN IP4 0.0.0.0
c=IN IP4 0.0.0.0
t=0 0
m=audio 7270 RTP/AVP 0 8 96 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=recvonly
sdpParams:
- b=AS:2000
- b=RS:50
- b=RR:100
Permissions on the file:
-rw-r--r-- 1 flashphoner flashphoner 520 Oct 13 /usr/local/FlashphonerWebCallServer-5.2.2098/conf/sip_trunk.yml
Logging (added for verbosity):
log4j.logger.com.flashphoner.server.sip=DEBUG
log4j.logger.gov.nist=DEBUG
Observed
Questions
Expected
I can provide full logs and packet captures if helpful.
Thanks in advance for confirming licensing/build requirements and pointing out anything wrong in my setup.
— Sebastián
Goal
Integrate 3CX → WCS (SIP trunk @ 40000) → WebRTC (Meta integration handled separately). I need WCS to accept inbound SIP trunk calls from 3CX and forward media to a local RTMP endpoint.
Environment
- Cloud: AWS EC2 (Amazon Linux 2)
- WCS build: 5.2.2098 (startup.log shows Starting FlashphonerWebCallServer-5.2.2098-… on amzn 2)
- Java: OpenJDK 14.0.1
- WCS external IP: 18.214.18.170
- WCS private IP: 10.10.1.140
- PBX (3CX) public IP that sends INVITE: 54.94.72.97 (3CX LAN IP seen in Via: 10.10.2.133)
What works
- SIP accounts register fine on WCS and I see normal REGISTER / 200 OK traffic in flashphoner.log.
Issue
- I’m setting up a SIP trunk on UDP/TCP 40000.
The socket is listening:
ss -u -lpn | grep 40000
UNCONN 0 10.10.1.140:40000 0.0.0.0:* users("java",pid=2790512,fd=210))
ss -t -lpn | grep 40000
LISTEN 0 50 10.10.1.140:40000 0.0.0.0:* users("java",pid=2790512,fd=211))
- 3CX INVITEs do reach WCS: tcpdump on 40000 shows repeated INVITE with SDP from 54.94.72.97:5060 → 10.10.1.140:40000.
However, WCS never logs the INVITE (even with debug) and does not reply (no 100 Trying / 404 / 486, etc.). - REST API for trunks returns 404:
curl -s http://localhost:8081/rest-api/sip_trunks
{"status":404,"error":"Not Found","message":"/rest-api/sip_trunks"} - I also see this in flashphoner.log around start:
ERROR ThreadsConfigParser - main Config file not found
(This appears regardless of the trunk config.)
Config
/usr/local/FlashphonerWebCallServer-5.2.2098/conf/flashphoner.properties (relevant lines):
sip_trunk_enabled=true
sip_add_contact_id=false
rtmp_transponder_stream_name_prefix=
/usr/local/FlashphonerWebCallServer-5.2.2098/conf/sip_trunk.yml:
trunks:
pbx_t0:
localPort: 40000
proxyIp: 54.94.72.97 # 3CX public IP that sends the INVITE
remotePort: 5060
url: rtmp://192.168.1.20:1935/live
visibleName: PBX-Flashphoner
sdp: |
v=0
o=10009 2469 1555 IN IP4 0.0.0.0
c=IN IP4 0.0.0.0
t=0 0
m=audio 7270 RTP/AVP 0 8 96 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:96 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=recvonly
sdpParams:
- b=AS:2000
- b=RS:50
- b=RR:100
Permissions on the file:
-rw-r--r-- 1 flashphoner flashphoner 520 Oct 13 /usr/local/FlashphonerWebCallServer-5.2.2098/conf/sip_trunk.yml
Logging (added for verbosity):
log4j.logger.com.flashphoner.server.sip=DEBUG
log4j.logger.gov.nist=DEBUG
Observed
- On restart, there’s no line indicating that sip_trunk.yml is loaded, and there is no “listening trunk on 40000” message.
- INVITEs arrive (verified by tcpdump), but no SIP response from WCS and no INVITE lines in flashphoner.log.
Questions
- Does my current license/build include the SIP Trunk / SIP Gateway module?
- If not, which license tier and build do I need to load sip_trunk.yml and enable /rest-api/sip_trunks?
- Is the config filename and path correct for this build (conf/sip_trunk.yml)?
Any different name (e.g., sip_trunks.yml) or directory expected? - What does ERROR ThreadsConfigParser - main Config file not found refer to, and can it be related to the trunk not loading?
- With NAT (public 18.214.18.170 / private 10.10.1.140), is proxyIp meant to be the source IP of the PBX INVITE (54.94.72.97) as I used?
- Are there additional properties to flip (e.g., to explicitly enable the trunk service) or other logs I should enable to confirm initialization?
Expected
- On service start, WCS should log that the trunk config is parsed and that it’s listening on port 40000.
- /rest-api/sip_trunks should return the configured pbx_t0.
- When INVITE from 3CX hits 40000, WCS should respond (100 Trying, etc.) and then push media to rtmp://192.168.1.20:1935/live per url.
I can provide full logs and packet captures if helpful.
Thanks in advance for confirming licensing/build requirements and pointing out anything wrong in my setup.
— Sebastián