Overhead office paging across Yealink, Snom, Grandstream, and Cisco desk phones using standard SIP multicast paging — dial one code, every phone in the office plays the announcement simultaneously, with no per-extension ringing and no dependency on every phone being individually in a ring group.
A ring-group-based "page" still calls every extension individually — it's
slow to fan out, and any phone that's busy or DND'd never hears it. SIP
multicast paging is fundamentally different: every paging-capable phone is
already listening on the same multicast address (224.0.1.75:5555 is
the de facto standard most vendors default to), so the announcement plays
on all of them the instant audio hits that address, full stop, regardless
of individual phone state.
Caller dials *80 ──► FreeSWITCH dialplan trigger (freeswitch_page_trigger.xml)
│
▼
send_multicast_page.py (ESL + ws)
│
UDP multicast 224.0.1.75:5555
│
┌──────────┬──────────┼──────────┬──────────┐
▼ ▼ ▼ ▼ ▼
Yealink Snom Grandstream Cisco (any phone listening
(phone-configs/yealink_multicast.cfg, snom_multicast.xml, etc.) on that address)
freeswitch_page_trigger.xml— the*80dialplan extension that kicks off paging for any caller.send_multicast_page.py— ESL-driven service that forks the caller's audio and re-emits it as multicast RTP.phone-configs/— the matching multicast-listener config snippet for each vendor (merge into the base provisioning file fromvoip-phone-provisioning-guides).
cp freeswitch_page_trigger.xml /etc/freeswitch/dialplan/acme_page.xml
fs_cli -x "reloadxml"
pip install ESL
python send_multicast_page.py &
# Merge the matching snippet from phone-configs/ into each vendor's
# provisioning file, then re-provision the phones.Multicast paging only works within the same Layer 2 broadcast domain (or
across routed segments with IGMP/multicast routing explicitly enabled) —
it deliberately doesn't route off-site, which is also why MULTICAST_TTL
is set to 1 in send_multicast_page.py. If phones are split across
VLANs, multicast routing (or per-VLAN paging groups) needs to be
configured at the switch/router layer, not in FreeSWITCH.
voip-call-parking-announce
uses this same multicast group to announce parked-call slot numbers.