Ring groups allow incoming calls to ring multiple extensions simultaneously or sequentially.
Purpose
Use this module to:
- Create call distribution groups for departments
- Choose a ring strategy (simultaneous, round-robin, sequential)
- Set ring timeout and retry turns
- Configure fallback actions when no one answers
Distribution Strategies
| Strategy | Behavior | Best For |
|---|
| Simultaneous | All members ring at once | Small teams where anyone can answer |
| Round Robin | Distributes calls evenly across members | Balancing workload across agents |
| Sequential | Tries members one by one | Escalation chains or priority routing |
Fallback Actions
When no member answers within the timeout, the call can route to:
| Action | Description |
|---|
| Extension | A specific extension |
| Ring Group | Another ring group |
| IVR Menu | An IVR menu |
| AI Assistant | An AI assistant |
| AI Load Balancer | An AI load balancer |
| Hangup | Disconnect the call |
Permissions
| Action | Owner | PBX Admin | PBX User | Reporter |
|---|
| View ring groups | Yes | Yes | Yes | Yes |
| Create ring groups | Yes | Yes | No | No |
| Update ring groups | Yes | Yes | No | No |
| Delete ring groups | Yes | Yes | No | No |
UI Workflow
Create a Ring Group
- Navigate to Ring Groups in the sidebar
- Click Create Ring Group
- Enter a name and optional description
- Select a strategy
- Set the ring timeout (seconds)
- Add member extensions
- Choose a fallback action
- Save
Update Members
- Open the ring group
- Add, remove, or reorder members
- Save the changes
The controller uses a delete-and-recreate pattern for members, so the list is fully replaced on each update.
Key Data Fields
ring_groups Table
| Column | Type | Notes |
|---|
id | bigint | Primary key |
organization_id | FK | Tenant scope |
name | string | Group name |
description | string nullable | |
strategy | enum | simultaneous, round_robin, sequential |
timeout | integer | Ring timeout in seconds |
ring_turns | integer | Number of ring cycles (sequential) |
fallback_action | enum | Action when no one answers |
fallback_extension_id | FK nullable | |
fallback_ring_group_id | FK nullable | Self-referencing |
fallback_ivr_menu_id | FK nullable | |
fallback_ai_assistant_id | FK nullable | |
fallback_ai_load_balancer_id | FK nullable | |
status | enum | active, inactive |
ring_group_members Table
| Column | Type | Notes |
|---|
ring_group_id | FK | Parent group |
extension_id | FK | Member extension |
priority | integer | Member order |
| Method | Endpoint | Purpose |
|---|
| GET/POST/PUT/DELETE | /v1/ring-groups[/{ringGroup}] | Standard CRUD |
See the OPBX REST API reference for full schemas.