WCS 5.2.2098: SIP trunk INVITEs reach port 40000 but WCS doesn’t parse sip_trunk.yml (404 on /rest-api/sip_trunks)

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


  • 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


  1. 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?
  2. 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?
  3. What does ERROR ThreadsConfigParser - main Config file not found refer to, and can it be related to the trunk not loading?
  4. 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?
  5. 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
 

Max

Administrator
Staff member
Good day.
First, please update WCS to the latest build 5.3.194. Please note that JDK must be updated to 21 in this case.
If you prefer to use a ready to lauch AWS image, please deploy a new instance based on the latest Marketplace image. It includes JDK 21, so WCS may be updated to the latest build if necessary.
Then, please make sure you've configured the server according to this doc: Republishing incoming SIP call to a stream
There is no setting sip_trunk_enabled. Also, there is no any SIP trunk REST API, just a yaml config file
The recommended settings are
Code:
allow_outside_codecs=false
profiles=42e01f,640028
generate_av_for_ua=all
sip_add_contact_id=false
rtmp_transponder_stream_name_prefix=
 
Top