RingGroupStrategy Enum
The RingGroupStrategy enum defines how calls are distributed to members of a ring group.
Definition
namespace App\Enums;
enum RingGroupStrategy: string
{
case SIMULTANEOUS = 'simultaneous';
case ROUND_ROBIN = 'round_robin';
case SEQUENTIAL = 'sequential';
}
Values
| Value | Label | Description |
|---|---|---|
simultaneous | Ring All (Simultaneous) | Ring all extensions at the same time |
round_robin | Round Robin | Distribute calls evenly across extensions |
sequential | Sequential (Hunt Group) | Try extensions one after another |
Methods
label(): string
Get human-readable label.
RingGroupStrategy::SIMULTANEOUS->label(); // "Ring All (Simultaneous)"
RingGroupStrategy::ROUND_ROBIN->label(); // "Round Robin"
description(): string
Get detailed description.
RingGroupStrategy::SEQUENTIAL->description();
// "Try extensions one after another"
Behavior
Simultaneous
- All members ring at the same time
- First to answer gets the call
- Best for: Sales teams, support desks where anyone can answer
Round Robin
- Calls distributed evenly among members
- Each new call goes to the next member in sequence
- Best for: Load balancing across agents
Sequential
- Members ring in priority order
- If first doesn't answer, tries next
- Best for: Escalation chains, supervisor-first routing
Usage Example
use App\Enums\RingGroupStrategy;
use App\Models\RingGroup;
// Create simultaneous ring group
$ringGroup = RingGroup::create([
'name' => 'Sales Team',
'strategy' => RingGroupStrategy::SIMULTANEOUS,
'timeout' => 30,
]);
// Create round robin ring group
$ringGroup = RingGroup::create([
'name' => 'Support Team',
'strategy' => RingGroupStrategy::ROUND_ROBIN,
'timeout' => 30,
]);
Database Storage
Stored as VARCHAR(50) in the database:
strategy VARCHAR(50) NOT NULL DEFAULT 'simultaneous'
Used By
- RingGroup model