{{ $title }}
Queue routing, wait policy, and call-center features.
Back to Queues
@if(session('success'))
✓ Saved.
{{ session('success') }}
@endif @if(session('error'))
{{ session('error') }}
@endif @if($errors->any())
Please fix the following:
@foreach($errors->all() as $error)
{{ $error }}
@endforeach
@endif
@csrf @if($method !== 'POST') @method($method) @endif @php $selectedMembers = collect(old('members', isset($queue) && $queue ? $queue->members->pluck('agent_id')->all() : [])) ->map(fn($id) => (int) $id) ->all(); @endphp {{-- ── Tab navigation (extension-edit style) ── --}}
Basic
Caller Experience
Failover & Break-out
Agents @if(!empty($selectedMembers))
{{ count($selectedMembers) }}
@endif
{{-- BASIC --}}
Queue Name
*
Display name shown in the GUI and reports.
Queue Number
*
e.g.
2000
. This is what callers/extensions dial to enter the queue.
Ring Strategy
@foreach([ 'ringall' => 'Ring All — all agents ring at once', 'leastrecent' => 'Least Recent — agent who answered longest ago', 'fewestcalls' => 'Fewest Calls — agent who has taken fewest calls', 'random' => 'Random — random agent each call', 'linear' => 'Linear — fixed order, top of list first', ] as $val => $label)
strategy ?? 'ringall') === $val ? 'selected' : '' }}>{{ $label }}
@endforeach
Ring Timeout (seconds)
How long each agent's phone rings before the next agent is tried (5–300 seconds).
Wrap-up Time (seconds)
Pause after each call before agent receives the next one.
ring_in_use ?? true) ? 'checked' : '' }} id="qRingInUse">
Ring Busy Agents
When
on
, the queue rings agents even if they're already on a call. Turn
off
so a busy agent is skipped and the caller waits in the queue (hold music / announcements) until an agent is free — recommended when agents have Call Waiting disabled. Set Music on Hold (below) for the hold experience.
Max Callers Waiting
When this many callers are already waiting, new callers go to the failover destination.
Max Wait Time (seconds)
After this many seconds in queue, the caller is sent to failover.
0
= unlimited.
Caller-ID Prepend
Prepended to the caller's name so agents see which queue they're answering.
is_active ?? true) ? 'checked' : '' }} id="qActive">
Queue Active
record_calls ?? true) ? 'checked' : '' }} id="qRec">
Record Calls
{{-- CALLER EXPERIENCE --}}
Welcome Message
Played once when the caller enters, before the queue (e.g. "Welcome to Acme, all our agents are busy — please hold"). Leave as (none) to send callers straight into music/queue.
Welcome Prompt
(none)
@foreach($voicePrompts as $val => $name)
welcome_message ?? '') === $val ? 'selected' : '' }}>{{ $name }}
@endforeach
Upload prompts under
Voice Prompts
.
Periodic Announcement
Play a custom message at intervals while callers wait (e.g. "Your call is important to us, please continue holding"). This plays first, then the caller hears Music on Hold between repeats.
Announcement File
(none)
@foreach($voicePrompts as $val => $name)
periodic_announce_file ?? '') === $val ? 'selected' : '' }}>{{ $name }}
@endforeach
Upload prompts under
Voice Prompts
.
Frequency (seconds)
How often the announcement repeats. Typical: 60–120 seconds.
Music on Hold Class
(none — system default)
@foreach($mohClasses as $cls)
music_on_hold ?? '') === $cls ? 'selected' : '' }}>{{ $cls }}
@endforeach
Played between periodic announcements while callers wait. Upload custom MoH classes under
Music on Hold
.
Position & Wait Time Announcements
announce_position ?? true) ? 'checked' : '' }} id="qAnnPos">
Announce Position
announce_hold_time ?? false) ? 'checked' : '' }} id="qAnnHold">
Announce Estimated Hold Time
{{-- FAILOVER & BREAKOUT --}}
Failover Destination
When the queue is full or max wait time is exceeded, send the caller here.
Strongly recommended
— without a failover the call simply hangs up.
Failover Type
@foreach([ 'none' => 'None (hang up)', 'extension' => 'Extension', 'voicemail' => 'Voicemail box', 'external' => 'External number', 'ring_group' => 'Ring Group', 'queue' => 'Another Queue', ] as $val => $label)
failover_type ?? 'none') === $val ? 'selected' : '' }}>{{ $label }}
@endforeach
Destination Value
Extension number, mailbox number, ring group number, queue number, or external phone number.
Caller Break-Out
Let waiting callers press a digit to escape the queue and reach voicemail or another extension.
breakout_enabled ?? false) ? 'checked' : '' }} id="qBreakout">
Enable Break-Out
Digit
@foreach(['0','1','2','3','4','5','6','7','8','9','*','#'] as $d)
breakout_digit ?? '0') === $d ? 'selected' : '' }}>{{ $d }}
@endforeach
Destination Type
@foreach([ 'extension' => 'Extension', 'voicemail' => 'Voicemail', 'external' => 'External number', 'ring_group' => 'Ring Group', ] as $val => $label)
breakout_dest_type ?? 'extension') === $val ? 'selected' : '' }}>{{ $label }}
@endforeach
Destination Value
{{-- AGENTS --}}
Queue Agents
{{ count($selectedMembers) }}
assigned / {{ count($agents ?? []) }} available
Tick the agents who should receive calls in this queue. Untick to remove. Agents need an extension assigned to ring.
@forelse(($agents ?? collect()) as $agent) @php $isAssigned = in_array((int) $agent->id, $selectedMembers, true); $hasExt = !empty($agent->extension); @endphp
{{ $agent->name }}
({{ $agent->agent_code }})
@if($hasExt) Ext {{ $agent->extension }} @else
No extension assigned — cannot receive calls
@endif
@if($isAssigned)
Assigned
@endif
@empty
No active agents available. Create agents under
Call Center → Agents
.
@endforelse
Cancel
{{ $submitLabel }}