Skip to main content

CallLog Model

The CallLog model represents a call activity record. It tracks the lifecycle of calls from initiation to completion.

Overview

PropertyValue
NamespaceApp\Models
Tablecall_logs
Primary Keyid
Global ScopeOrganizationScope

Database Schema

ColumnTypeNullableDescription
idbigint unsignedNoPrimary key
organization_idbigint unsignedNoOrganization ID
call_idvarchar(255)NoUnique call identifier from Cloudonix
directionenum(inbound,outbound)NoCall direction
from_numbervarchar(50)NoCaller number
to_numbervarchar(50)NoCalled number
did_idbigint unsignedYesAssociated DID number ID
extension_idbigint unsignedYesAssociated extension ID
ring_group_idbigint unsignedYesAssociated ring group ID
statusvarchar(50)NoCallStatus enum
initiated_atdatetimeYesCall initiation time
answered_atdatetimeYesCall answer time
ended_atdatetimeYesCall end time
durationintYesCall duration in seconds
recording_urlvarchar(500)YesURL to call recording
cloudonix_cdrjsonYesRaw Cloudonix CDR data
created_attimestampNoCreation timestamp
updated_attimestampNoUpdate timestamp

Attributes

Fillable

protected $fillable = [
'organization_id',
'call_id',
'direction',
'from_number',
'to_number',
'did_id',
'extension_id',
'ring_group_id',
'status',
'initiated_at',
'answered_at',
'ended_at',
'duration',
'recording_url',
'cloudonix_cdr',
];

Casts

AttributeCastDescription
statusCallStatus::classCall status enum
initiated_atdatetimeCarbon instance
answered_atdatetimeCarbon instance
ended_atdatetimeCarbon instance
durationintegerInteger cast
cloudonix_cdrarrayJSON data

Relationships

Belongs To

  • organization() → Organization
  • didNumber() → DidNumber
  • extension() → Extension
  • ringGroup() → RingGroup

Methods

Status Checking

isActive(): bool

Check if the call is currently active.

if ($callLog->isActive()) {
// Call is in progress
}

isCompleted(): bool

Check if the call has completed (terminal status).

if ($callLog->isCompleted()) {
// Call has ended
}

Call Statuses

StatusDescription
initiatedCall has been initiated
ringingCall is ringing
answeredCall has been answered
completedCall completed successfully
missedCall was not answered
busyLine was busy
failedCall failed
no_answerNo answer from destination

Usage Examples

Creating a Call Log

use App\Models\CallLog;
use App\Enums\CallStatus;

$callLog = CallLog::create([
'organization_id' => $orgId,
'call_id' => 'CA550e8400e29b41d4a716446655440000',
'direction' => 'inbound',
'from_number' => '+1234567890',
'to_number' => '+1987654321',
'did_id' => $didId,
'status' => CallStatus::INITIATED,
'initiated_at' => now(),
]);

Updating Call Status

$callLog->update([
'status' => CallStatus::ANSWERED,
'answered_at' => now(),
'extension_id' => $extensionId,
]);

Completing a Call

$callLog->update([
'status' => CallStatus::COMPLETED,
'ended_at' => now(),
'duration' => $seconds,
'recording_url' => $recordingUrl,
]);