Conferencing That Behaves: Rooms, REFER Joins and the Empty-Room Watchdog
Multi-party calling has a bad reputation because it’s usually an IVR feature bolted onto a phone system: someone dials a magic number, everyone else fumbles with a PIN, and the room stays open forever after the last person leaves.
RustPBX treats conferences as first-class resources with lifecycle management.

Creating a Room Programmatically
A conference room is created by the platform or your application — not by whichever caller happens to dial first:
- Create a room via route action / API with a room id
- Participants join via REFER — the PBX invites them into the room, so the joining leg is managed (hold music, mute state, announcements) instead of a blind transfer into a number
- WebRTC participants join the same room through the media bridge
The CC desk’s three-way flow uses exactly this: consult the third party, then merge — the two legs move into a room rather than being bridged pairwise.
The Empty-Room Watchdog
The classic failure: a conference ends, the last participant’s leg lingers, and the room leaks resources until the next restart. RustPBX runs an empty-room watchdog that reaps rooms with no active participants — no cron job, no “restart the PBX weekly” folklore.
Combined with per-leg hangup attribution, “why is this room still open” has an actual answer.
Mixing and Media
Conference media runs through the media bridge with its own mixer path (JoinMixerLeg):
- Same codec across participants → relay/mix without transcode
- Browser + SIP participants → DTLS-SRTP ↔ RTP bridged per leg, as with any other call
media.playwithside_onlyfor prompts only one leg hears (host announcements)
When to Use Rooms vs. Transfers
| Need | Mechanism |
|---|---|
| Warm hand-off to one expert | Consult transfer (switch talking party) |
| Three-way discussion | Conference merge (room) |
| Scheduled bridge with dial-in | Conference room + route action |
| Broadcast announcement to a group | Queue / IVR play, not conference |
Operational Visibility
Rooms appear in active-call views and events, and the conference list/delete endpoints let operators close stuck rooms explicitly. Pair that with the watchdog and multi-party calling stops being the feature everyone avoids testing.
Guides: Agent Desk & Clients and Supervisor & Monitoring.