Extension Status Module Documentation
Table of Contents
- Module Overview (Technical)
- Module Overview (Commercial/Business)
- Module Overview (End User/Administrator)
- Status Indicators Reference
- Operation Flow / Logic Explanation
- Common Scenarios & Examples
- Limitations & Important Notes
- Troubleshooting Tips
- Glossary
- Suggested UI Improvements
---
1. Module Overview (Technical)
What Is Extension Status?
Extension Status is a monitoring and quick-configuration dashboard that displays all extensions with their call forwarding status at a glance. Administrators can quickly toggle forwarding features on/off directly from the grid without navigating to individual extension settings.
Architecture
Key Tables
| Table | Purpose | |
|---|---|---|
public.sip_extensions | Extension data with enabled/disabled status | |
public.call_forwardings | Call forwarding configuration per extension | |
public.personal_assistants | Personal Assistant key mappings | |
public.time_groups | Time-based forwarding schedules |
FreeSWITCH Integration
The module queries FreeSWITCH via ESL to get real-time device registration status:
This returns:
- Device IP address and port
- User-Agent string (phone model)
- Registration status (Registered/Reachable/Unknown)
Key Files
| File | Description | |
|---|---|---|
admin/apps/api/src/modules/telephony/extension-status/service.ts | Backend service with toggle/update logic | |
admin/apps/web/src/modules/extensionStatus/ExtensionStatusPage.tsx | Main dashboard grid | |
admin/apps/web/src/modules/extensionStatus/EditStatusModal.tsx | Detailed configuration modal | |
admin/apps/web/src/modules/extensionStatus/DevicesModal.tsx | Device registration viewer |
2. Module Overview (Commercial/Business)
Business Value
Extension Status provides operational visibility that reduces support calls:
| Without Extension Status | With Extension Status | |
|---|---|---|
| Users call IT: "My calls aren't coming through" | Admin checks grid: "DND is enabled" | |
| Time to diagnose: 10-15 minutes | Time to diagnose: 5 seconds | |
| Requires accessing individual extension | All statuses visible at once |
Use Cases
- Helpdesk Support
- Toggle off accidental DND without editing extension
- Supervisor Oversight
- Ensure critical extensions are not forwarding away
- Compliance Auditing
- Document extension configurations
- Device Troubleshooting
- Check User-Agent for phone model information
Feature Highlights
- One-Click Toggle: Enable/disable any forwarding type directly from grid
- Visual Status: Green checkmarks vs gray circles instantly show state
- Bulk Visibility: See all extensions' status without navigation
- Device Info: View registered phones and their network details
- Time-Based Rules: Configure forwarding by time groups
---
3. Module Overview (End User/Administrator)
What Can You Do?
- View Status Grid: See all extensions with their forwarding status
- Toggle Features: Click any status indicator to enable/disable
- View Devices: See which phones are registered for each extension
- Edit Details: Open modal for full forwarding configuration
User Workflow
Quick Tips
---
4. Status Indicators Reference
Forwarding Types
| Abbreviation | Full Name | Description | When Calls Forward | |
|---|---|---|---|---|
| Boss/Secretary | Boss/Secretary Mode | Routes calls through a secretary extension first | All incoming calls | |
| PA | Personal Assistant | IVR menu that asks caller to press keys for different actions | When enabled | |
| FM | Follow-Me | Rings additional destinations (mobile, home) after the extension | After primary ring timeout | |
| DND | Do Not Disturb | Rejects or forwards all calls immediately | All incoming calls | |
| CFI | Call Forward Immediate | Always forwards to a destination | All incoming calls immediately | |
| CFB | Call Forward Busy | Forwards when extension is on a call | When busy | |
| CFN | Call Forward No Answer | Forwards after ring timeout | After [X] seconds no answer | |
| CFU | Call Forward Unreachable | Forwards when device is not registered | When device offline | |
| CC | Call Completion | Enables callback when called extension becomes available | When target was busy/unavailable |
Status Indicator States
| Visual | State | Meaning | |
|---|---|---|---|
| ✓ (Green) | Enabled | Feature is active—calls will be affected | |
| ○ (Gray) | Disabled | Feature is off—no effect on calls | |
| ↻ (Spinning) | Loading | Toggle request in progress |
Forwarding Priority
When multiple forwarding types are enabled, they are processed in this order:
If DND or CFI is enabled, calls bypass most other forwarding logic.
---
5. Operation Flow / Logic Explanation
Toggle Operation Flow
Device Registration Query Flow
---
6. Common Scenarios & Examples
Scenario 1: User Can't Receive Calls
Issue: User reports "my phone doesn't ring"Scenario 2: Verify Device Registration
Issue: User's phone may be offlineScenario 3: Configure After-Hours Forwarding
Issue: Executive needs calls forwarded to mobile after 6 PM---
7. Limitations & Important Notes
Technical Limitations
Best Practices
- Train Users: Explain what each forwarding type does to avoid accidental self-lockouts
- Check DND First: 90% of "can't receive calls" issues are DND enabled
- Use Time Groups: Instead of manually toggling, use time-based rules
- Document Changes: Note why forwarding was enabled for future reference
Security Considerations
---
8. Troubleshooting Tips
Common Issues
| Symptom | Possible Cause | Solution | |
|---|---|---|---|
| Toggle doesn't update | Database constraint | Check call_forwardings table has row for extension | |
| "Devices not found" | ESL connection failed | Verify FreeSWITCH is running and ESL port accessible | |
| Status shows enabled but calls don't forward | Destination not configured | Open Edit modal and verify destination is set | |
| All statuses gray | extension_id mismatch | Verify call_forwardings.sip_extension_id matches |
Diagnostic SQL
Check forwarding configuration: Check if call_forwardings row exists: Manual toggle via SQL (emergency):ESL Diagnostic Commands
---
9. Glossary
| Term | Definition | |
|---|---|---|
| DND | Do Not Disturb - blocks all incoming calls | |
| CFI | Call Forward Immediate - unconditionally forwards all calls | |
| CFB | Call Forward Busy - forwards when extension is on a call | |
| CFN | Call Forward No Answer - forwards after ring timeout | |
| CFU | Call Forward Unreachable - forwards when device is offline | |
| Follow-Me | Rings additional destinations (mobile, etc.) after the primary phone | |
| Personal Assistant | IVR menu for callers to choose where to route their call | |
| Boss/Secretary | Routes calls through a secretary before reaching the boss | |
| Call Completion | Automatically calls back when a previously busy extension becomes free | |
| Time Group | Schedule definition for when forwarding rules apply (e.g., "After Hours") | |
| ESL | Event Socket Library - FreeSWITCH API for real-time commands | |
| User-Agent | String identifying the phone model (e.g., "Grandstream GXP2170/1.0.5.15") |
10. Suggested UI Improvements
Tooltip Improvements
| Column | Current Tooltip | Suggested Tooltip | |
|---|---|---|---|
| CFI | "CFI" | "Call Forward Immediate - Forwards ALL calls unconditionally. Use with caution!" | |
| CFB | "CFB" | "Call Forward Busy - Forwards calls when you're already on another call." | |
| CFN | "CFN" | "Call Forward No Answer - Forwards if you don't answer within the ring timeout." | |
| CFU | "CFU" | "Call Forward Unreachable - Forwards if your phone is offline or not registered." | |
| DND | "DND" | "Do Not Disturb - Blocks ALL incoming calls. Your phone won't ring." |
UX Enhancements
- Confirmation for DND/CFI: Add confirmation dialog before enabling these (they have major impact)
- Batch Toggle: Select multiple extensions and toggle a feature for all at once
- Status Legend: Add a legend/key explaining what each abbreviation means
- Last Changed: Show timestamp of when status was last modified
- Destination Preview: Show forwarding destination on hover without opening modal
- Export Status: Button to export grid as CSV for auditing
Column Visibility Defaults
Consider defaulting some less common columns to hidden:
- Call Completion (rarely used)
- Boss/Secretary (enterprise feature)
Users can show them via column toggle if needed.
Color Enhancements
| Current | Suggested | Reason | |
|---|---|---|---|
| Green for enabled | Red for DND enabled | DND is a "block" action, should feel different | |
| Same green for all | Orange for CFI | CFI is unconditional forward, warrants attention |
Glossary
| Term | Definition |
|---|---|
| Extension Status | Real-time registration and call state of a SIP endpoint |
Lua Script Status ℹ️
Integration Module
| Component | Status | Notes |
|---|---|---|
| Extension Status | ℹ️ Configuration module | Registration status retrieved via ESL/Event Socket |