Skip to main content

Enumerations

OPBX uses PHP 8.1+ backed enums for fixed value sets.

Auto Dialer Enums​

CallerIdStrategy​

Distribution strategy for Caller ID pools.

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

CaseValueDescription
ROUND_ROBINround_robinCycle through Caller IDs sequentially (weighted by pool weight)
RANDOMrandomWeighted random selection
LEAST_RECENTLY_USEDleast_recently_usedSelect the least recently used Caller ID (ignores weight)

CampaignStatus​

Campaign lifecycle states.

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

CaseValueDescription
DRAFTdraftInitial configuration
ACTIVEactiveCurrently dialing
PAUSEDpausedTemporarily stopped
COMPLETEDcompletedAll destinations processed
ARCHIVEDarchivedArchived; cannot be started or take a list

canStart() is true for draft and paused, canPause() and isRunnable() only for active, and canAcceptList() for draft, paused and active.

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
CONNECTEDconnectedCall connected
COMPLETEDcompletedSuccessfully completed
FAILEDfailedFailed
INVALIDinvalidInvalid number

AmdMode​

Answering Machine Detection modes.

File: App\Enums\AmdMode
Table Column: none. No model casts to this enum and no column stores it in the current code.

CaseValueDescription
ENABLEDEnabledDetect human or machine
DETECT_MESSAGE_ENDDetectMessageEndWait for greeting to end

ListStatus​

Distribution list states.

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

CaseValueDescription
DRAFTdraftCreating/uploading
PENDINGpendingAwaiting processing
PROCESSINGprocessingCSV being processed
READYreadyAvailable for use
FAILEDfailedUpload/processing failed
IN_USEin_useAssigned to campaign
USEDusedCampaign completed
ARCHIVEDarchivedNo longer used (final state)

A list can be assigned to a campaign only when ready; destinations can be uploaded in draft, pending and failed; in_use and used lists are locked; ready, failed and used lists can be archived; ready and used lists can get a new version; ready, in_use, used and archived lists can be copied.

Core PBX Enums​

ExtensionType​

Types of PBX extensions.

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

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

The extensions.type column also allows virtual, which has no enum case.

RoutingDestinationType​

Where an answered auto-dialer call is sent.

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

CaseValueDescription
AI_ASSISTANTai_assistantRoute to AI assistant
AI_LOAD_BALANCERai_load_balancerRoute via load balancer
RING_GROUPring_groupRoute to a ring group
CALL_QUEUEcall_queueRoute to a call queue
HANGUPhangupDisconnect call

RingGroupStrategy​

Call distribution strategies.

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

CaseValueDescription
SIMULTANEOUSsimultaneousRing all members at once (label "Ring All (Simultaneous)")
ROUND_ROBINround_robinDistribute calls evenly across members
SEQUENTIALsequentialTry members one after another (label "Sequential (Hunt Group)")

RingGroupStatus​

Ring group states.

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

CaseValueDescription
ACTIVEactiveOperational
INACTIVEinactiveDisabled

RingGroupFallbackAction​

Actions when a ring group fails. The enum is also the cast for call_queues.fallback_action and ai_assistant_load_balancers.fallback_action. The call_queues.fallback_action column has no call_queue value: a queue cannot overflow to another queue.

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

CaseValueDescription
EXTENSIONextensionForward to extension
RING_GROUPring_groupForward to ring group
IVR_MENUivr_menuForward to IVR menu
AI_ASSISTANTai_assistantForward to AI assistant
AI_LOAD_BALANCERai_load_balancerForward to AI load balancer
CALL_QUEUEcall_queueForward to call queue
HANGUPhangupEnd call
UNAVAILABLEunavailableSay "Destination doesn't exist" and hang up. Set when the target (for example a deleted user's extension) is gone

AI Integration Enums​

AiAssistantStatus​

AI assistant states.

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

CaseValueDescription
ACTIVEactiveReady to receive calls
INACTIVEinactiveDisabled

AlbsStrategy​

Load balancer distribution strategies.

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

CaseValueDescription
ROUND_ROBINround_robinDistribute calls evenly across the assistants in sequence
PRIORITYpriorityAlways route to the highest-priority (lowest number) assistant
PERCENTAGEpercentageRoute by the configured weight percentages

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.

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

CaseValueDescription
OWNERownerFull organization access
PBX_ADMINpbx_adminPBX configuration access
SUPERVISORsupervisorScoped read-only monitoring + live call coaching
PBX_USERpbx_userBasic PBX usage
REPORTERreporterView-only access

UserStatus​

User account states.

File: App\Enums\UserStatus
Table Columns: users.status; also cast on extensions.status and conference_rooms.status

CaseValueDescription
ACTIVEactiveCan log in
INACTIVEinactiveSuspended
PENDINGpendingInvitation pending activation

OrganizationStatus​

Organization states.

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

CaseValueDescription
ACTIVEactiveNormal operation
SUSPENDEDsuspendedAccess restricted
DELETEDdeletedMarked deleted

The tenant.scope middleware rejects API requests from users of a suspended organization ("Your organization has been suspended.") or a deleted one ("Organization is not active.") with 403. Organizations also use Laravel soft deletes (deleted_at).

Call & Logging Enums​

CallStatus​

Call session states.

File: App\Enums\CallStatus
Table Column: call_logs.status

CaseValueDescription
INITIATEDinitiatedCall created
RINGINGringingDestination ringing
ANSWEREDansweredCall connected
COMPLETEDcompletedCall ended normally
BUSYbusyBusy signal
NO_ANSWERno_answerNo answer
FAILEDfailedCall failed

Business Hours Enums​

BusinessHoursStatus​

Schedule states.

File: App\Enums\BusinessHoursStatus
Table Column: business_hours_schedules.status

CaseValueDescription
ACTIVEactiveIn use
INACTIVEinactiveNot in use

BusinessHoursActionType​

Actions for business hours routing.

File: App\Enums\BusinessHoursActionType
Table Columns: business_hours_schedules.open_hours_action_type, business_hours_schedules.closed_hours_action_type

CaseValueDescription
EXTENSIONextensionRoute to extension
RING_GROUPring_groupRoute to ring group
CONFERENCE_ROOMconference_roomRoute to conference room
IVR_MENUivr_menuRoute to IVR menu
AI_ASSISTANTai_assistantRoute to AI assistant
AI_LOAD_BALANCERai_load_balancerRoute to AI load balancer
CALL_QUEUEcall_queueRoute to call queue
UNAVAILABLEunavailableSay "Destination doesn't exist" and hang up. Set when the target (for example a deleted user's extension) is gone

BusinessHoursExceptionType​

Schedule exception types.

File: App\Enums\BusinessHoursExceptionType
Table Column: business_hours_exceptions.type

CaseValueDescription
CLOSEDclosedClosed all day
SPECIAL_HOURSspecial_hoursSpecial operating hours

DayOfWeek​

Days for scheduling.

File: App\Enums\DayOfWeek
Table Column: business_hours_schedule_days.day_of_week

CaseValue
MONDAYmonday
TUESDAYtuesday
WEDNESDAYwednesday
THURSDAYthursday
FRIDAYfriday
SATURDAYsaturday
SUNDAYsunday

Security Enums​

InboundBlacklistMatchType​

Pattern matching strategies.

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

CaseValueDescription
EXACTexactExact match
PREFIXprefixStarts with pattern
WILDCARDwildcardfnmatch pattern

InboundBlacklistRejectionStrategy​

How blocked calls are handled.

File: App\Enums\InboundBlacklistRejectionStrategy
Table Columns: inbound_blacklists.rejection_strategy, blocked_call_logs.rejection_strategy

CaseValueDescription
DROPdropHang up immediately, without a message
REJECTrejectPlay "Your call has been rejected", then hang up
TORMENTtormentPut the caller in a random conference room with hold music

InboundBlacklistStatus​

Blacklist entry states.

File: App\Enums\InboundBlacklistStatus
Table Column: inbound_blacklists.status

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
Table Column: ivr_menus.status

CaseValueDescription
ACTIVEactiveOperational
INACTIVEinactiveDisabled

IvrDestinationType​

IVR option routing types.

File: App\Enums\IvrDestinationType
Table Column: ivr_menu_options.destination_type

CaseValueDescription
EXTENSIONextensionRoute to extension
RING_GROUPring_groupRoute to ring group
CONFERENCE_ROOMconference_roomRoute to conference room
IVR_MENUivr_menuSub-menu
BUSINESS_HOURSbusiness_hoursBusiness hours schedule
AI_ASSISTANTai_assistantRoute to AI assistant
AI_LOAD_BALANCERai_load_balancerRoute to AI load balancer
CALL_QUEUEcall_queueRoute to call queue
HANGUPhangupEnd call
UNAVAILABLEunavailableSay "Destination doesn't exist" and hang up. Set when the target (for example a deleted user's extension) is gone

ivr_menus.failover_destination_type is cast to the same enum. The columns do not allow every case: ivr_menu_options.destination_type has no hangup, and ivr_menus.failover_destination_type has no business_hours.

Call Queue Enums​

CallQueueStatus​

File: App\Enums\CallQueueStatus
Table Column: call_queues.status

CaseValueDescription
ACTIVEactiveAccepts calls
INACTIVEinactiveDisabled

CallQueueStrategy​

File: App\Enums\CallQueueStrategy
Table Column: call_queues.strategy

CaseValueDescription
RING_ALLring_allRing every available agent
ROUND_ROBINround_robinRotate through the agents
LEAST_TALK_TIMEleast_talk_timeAgent with the least total talk time
FEWEST_CALLSfewest_callsAgent who handled the fewest calls

QueueCallDisposition​

File: App\Enums\QueueCallDisposition
Table Column: queue_calls.disposition

CaseValueDescription
ANSWEREDansweredAn agent took the call
ABANDONEDabandonedThe caller hung up while waiting
OVERFLOWoverflowMax wait reached; sent to the fallback

Agent states (AVAILABLE, BUSY, WRAP_UP, LOGGED_OUT) are not a PHP enum; they live in the ACD worker.

Platform Enums​

PlatformHealthStatus​

File: App\Enums\PlatformHealthStatus
Table Column: platform_health_checks.status (a varchar column; the model does not cast it)

CaseValueDescription
OKokHealthy
DEGRADEDdegradedSlow or over a threshold
DOWNdownFailing
UNKNOWNunknownOptional component not running (Loki, Grafana). Never outranks a real failure

OrganizationJoinRequestStatus​

File: App\Enums\OrganizationJoinRequestStatus
Table Column: organization_join_requests.status

CaseValueDescription
PENDINGpendingWaiting for an Owner or PBX Admin
APPROVEDapprovedUser joined the organization
REJECTEDrejectedRequest declined

SocialIdentityProvider​

File: App\Enums\SocialIdentityProvider
Table Columns: user_social_identities.provider, organization_join_requests.provider

CaseValueDescription
GOOGLEgoogleGoogle
FACEBOOKfacebookFacebook
MICROSOFTmicrosoftMicrosoft
GITHUBgithubGitHub
XxX (Twitter)

API Key Enums​

ApiKeyPermissionLevel​

File: App\Enums\ApiKeyPermissionLevel
Table Column: api_key_permissions.level

CaseValueDescription
READreadRead-only access to the resource
WRITEwriteRead and write access

GrantableResource​

The resources an API key may be granted. The value is the resource slug, which matches the route-name prefix in routes/api.php.

File: App\Enums\GrantableResource

users, extensions, conference-rooms, ai-assistants, ai-assistant-providers, ring-groups, call-queues, queue-calls, ai-assistant-load-balancers, ivr-menus, business-hours, phone-numbers, outbound-whitelist, inbound-blacklist, call-detail-records, recordings, supervisors, auto-dialer-campaigns, distribution-lists, session-updates, call-notifications, dashboard, trunks.

EmbedIconPosition​

File: App\Enums\EmbedIconPosition
Table Column: user_embed_tokens.icon_position

Where the embeddable dialer's launcher icon sits: bottom-right, bottom-left, top-right, top-left.

Column Enums Without a PHP Enum​

These columns are MySQL enum columns, but the model does not cast them to a PHP enum:

ColumnValues
did_numbers.routing_typeextension, ring_group, business_hours, conference_room, ai_assistant, ai_load_balancer, ivr_menu, call_queue, unavailable
did_numbers.status, recordings.status, ai_assistant_load_balancer_members.statusactive, inactive
organizations.statusactive, suspended, deleted (the values of OrganizationStatus)
ai_assistants.protocolsip, websocket, dummy
auto_dialer_campaigns.destination_connectconnected, immediately
auto_dialer_call_sessions.statusinitiated, ringing, answered, completed, failed
auto_dialer_call_sessions.amd_resulthuman, voicemail, unknown
call_detail_records.recording_statusnone, pending, available, failed
call_logs.directioninbound, outbound
call_notifications_settings.auth_methodhmac_sha256, bearer_token, basic_auth, none (the API accepts only the last three)
cloudonix_settings.call_recording_modedisabled, inbound, outbound, internal, inbound_outbound, all
cloudonix_settings.recording_formatwav, mp3
email_logs.statusqueued, sent, delivered, bounced, failed
recordings.typeupload, remote
session_updates.directionincoming, outgoing, internal, application

Using Enums​

use App\Enums\CampaignStatus;

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

// Safely
$status = CampaignStatus::tryFrom($value);

// All cases
$all = CampaignStatus::cases();

// Value and label
$value = $status->value;
$label = $status->label();

// Validation
Rule::enum(CampaignStatus::class)