Skip to main content

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

ValueLabelDescription
simultaneousRing All (Simultaneous)Ring all extensions at the same time
round_robinRound RobinDistribute calls evenly across extensions
sequentialSequential (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