Skip to main content

DidNumber Model

The DidNumber model represents a Direct Inward Dialing (DID) phone number that can be routed to various destinations within the PBX.

Overview

PropertyValue
NamespaceApp\Models
Tabledid_numbers
Primary Keyid
Global ScopeOrganizationScope

Database Schema

ColumnTypeNullableDefaultDescription
idbigint unsignedNoautoPrimary key
organization_idbigint unsignedNo-Foreign key to organizations
phone_numbervarchar(50)No-Phone number in E.164 format
friendly_namevarchar(255)YesnullDisplay name/label
routing_typevarchar(50)No-Type of routing destination
routing_configjsonYesnullRouting configuration
statusvarchar(50)Noactiveactive/inactive
cloudonix_configjsonYesnullCloudonix-specific configuration
created_attimestampNo-Creation timestamp
updated_attimestampNo-Last update timestamp

Routing Types

TypeDescriptionConfig Key
extensionRoute to extensionextension_id
ring_groupRoute to ring groupring_group_id
business_hoursRoute via business hoursbusiness_hours_schedule_id
conference_roomRoute to conferenceconference_room_id
ai_assistantRoute to AI assistantai_assistant_id
ivr_menuRoute to IVR menuivr_menu_id
ai_load_balancerRoute to AI load balancerai_load_balancer_id

Attributes

Fillable

protected $fillable = [
'organization_id',
'phone_number',
'friendly_name',
'routing_type',
'routing_config',
'status',
'cloudonix_config',
];

Casts

AttributeCastDescription
routing_configarrayJSON routing configuration
cloudonix_configarrayJSON Cloudonix config

Relationships

Belongs To

  • organization() → Organization

Dynamic Accessors

These are not true Eloquent relationships but computed accessors:

  • extension → Extension (if routing_type = 'extension')
  • ringGroup → RingGroup (if routing_type = 'ring_group')
  • businessHoursSchedule → BusinessHoursSchedule
  • conferenceRoom → ConferenceRoom
  • aiAssistant → AiAssistant
  • ivrMenu → IvrMenu
  • aiLoadBalancer → AiAssistantLoadBalancer

Methods

Routing Target Methods

  • getTargetId($routingType, $configKey): ?int
  • getTargetExtensionId(): ?int
  • getTargetRingGroupId(): ?int
  • getTargetBusinessHoursId(): ?int
  • getTargetConferenceRoomId(): ?int
  • getTargetAiAssistantId(): ?int
  • getTargetIvrMenuId(): ?int
  • getTargetAiLoadBalancerId(): ?int

Status

  • isActive(): bool

Setters (for eager loading)

  • setExtension(?Extension $extension)
  • setRingGroup(?RingGroup $ringGroup)
  • setBusinessHoursSchedule(?BusinessHoursSchedule $schedule)
  • setConferenceRoom(?ConferenceRoom $conferenceRoom)
  • setAiAssistant(?AiAssistant $aiAssistant)
  • setIvrMenu(?IvrMenu $ivrMenu)
  • setAiLoadBalancer(?AiAssistantLoadBalancer $aiLoadBalancer)

Usage Example

$did = DidNumber::create([
'organization_id' => $orgId,
'phone_number' => '+1987654321',
'friendly_name' => 'Main Line',
'routing_type' => 'ring_group',
'routing_config' => ['ring_group_id' => 5],
'status' => 'active',
]);

// Get routing target
$ringGroupId = $did->getTargetRingGroupId();