Ctrl K
ring2all.com

Voicemail Broadcast Groups Module Documentation

Table of Contents

  1. Module Overview (Technical)
  2. Module Overview (Commercial/Business)
  3. Module Overview (End User/Administrator)
  4. Configuration Fields Reference
  5. Call Flow / Logic Explanation
  6. Common Scenarios & Examples
  7. Limitations & Important Notes
  8. Troubleshooting Tips
  9. Glossary
  10. Lua Script Status

---

1. Module Overview (Technical)

What Are Voicemail Broadcast Groups?

Voicemail Broadcast Groups allow users to record a message once and have it delivered to multiple voicemail boxes simultaneously. This is ideal for company announcements, emergency notifications, or team updates.

Architecture

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│              Voicemail Broadcast System                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  User dials: 8060 (broadcast group code)                        │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Broadcast Group Lookup                      │   │
│  │  SELECT * FROM public.voicemail_broadcast_groups         │   │
│  │  WHERE code = '8060' AND enabled = true                  │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Access Control                              │   │
│  │                                                          │   │
│  │  1. Check allowed_origins (if caller permitted)          │   │
│  │  2. Prompt for PIN (if password set)                     │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Record Message                              │   │
│  │                                                          │   │
│  │  - Play instructions (unless skip_instructions)          │   │
│  │  - Record up to max_record_time seconds                  │   │
│  │  - Store in voicemail_broadcast storage                  │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Distribute to Members                       │   │
│  │                                                          │   │
│  │  For each member extension:                              │   │
│  │  ├─ Copy message to member's voicemail folder           │   │
│  │  └─ Mark as new message                                  │   │
│  │                                                          │   │
│  │  Distribution modes:                                     │   │
│  │  ├─ Parallel: Send to all immediately                   │   │
│  │  ├─ Sequential: One by one                              │   │
│  │  └─ Active Only: Only registered extensions             │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  Send notification (email/API/event) if configured              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Key Tables

TablePurpose
public.voicemail_broadcast_groupsGroup definitions
public.voicemail_broadcast_group_membersMember extensions
public.sip_extensionsExtension details for members

Storage Paths

LocationPurpose
/var/lib/freeswitch/storage/voicemail_broadcast/Broadcast recordings
/var/lib/freeswitch/storage/voicemail/default/{ext}/Destination folders

Key Files

FileDescription
admin/apps/web/src/modules/voicemailsBroadcastGroups/Frontend
admin/apps/web/src/i18n/en/voicemailsBroadcastGroups.jsonTranslations
telephony/freeswitch/lua/main/xml_handlers/voicemail_broadcast/voicemail_broadcast.luaLua handler
---

2. Module Overview (Commercial/Business)

Business Value

Voicemail Broadcast enables efficient mass communication:

Without BroadcastWith Broadcast
Leave individual voicemailsRecord once, deliver to many
Call each personOne dial, all receive
Time-consumingInstant distribution

Use Cases

  1. Company Announcements
- Office closures, policy changes

- HR updates, benefits information

  1. Emergency Notifications
- Building evacuations

- Weather-related closures

  1. Team Updates
- Daily standup summaries

- Project status updates

  1. Sales Teams
- New product information

- Pricing changes

Feature Highlights

FeatureBenefit
PIN ProtectionControl who can broadcast
Skip InstructionsFaster recording for experienced users
Distribution ModesParallel, sequential, or active-only
NotificationsEmail/API confirmation after broadcast
Allowed OriginsRestrict who can initiate broadcasts
---

3. Module Overview (End User/Administrator)

What Can You Do?

  • Create broadcast groups with specific extensions
  • Control access via PIN and allowed origins
  • Configure recording options (format, duration)
  • Set up notifications after broadcast completion

Administrator Workflow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│            Creating a Voicemail Broadcast Group                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Step 1: General Information                                    │
│  ├─ Code: 8060 (dial code)                                     │
│  ├─ Name: "All Staff"                                          │
│  └─ Description: "Company-wide announcements"                  │
│                                                                 │
│  Step 2: Access Control                                         │
│  ├─ Password: 1234 (optional PIN)                              │
│  ├─ Allowed Origins: 1001, 1002 (who can broadcast)            │
│  └─ Skip Instructions: ✓                                       │
│                                                                 │
│  Step 3: Recording Settings                                     │
│  ├─ Max Record Time: 120 seconds                               │
│  ├─ Record Format: WAV                                         │
│  └─ Delete After Broadcast: ✗                                  │
│                                                                 │
│  Step 4: Distribution                                           │
│  ├─ Distribution Mode: Parallel                                │
│  ├─ Notification: Email                                        │
│  └─ Notification Target: admin@company.com                     │
│                                                                 │
│  Step 5: Add Members (Extensions)                               │
│  ├─ 1001, 1002, 1003, 1004                                    │
│  └─ ... (all staff extensions)                                 │
│                                                                 │
│  Step 6: Enable and Save                                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

User Workflow (Recording a Broadcast)

Plaintext
1. Dial 8060 (broadcast group code)
2. Enter PIN if prompted: 1234
3. Hear instructions (or skip if configured)
4. Record message (press # to stop)
5. Message delivered to all member voicemail boxes

Quick Tips

TIP
Allowed Origins: Limit who can initiate broadcasts to prevent abuse.
TIP
Skip Instructions: Enable for users who broadcast frequently.
CAUTION
Max Record Time: Keep reasonable to avoid very long messages.

---

4. Configuration Fields Reference

General Section

FieldDescriptionExampleRequired
CodeDialable group code8060, 40Yes
NameDisplay nameAll StaffYes
DescriptionOptional notesCompany-wideNo
PasswordAccess PIN1234No
Skip InstructionsSkip recording promptOn/OffNo
EnabledActive statusOn/OffYes

Recording Settings

FieldDescriptionDefaultOptions
Max Record TimeMax duration (seconds)12010-3600
Record FormatAudio file formatWAVWAV, MP3, OGG
Delete After BroadcastRemove original after deliveryOffOn/Off
Playback VolumeVolume for recipients51-10
Announce Group NameSay group name before messageOffOn/Off

Distribution Settings

FieldDescription
Distribution ModeHow messages are delivered
Allowed OriginsExtensions permitted to broadcast
Distribution Modes:
ModeBehavior
ParallelSend to all members simultaneously
SequentialSend one at a time in order
Active OnlySend only to registered/online extensions

Notification Settings

FieldDescription
Notification MethodHow to notify after broadcast
Notification TargetDestination (email, URL, event)
Notification Methods:
MethodTarget Example
NoneNo notification
Emailadmin@company.com
APIhttps://api.example.com/webhook
Eventbroadcast_completed
---

5. Call Flow / Logic Explanation

Broadcast Flow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Broadcast Recording Flow                     │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. User dials 8060 (broadcast group code)                      │
│     │                                                           │
│     ▼                                                           │
│  2. Look up broadcast group                                     │
│     ├─ Found & enabled → Continue                              │
│     └─ Not found → "Feature not available"                     │
│     │                                                           │
│     ▼                                                           │
│  3. Check allowed_origins (if configured)                       │
│     ├─ Caller in list → Continue                               │
│     ├─ List empty → Anyone can broadcast                       │
│     └─ Caller NOT in list → "Not authorized"                   │
│     │                                                           │
│     ▼                                                           │
│  4. Prompt for PIN (if password set)                            │
│     ├─ Correct PIN → Continue                                  │
│     └─ Wrong PIN → "Not authorized"                            │
│     │                                                           │
│     ▼                                                           │
│  5. Play recording instructions (unless skip_instructions)      │
│     │                                                           │
│     ▼                                                           │
│  6. Record message (up to max_record_time, # to stop)           │
│     │                                                           │
│     ▼                                                           │
│  7. Save recording to broadcast storage                         │
│     │                                                           │
│     ▼                                                           │
│  8. Distribute to members based on distribution_mode            │
│     ├─ Copy to each member's voicemail folder                  │
│     └─ Mark as new message with MWI update                     │
│     │                                                           │
│     ▼                                                           │
│  9. Send notification (if configured)                           │
│     │                                                           │
│     ▼                                                           │
│  10. Delete original (if delete_after_broadcast = true)         │
│     │                                                           │
│     ▼                                                           │
│  11. Play "Message saved" confirmation                          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

---

6. Common Scenarios & Examples

Scenario 1: Company-Wide Announcements

Setup:
SettingValue
Code8060
NameAll Staff
Password1234
Allowed Origins1001 (CEO), 1002 (HR)
MembersAll employee extensions
DistributionParallel
NotificationEmail to hr@company.com

Scenario 2: Emergency Broadcast

Setup:
SettingValue
Code911
NameEmergency Alert
Password(none - quick access)
Allowed OriginsSecurity team only
Skip Instructions
Announce Group Name

Scenario 3: Sales Team Updates

Setup:
SettingValue
Code8070
NameSales Team
Password(none)
Allowed OriginsSales manager only
MembersSales team extensions
Delete After Broadcast✓ (temporary updates)
---

7. Limitations & Important Notes

Technical Limitations

WARNING
Voicemail Required: Members must have voicemail enabled on their extensions.
WARNING
Storage Space: Long broadcasts to large groups consume significant disk space.
IMPORTANT
MWI Updates: Message Waiting Indicator may have slight delay after broadcast.

Best Practices

  1. Limit Allowed Origins: Prevent unauthorized broadcasts
  2. Use PINs: Add layer of security for sensitive groups
  3. Keep Messages Short: Respectful of recipient time
  4. Regular Cleanup: Enable delete_after_broadcast for temporary messages
  5. Test First: Create a small test group before company-wide rollout

---

8. Troubleshooting Tips

Common Issues

SymptomPossible CauseSolution
"Not authorized"Not in allowed_originsAdd caller to list
No message in VMMember has no voicemailEnable voicemail for extension
Recording too shortmax_record_time too lowIncrease limit
No MWI lightMWI not configuredCheck extension voicemail settings

Diagnostic SQL

List broadcast groups:

Sql
SELECT code, name, enabled, 
       (SELECT COUNT(*) FROM public.voicemail_broadcast_group_members 
        WHERE voicemail_broadcast_group_id = g.id) as member_count
FROM public.voicemail_broadcast_groups g
WHERE domain_id = [domain_id];

Check group members:

Sql
SELECT e.extension, e.description
FROM public.voicemail_broadcast_group_members m
JOIN public.sip_extensions e ON m.sip_extension_id = e.id
WHERE m.voicemail_broadcast_group_id = [group_id];

---

9. Glossary

TermDefinition
Broadcast GroupCollection of extensions to receive broadcast messages
BroadcastOne message delivered to multiple voicemail boxes
Allowed OriginsExtensions permitted to initiate broadcasts
Distribution ModeHow messages are delivered (parallel/sequential)
MWIMessage Waiting Indicator (voicemail light on phone)
Skip InstructionsSkip the "record your message" prompt
---

10. Lua Script Status

Current Implementation Review

The Lua script at telephony/freeswitch/lua/main/xml_handlers/voicemail_broadcast/voicemail_broadcast.lua has been reviewed.

Issues Identified

IssueCurrentShould Be
Schemacore. tablespublic. tables
Lookup fieldWHERE name = ?WHERE code = ?
Record timeHardcoded 30sUse settings.max_record_time
FormatHardcoded .wavUse settings.record_format
Allowed originsNot implementedCheck settings.allowed_origins
Distribution modeNot implementedImplement parallel/sequential
NotificationsNot implementedImplement email/API/event

See the updated Lua script in the corrections below.

---

Documentation last updated: January 2026
AI Assistant

👋 Hello! I'm your Ring2All documentation assistant. I can help you find information about configuring and using the Ring2All PBX platform.

How can I help you today?