CallStatus Enum
The CallStatus enum defines the possible states of a call throughout its lifecycle.
Definition
namespace App\Enums;
enum CallStatus: string
{
case INITIATED = 'initiated';
case RINGING = 'ringing';
case ANSWERED = 'answered';
case COMPLETED = 'completed';
case BUSY = 'busy';
case NO_ANSWER = 'no_answer';
case FAILED = 'failed';
}
Values
| Value | Description |
|---|---|
initiated | Call has been initiated |
ringing | Call is ringing at destination |
answered | Call has been answered |
completed | Call completed successfully |
busy | Destination was busy |
no_answer | No answer from destination |
failed | Call failed |
Methods
isTerminal(): bool
Check if the call has reached a terminal (final) state.
CallStatus::COMPLETED->isTerminal(); // true
CallStatus::BUSY->isTerminal(); // true
CallStatus::INITIATED->isTerminal(); // false
Terminal states: completed, busy, no_answer, failed
isActive(): bool
Check if the call is currently active.
CallStatus::ANSWERED->isActive(); // true
CallStatus::RINGING->isActive(); // true
CallStatus::COMPLETED->isActive(); // false
Active states: initiated, ringing, answered
Call Lifecycle
initiated → ringing → answered → completed
↓ ↓ ↓
failed busy no_answer
Usage Example
use App\Enums\CallStatus;
use App\Models\CallLog;
// Create new call log
$call = CallLog::create([
'call_id' => 'CA123',
'from_number' => '+1234567890',
'to_number' => '+1987654321',
'status' => CallStatus::INITIATED,
]);
// Update as call progresses
$call->update(['status' => CallStatus::RINGING]);
$call->update(['status' => CallStatus::ANSWERED]);
$call->update(['status' => CallStatus::COMPLETED]);
// Check if call is still active
if ($call->status->isActive()) {
// Show in active calls list
}
// Check if call has ended
if ($call->status->isTerminal()) {
// Generate CDR
}
Database Storage
Stored as VARCHAR(50) in the database:
status VARCHAR(50) NOT NULL
Used By
- CallLog model