Skip to main content

Enumerations

Auto Dialer Enums

CallerIdStrategy

Distribution strategy for Caller ID Pool.

File: App\Enums\CallerIdStrategy Table Column: auto_dialer_campaigns.caller_id_strategy

CaseValueDescription
ROUND_ROBINround_robinSequential cycling through pool
RANDOMrandomRandom selection per call
LEAST_RECENTLY_USEDleast_recently_usedSelect least recently used

Methods:

$strategy->label(): string;        // "Round Robin"
$strategy->description(): string; // "Cycle through Caller IDs sequentially"

CampaignStatus

Campaign lifecycle states.

File: App\Enums\CampaignStatus Table Column: auto_dialer_campaigns.status

CaseValueLabelDescription
DRAFTdraftDraftInitial configuration state
ACTIVEactiveRunningCurrently dialing
PAUSEDpausedPausedTemporarily stopped
COMPLETEDcompletedCompletedAll destinations processed
ARCHIVEDarchivedArchivedSoft-deleted

Methods:

$status->label(): string;
$status->canTransitionTo(CampaignStatus $newStatus): bool;

DestinationStatus

Status of a destination (phone number) in a campaign.

File: App\Enums\DestinationStatus Table Column: auto_dialer_destinations.status

CaseValueDescription
PENDINGpendingWaiting to be called
DIALINGdialingCurrently being dialed
COMPLETEDcompletedSuccessfully completed
FAILEDfailedFailed after all retries
SKIPPEDskippedManually skipped

AmdMode

Answering Machine Detection modes.

File: App\Enums\AmdMode Table Column: auto_dialer_campaigns.amd_mode

CaseValueAPI ValueDescription
ENABLEDEnabledEnableBasic human/machine detection
DETECT_MESSAGE_ENDDetectMessageEndDetectMessageEndWait for greeting to complete

ListStatus

Distribution list states.

File: App\Enums\ListStatus Table Column: auto_dialer_lists.status

CaseValueDescription
DRAFTdraftCreating/uploading
ACTIVEactiveReady for use
ARCHIVEDarchivedNo longer used

Core PBX Enums

ExtensionType

Types of PBX extensions.

File: App\Enums\ExtensionType Table Column: extensions.type

CaseValueDescription
USERuserHuman user extension
AI_ASSISTANTai_assistantAI assistant endpoint
AI_LOAD_BALANCERai_load_balancerLoad balancer endpoint
RING_GROUPring_groupRing group endpoint
CONFERENCEconferenceConference room endpoint
IVRivrIVR menu endpoint
FORWARDforwardCall forwarding
CUSTOM_LOGICcustom_logicCustom routing logic

RoutingDestinationType

Destination types for call routing.

File: App\Enums\RoutingDestinationType Table Column: auto_dialer_campaigns.routing_destination_type

CaseValueLabelDescription
AI_ASSISTANTai_assistantAI AssistantRoute to AI assistant
AI_LOAD_BALANCERai_load_balancerAI Load BalancerRoute via load balancer
RING_GROUPring_groupRing GroupRoute to ring group
IVR_MENUivr_menuIVR MenuRoute to IVR menu
EXTENSIONextensionExtensionRoute to extension
CONFERENCE_ROOMconference_roomConference RoomRoute to conference
HANGUPhangupHang UpDisconnect call

Methods:

$type->label(): string;
$type->isAiRelated(): bool;

RingGroupStrategy

Call distribution strategies for ring groups.

File: App\Enums\RingGroupStrategy Table Column: ring_groups.strategy

CaseValueDescription
SIMULTANEOUSsimultaneousRing all members at once
ROUND_ROBINround_robinRotate through members
SEQUENTIALsequentialRing in order until answered

RingGroupStatus

Ring group operational states.

File: App\Enums\RingGroupStatus Table Column: ring_groups.status

CaseValueDescription
ACTIVEactiveOperational
INACTIVEinactiveDisabled

RingGroupFallbackAction

Actions when ring group fails.

File: App\Enums\RingGroupFallbackAction Table Column: ring_groups.fallback_action

CaseValueDescription
VOICEMAILvoicemailSend to voicemail
EXTENSIONextensionRoute to extension
FORWARDforwardForward externally
HANGUPhangupDisconnect

AI Integration Enums

AiAssistantStatus

AI assistant operational states.

File: App\Enums\AiAssistantStatus Table Column: ai_assistants.status

CaseValueDescription
ACTIVEactiveReady to receive calls
INACTIVEinactiveDisabled
MAINTENANCEmaintenanceUnder maintenance

AlbsStrategy

Load balancer distribution strategies.

File: App\Enums\AlbsStrategy Table Column: ai_assistant_load_balancers.strategy

CaseValueDescription
ROUND_ROBINround_robinRotate through assistants
WEIGHTED_RANDOMweighted_randomRandom based on weights
SEQUENTIALsequentialTry in order

AlbsStatus

Load balancer states.

File: App\Enums\AlbsStatus Table Column: ai_assistant_load_balancers.status

CaseValueDescription
ACTIVEactiveOperational
INACTIVEinactiveDisabled

User & Organization Enums

UserRole

Role-based access control levels.

File: App\Enums\UserRole Table Column: users.role

CaseValueLevelDescription
OWNERowner1Full organization access
PBX_ADMINpbx_admin2PBX configuration access
PBX_USERpbx_user3Basic PBX usage
REPORTERreporter4View-only access

Methods:

$role->level(): int;              // Numeric level (1-4)
$role->can(string $permission): bool;
$role->label(): string; // "Owner", "PBX Admin", etc.

UserStatus

User account states.

File: App\Enums\UserStatus Table Column: users.status

CaseValueDescription
ACTIVEactiveCan log in
INACTIVEinactiveSuspended

OrganizationStatus

Organization operational states.

File: App\Enums\OrganizationStatus Table Column: organizations.status

CaseValueDescription
ACTIVEactiveNormal operation
SUSPENDEDsuspendedAccess restricted

Call & Logging Enums

CallStatus

Call session states.

File: App\Enums\CallStatus

CaseValueDescription
INITIATEDinitiatedCall created
RINGINGringingDestination ringing
ANSWEREDansweredCall connected
COMPLETEDcompletedCall ended normally
FAILEDfailedCall failed

CallDisposition

Final call outcomes.

File: App\Enums\CallDisposition

CaseValueDescription
ANSWEREDansweredHuman answered
COMPLETEDcompletedSuccessful completion
BUSYbusyLine busy
NO_ANSWERno_answerNo answer
FAILEDfailedTechnical failure
CANCELLEDcancelledCancelled
CONGESTIONcongestionNetwork congestion

Business Hours Enums

BusinessHoursStatus

Business hours configuration states.

File: App\Enums\BusinessHoursStatus

CaseValueDescription
ACTIVEactiveIn use
INACTIVEinactiveNot in use

BusinessHoursActionType

Actions when business hours are closed.

File: App\Enums\BusinessHoursActionType

CaseValueDescription
VOICEMAILvoicemailSend to voicemail
FORWARDforwardForward to number
MESSAGEmessagePlay message
HANGUPhangupDisconnect

BusinessHoursExceptionType

Types of schedule exceptions.

File: App\Enums\BusinessHoursExceptionType

CaseValueDescription
HOLIDAYholidayPublic holiday
SPECIALspecialSpecial event
MAINTENANCEmaintenanceScheduled maintenance

DayOfWeek

Days for scheduling.

File: App\Enums\DayOfWeek

CaseValue
MONDAYmonday
TUESDAYtuesday
WEDNESDAYwednesday
THURSDAYthursday
FRIDAYfriday
SATURDAYsaturday
SUNDAYsunday

Methods:

$day->label(): string;        // "Monday"
$day->shortLabel(): string; // "Mon"
$day->isWeekend(): bool;

Security Enums

InboundBlacklistMatchType

Pattern matching strategies.

File: App\Enums\InboundBlacklistMatchType Table Column: inbound_blacklists.match_type

CaseValueDescription
EXACTexactExact number match
PREFIXprefixStarts with pattern
WILDCARDwildcardPattern with wildcards

InboundBlacklistRejectionStrategy

How to handle blocked calls.

File: App\Enums\InboundBlacklistRejectionStrategy

CaseValueDescription
HANGUPhangupSilent hangup
BUSYbusyPlay busy tone
MESSAGEmessagePlay rejection message

InboundBlacklistStatus

Blacklist entry states.

File: App\Enums\InboundBlacklistStatus

CaseValueDescription
ACTIVEactiveBlocking calls
INACTIVEinactiveNot enforced

WhitelistStatus

Whitelist entry states.

File: App\Enums\WhitelistStatus Table Column: outbound_whitelists.status

CaseValueDescription
ACTIVEactiveRule active
INACTIVEinactiveRule disabled

IVR Enums

IvrMenuStatus

IVR menu states.

File: App\Enums\IvrMenuStatus

CaseValueDescription
ACTIVEactiveOperational
INACTIVEinactiveDisabled

IvrDestinationType

IVR option routing types.

File: App\Enums\IvrDestinationType

CaseValueDescription
AI_ASSISTANTai_assistantRoute to AI
AI_LOAD_BALANCERai_load_balancerRoute to ALBS
EXTENSIONextensionRoute to extension
RING_GROUPring_groupRoute to ring group
IVR_MENUivr_menuSub-menu
CONFERENCE_ROOMconference_roomConference
HANGUPhangupDisconnect

Using Enums

In Code

use App\Enums\CampaignStatus;
use App\Enums\CallerIdStrategy;

// Create from value
$status = CampaignStatus::from('active');

// Create safely (returns null if invalid)
$status = CampaignStatus::tryFrom($value);

// Get all cases
$allStatuses = CampaignStatus::cases();

// Get value and label
$value = $status->value; // "active"
$label = $status->label(); // "Running"

// Comparisons
if ($status === CampaignStatus::ACTIVE) {
// Campaign is running
}

// Match expression
$canEdit = match($status) {
CampaignStatus::DRAFT, CampaignStatus::PAUSED => true,
default => false,
};

In Validation

// Form Request
public function rules(): array
{
return [
'status' => ['required', Rule::enum(CampaignStatus::class)],
'caller_id_strategy' => ['required', Rule::enum(CallerIdStrategy::class)],
];
}

In Database Queries

// Query by enum value
$campaigns = AutoDialerCampaign::where('status', CampaignStatus::ACTIVE->value)->get();

// Using scope with enum
$campaigns = AutoDialerCampaign::whereStatus(CampaignStatus::ACTIVE)->get();