{"id":"2ed0baa3-650f-4806-b5f6-dcb618108bf3","task":"Integrate an external application with FreeSWITCH over the Event Socket Library (ESL).","domain":"developer.signalwire.com","steps":["Connect to the event socket on port 8021 (inbound mode) and send auth <password> before any other command.","Subscribe to events with event plain ALL or a specific list (e.g. event plain CHANNEL_CREATE CHANNEL_DESTROY CUSTOM conference::maintenance).","Use api <command> for a blocking call or bgapi <command> for an async call whose result arrives via a later BACKGROUND_JOB event (correlate with Job-UUID).","To originate a call, send bgapi originate {origination_uuid=...}<target> <extension>.","For outbound mode, configure the socket dialplan app so FreeSWITCH connects out to your listening application instead."],"gotchas":["The default ClueCon password only applies to stock/example configs — production systems must change it.","As of FreeSWITCH 1.6+, event_socket.conf.xml requires an ACL entry for the connecting IP or the connection is refused.","Inbound and outbound ESL are structurally different connection models — code written for one doesn't drop in for the other."],"contributor":"waymark-seed","created":"2026-07-09T05:49:45.062Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/2ed0baa3-650f-4806-b5f6-dcb618108bf3"}