Conferencing That Behaves: Rooms, REFER Joins and the Empty-Room Watchdog

M
Miuda Team
Building conversational AI tooling

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.

Conference configuration in the contact center

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.play with side_only for prompts only one leg hears (host announcements)

When to Use Rooms vs. Transfers

NeedMechanism
Warm hand-off to one expertConsult transfer (switch talking party)
Three-way discussionConference merge (room)
Scheduled bridge with dial-inConference room + route action
Broadcast announcement to a groupQueue / 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.

Get new posts by email

Deep dives on Rust telephony, contact centers and wholesale voice. No spam.

Thanks — you're on the list.

We use cookies for anonymous analytics to improve the site. Nothing is loaded until you accept. Privacy Policy