SIP-based outbound calling platform for a US property-management operator — automated rent-cycle reminders and maintenance callbacks with press-1 transfer to a live agent on their 3CX PBX. Asterisk 20 + PJSIP + 3CX bridge, deployed on a hardened VPS.
A US-based property-management company (Colorado, ~250 residential units under management) needed to replace a tired manual callback workflow. Their leasing office was spending hours every month making the same rent-cycle reminder calls to existing tenants and fielding maintenance callbacks — calls to people they already had a signed lease with, on numbers the tenants had provided themselves.
Built them a self-hosted outbound call and IVR system on Asterisk 20 + PJSIP, bridged into their existing 3CX Cloud PBX. Campaigns originate from Asterisk via the Manager Interface, play a short IVR ("Press 1 to speak with the office"), and hot-transfer the tenant to a live leasing agent — all without the office touching a dial pad.
Scope was strictly to their own tenants on their own contact list, under TCPA-compliant terms documented in writing before build. No cold outbound, no third-party lists.
install.sh / teardown.sh — env-var driven, no hand-editing of configs on the VPSexternal_media_address / external_signaling_address set to the VPS public IP — required on NAT'd cloud instances or registration silently half-breaksrewrite_contact=yes + rtp_symmetric=yes to avoid one-way audio behind NATrfc4733 — matched against the 3CX trunk settings so press-1 actually registersdeny=0.0.0.0/0.0.0.0, permit=127.0.0.1). Public AMI is a remote-execution surface, not a featureusername= field — the extension number is decorative, not an auth credentialThe leasing office stopped making reminder calls by hand. The same two staff who used to spend half a day on the rent cycle now watch a dashboard, pick up transfers when a tenant presses 1, and handle nothing else. The stack itself is now a reusable FFULB asset — templated configs, install/teardown scripts, phased runbook, and a QA checklist — ready to drop into the next telephony build without reinventing the NAT traversal and 3CX bridge work.