Skip to main content

Ring Groups

Ring groups and their members. Supervisor assignments to ring groups are on Users and Organizations.

RingGroup​

A group of extensions rung together or in turn.

Table: ring_groups
Model: App\Models\RingGroup
Tenant scoped: yes (OrganizationScope)
Traits: HasUnprovisionedState

ColumnTypeNullableDefaultDescription
idbigint unsignedNoautoPrimary key
organization_idbigint unsignedNo-Tenant. Foreign key to organizations, on delete cascade
namevarchar(100)No-Ring group name
descriptiontextYesnullDescription
strategyenumNosimultaneousHow members are rung. Values: simultaneous, round_robin, sequential (cast to RingGroupStrategy)
timeoutintNo30Seconds to ring
ring_turnsintNo1Times to cycle through the members
fallback_actionenumNohangupWhere the call goes when nobody answers. Values: extension, ring_group, ivr_menu, ai_assistant, ai_load_balancer, hangup, call_queue, unavailable (cast to RingGroupFallbackAction)
fallback_extension_idbigint unsignedYesnullFallback extension. Foreign key to extensions, on delete set null
statusenumNoactiveActive or inactive. Values: active, inactive (cast to RingGroupStatus)
created_attimestampYesnull
updated_attimestampYesnull
fallback_ring_group_idbigint unsignedYesnullFallback ring group. Foreign key to ring_groups, on delete set null
fallback_ivr_menu_idbigint unsignedYesnullFallback IVR menu. Foreign key to ivr_menus, on delete set null
fallback_ai_assistant_idbigint unsignedYesnullFallback AI assistant, like call queues and load balancers. Foreign key to ai_assistants, on delete set null. Migration 2026_10_15_100000_point_ring_group_ai_assistant_fallback_at_ai_assistants converted older values, which held an AI Assistant extension ID, to that extension's assistant (null when it had none)
fallback_ai_load_balancer_idbigint unsignedYesnullFallback AI load balancer. Foreign key to ai_assistant_load_balancers, on delete set null
fallback_call_queue_idbigint unsignedYesnullFallback call queue. Foreign key to call_queues, on delete set null

Indexes

  • ring_groups_fallback_ai_assistant_id_foreign: fallback_ai_assistant_id
  • ring_groups_fallback_ai_load_balancer_id_foreign: fallback_ai_load_balancer_id
  • ring_groups_fallback_call_queue_id_foreign: fallback_call_queue_id
  • ring_groups_fallback_extension_id_foreign: fallback_extension_id
  • ring_groups_fallback_ivr_menu_id_foreign: fallback_ivr_menu_id
  • ring_groups_fallback_ring_group_id_foreign: fallback_ring_group_id
  • ring_groups_organization_id_name_unique (unique): organization_id, name
  • ring_groups_organization_id_status_index: organization_id, status

Relationships

$ringGroup->organization() → Organization (organization_id) [BelongsTo]
$ringGroup->members() → RingGroupMember (ring_group_id) [HasMany]
$ringGroup->fallbackExtension() → Extension (fallback_extension_id) [BelongsTo]
$ringGroup->fallbackRingGroup() → RingGroup (fallback_ring_group_id) [BelongsTo]
$ringGroup->fallbackIvrMenu() → IvrMenu (fallback_ivr_menu_id) [BelongsTo]
$ringGroup->fallbackAiAssistant() → AiAssistant (fallback_ai_assistant_id) [BelongsTo]
$ringGroup->fallbackAiLoadBalancer() → AiAssistantLoadBalancer (fallback_ai_load_balancer_id) [BelongsTo]
$ringGroup->fallbackCallQueue() → CallQueue (fallback_call_queue_id) [BelongsTo]

Scopes: forOrganization(), withStrategy(), withStatus(), search(), active(), unprovisioned()
Methods: isActive(), isInactive(), getMembers(), getActiveMemberCount()

unprovisioned() and is_unprovisioned are true when fallback_action is unavailable. fallbackAiAssistant() returns an Extension.

RingGroupMember​

An extension in a ring group.

Table: ring_group_members
Model: App\Models\RingGroupMember
Tenant scoped: no

ColumnTypeNullableDefaultDescription
idbigint unsignedNoautoPrimary key
ring_group_idbigint unsignedNo-Ring group. Foreign key to ring_groups, on delete cascade
extension_idbigint unsignedNo-Member extension. Foreign key to extensions, on delete cascade
priorityintNo1Order for sequential and round-robin rings
created_attimestampYesnull
updated_attimestampYesnull

Indexes

  • ring_group_members_extension_id_index: extension_id
  • ring_group_members_ring_group_id_extension_id_unique (unique): ring_group_id, extension_id
  • ring_group_members_ring_group_id_index: ring_group_id

Relationships

$ringGroupMember->ringGroup() → RingGroup (ring_group_id) [BelongsTo]
$ringGroupMember->extension() → Extension (extension_id) [BelongsTo]