Skip to content

Param-Cloudtelecom/multicast-paging-system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

multicast-paging-system

License Top Language Last Commit

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.

Why multicast, not a ring-group page

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.

Architecture

 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)

Files

Setup

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.

Network note

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.

Pairs with

voip-call-parking-announce uses this same multicast group to announce parked-call slot numbers.

About

SIP multicast overhead paging across Yealink, Snom, Grandstream, and Cisco desk phones

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages