Skip to main content

AiAssistantLoadBalancer Model

The AiAssistantLoadBalancer model represents a load balancer for distributing calls across multiple AI assistants based on configured strategies.

Overview

PropertyValue
NamespaceApp\Models
Tableai_assistant_load_balancers
Primary Keyid
Global ScopeOrganizationScope
Soft DeletesYes

Database Schema

ColumnTypeNullableDescription
idbigint unsignedNoPrimary key
organization_idbigint unsignedNoOrganization ID
namevarchar(255)NoLoad balancer name
descriptiontextYesOptional description
strategyvarchar(50)NoAlbsStrategy enum
follow_throughbooleanNoTry next assistant on failure
statusvarchar(50)NoAlbsStatus enum
fallback_actionvarchar(50)NoRingGroupFallbackAction enum
fallback_extension_idbigint unsignedYesFallback extension
fallback_ring_group_idbigint unsignedYesFallback ring group
fallback_ivr_menu_idbigint unsignedYesFallback IVR menu
fallback_ai_assistant_idbigint unsignedYesFallback AI assistant
created_bybigint unsignedYesCreator user ID
updated_bybigint unsignedYesUpdater user ID
deleted_attimestampYesSoft delete timestamp
created_attimestampNoCreation timestamp
updated_attimestampNoUpdate timestamp

Load Balancer Strategies

StrategyDescription
round_robinDistribute evenly in sequence
priorityRoute by priority order
weightedRoute by percentage weights
least_connectionsRoute to least busy

Attributes

Fillable

protected $fillable = [
'organization_id',
'name',
'description',
'strategy',
'follow_through',
'status',
'fallback_action',
'fallback_extension_id',
'fallback_ring_group_id',
'fallback_ivr_menu_id',
'fallback_ai_assistant_id',
'created_by',
'updated_by',
];

Casts

AttributeCastDescription
strategyAlbsStrategy::classStrategy enum
follow_throughbooleanBoolean cast
fallback_actionRingGroupFallbackAction::classFallback action enum
statusAlbsStatus::classStatus enum

Constants

ConstantValue
DEFAULT_RELATIONSHIP_FIELDSArray of default eager load relationships

Relationships

Belongs To

  • organization() → Organization
  • fallbackExtension() → Extension
  • fallbackRingGroup() → RingGroup
  • fallbackIvrMenu() → IvrMenu
  • fallbackAiAssistant() → AiAssistant
  • creator() → User
  • updater() → User

Has Many

  • members() → AiAssistantLoadBalancerMember[]

Methods

Status

isActive(): bool

isInactive(): bool

Members

getActiveMembers(): Collection

Get active member AI assistants.

$members = $loadBalancer->getActiveMembers();

getActiveMemberCount(): int

Get count of active members.

$count = $loadBalancer->getActiveMemberCount();

Query Scopes

  • scopeForOrganization($query, $orgId)
  • scopeWithStrategy($query, $strategy)
  • scopeWithStatus($query, $status)
  • scopeSearch($query, $search)
  • scopeActive($query)

Usage Example

$albs = AiAssistantLoadBalancer::create([
'organization_id' => $orgId,
'name' => 'Support Team',
'strategy' => AlbsStrategy::ROUND_ROBIN,
'follow_through' => true,
'status' => AlbsStatus::ACTIVE,
'fallback_action' => RingGroupFallbackAction::EXTENSION,
'fallback_extension_id' => $fallbackExtId,
]);

// Add members
$albs->members()->create([
'ai_assistant_id' => $assistant1->id,
'position' => 1,
'weight' => 50,
]);