Ctrl K
ring2all.com

Direct Dial Module Documentation

Table of Contents

  1. Module Overview (Technical)
  2. Module Overview (Commercial/Business)
  3. Module Overview (End User/Administrator)
  4. Configuration Fields Reference
  5. Call Flow / Logic Explanation
  6. Common Scenarios & Examples
  7. Limitations & Important Notes
  8. Troubleshooting Tips
  9. Glossary
  10. Suggested UI Improvements

---

1. Module Overview (Technical)

What Is Direct Dial?

Direct Dial is a routing shortcut mechanism that maps feature codes (like 8050 or 8050) to specific destinations in the PBX. It provides quick-access shortcuts to any module in the system without requiring users to remember complex extension numbers.

Architecture

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Direct Dial System                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  User dials: *8050                                              │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Direct Dial Dialplan Lookup                 │   │
│  │  SELECT * FROM direct_dials WHERE code = '*8050'         │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Route Based on Module                       │   │
│  │                                                          │   │
│  │  ├─ extension  → Dial extension (e.g., 1001)             │   │
│  │  ├─ ivr        → Send to IVR menu (e.g., main_menu)      │   │
│  │  ├─ queue      → Send to call queue (e.g., support)      │   │
│  │  ├─ conference → Join conference room (e.g., 8000)       │   │
│  │  ├─ announcement → Play announcement                     │   │
│  │  └─ transfer   → Blind transfer to destination           │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│       │                                                         │
│       ▼                                                         │
│  Call routed to destination                                     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Key Tables

TablePurpose
public.direct_dialsDirect dial code definitions
public.dialplan_applicationsGenerated dialplan entries

Key Files

FileDescription
admin/apps/api/src/modules/telephony/direct-dial/services/Backend service
admin/apps/web/src/modules/directDial/DirectDialFormView.tsxForm view
admin/apps/web/src/i18n/en/directDial.jsonEnglish translations

Destination Modules

ModuleDescriptionExample Value
extensionDirect to an extension1001
ivrSend to IVR menumain_menu
queueSend to call queuesales_queue
conferenceJoin conference room8000
announcementPlay announcementholiday_notice
transferBlind transfer+15551234567
---

2. Module Overview (Commercial/Business)

Business Value

Direct Dial simplifies user experience with memorable shortcuts:

Without Direct DialWith Direct Dial
"Dial 9001235555 for support""Dial 5555 for support"
Users forget long numbersShort memorable codes
Complex dialplan changesSimple UI configuration

Use Cases

  1. Feature Codes
- 22 → Check voicemail

- 67 → Anonymous call

- 72 → Forward calls

  1. Department Shortcuts
-
100 → Reception desk

- 200 → IT Helpdesk

- 300 → HR Department

  1. Emergency/Priority
- 911 → Emergency services

- 99 → Security office

- 77 → Urgent support queue

  1. External Services
-
800 → Company hotline

- 411 → Directory services

- 555 → Conference bridge

Feature Highlights

  • Simple Mapping: Code → Destination in one setting
  • Multiple Targets: Route to any module type
  • Enable/Disable: Quickly toggle without deleting
  • Context Aware: Different codes per domain/context

---

3. Module Overview (End User/Administrator)

What Can You Do?

  • Create feature codes that route to specific destinations
  • Map codes to extensions, IVRs, queues, conferences, or announcements
  • Enable/disable codes without deletion
  • Organize shortcuts by descriptive names

User Workflow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                 Creating a Direct Dial                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. Basic Information                                           │
│     ├─ Code: *5555                                             │
│     ├─ Name: "Support Hotline"                                 │
│     └─ Description: "Routes to support queue"                  │
│                                                                 │
│  2. Destination                                                 │
│     ├─ Module: Queue                                           │
│     └─ Value: support_queue                                    │
│                                                                 │
│  3. Enable: ✓                                                   │
│                                                                 │
│  4. Save → Users can now dial *5555                            │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Quick Tips

TIP
Use Asterisk Prefix: Codes starting with are easy to remember and reduce conflicts with extension numbers.
TIP
Descriptive Names: Use clear names like "IT Helpdesk" instead of "DD1" for easier management.
CAUTION
Code Conflicts: Ensure your direct dial codes don't conflict with existing extensions or feature codes.

---

4. Configuration Fields Reference

Basic Information

FieldDescriptionExampleRequired
CodeDialable feature code8050Yes
NameDescriptive nameMain Menu IVRYes
DescriptionPurpose documentationRoutes to main IVRNo
ContextDialplan contextdefaultYes

Destination

FieldDescriptionOptionsRequired
ModuleTarget module typeextension, ivr, queue, conference, announcement, transferYes
ValueTarget identifierBased on moduleYes

Value Examples by Module

ModuleValue FormatExamples
ExtensionExtension number1001, 2050, 9999
IVRIVR name or IDmain_menu, sales_ivr
QueueQueue namesupport, sales_queue
ConferenceConference extension8000, 9001
AnnouncementAnnouncement IDholiday_hours, closed_notice
TransferPhone number+15551234567, 9001234567

Status

FieldDescriptionDefault
EnabledWhether the code is activeYes
---

5. Call Flow / Logic Explanation

Direct Dial Routing Flow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                  Direct Dial Flow                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. User dials *5555 from their phone                           │
│     │                                                           │
│     ▼                                                           │
│  2. FreeSWITCH dialplan matches direct_dial application         │
│     │                                                           │
│     ▼                                                           │
│  3. Lua handler queries database:                               │
│     SELECT destination_module, destination_value                │
│     FROM direct_dials                                           │
│     WHERE code = '*5555' AND enabled = true                     │
│     │                                                           │
│     ├─ Found → Continue                                        │
│     └─ Not Found → "Number not found" + hangup                 │
│     │                                                           │
│     ▼                                                           │
│  4. Based on destination_module:                                │
│     ├─ extension → session:execute("transfer", "1001 XML")     │
│     ├─ ivr → session:execute("ivr", "main_menu")               │
│     ├─ queue → session:execute("callcenter", "queue@...")      │
│     ├─ conference → session:execute("conference", "8000@...")  │
│     ├─ announcement → play announcement, then hangup           │
│     └─ transfer → session:execute("bridge", "sofia/.../dest")  │
│     │                                                           │
│     ▼                                                           │
│  5. Call proceeds to destination                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

---

6. Common Scenarios & Examples

Scenario 1: Department Hotlines

Create shortcuts for department access:
CodeNameModuleValue
100Receptionextension1000
200IT Supportqueueit_support
300HR Departmentextension3000
400Salesqueuesales_queue

Scenario 2: IVR Access

Create shortcuts to IVR menus:
CodeNameModuleValue
0Main Menuivrmain_menu
1Sales Menuivrsales_ivr
2Support Menuivrsupport_ivr

Scenario 3: Conference Quick Access

One-touch conference joining:
CodeNameModuleValue
8000Daily Standupconferencedaily_standup
8001Team Meetingconferenceteam_room
8002All Handsconferenceall_hands

Scenario 4: External Transfer

Quick access to external numbers:
CodeNameModuleValue
911Emergencytransfer911
411Directorytransfer411
800Company Toll-Freetransfer+18005551234
---

7. Limitations & Important Notes

Technical Limitations

WARNING
Code Uniqueness: Codes must be unique within a domain. Duplicate codes will cause routing failures.
WARNING
Asterisk Conflicts: Some
codes are reserved by FreeSWITCH or telephony standards. Check for conflicts.
IMPORTANT
Dialplan Priority: Direct dial entries are processed in dialplan order. Ensure they don't conflict with higher-priority routes.

Best Practices

  1. Use Consistent Prefixes: All department codes with 1xx, all queues with 2xx, etc.
  2. Document Purpose: Use description field to explain why the code exists
  3. Test Before Deploy: Verify routing works before publishing codes to users
  4. Avoid Numeric-Only: Pure numbers may conflict with extensions

Reserved Codes (Commonly)

CodeStandard Use
67Block Caller ID
69Call Return
72Call Forwarding
73Cancel Forwarding
82Unblock Caller ID
98Voicemail Access
---

8. Troubleshooting Tips

Common Issues

SymptomPossible CauseSolution
"Number not found"Code not in databaseVerify code exists and is enabled
Wrong destinationModule/value mismatchCheck destination module and value
Code not recognizedDialplan not matchingCheck context matches dialplan
Conflict with extensionCode overlapsUse asterisk prefix or different range

Diagnostic SQL

List all direct dials:

Sql
SELECT code, name, destination_module, destination_value, enabled
FROM public.direct_dials
WHERE domain_id = [domain_id]
ORDER BY code;

Check for code conflicts:

Sql
-- Check against extensions
SELECT 'CONFLICT' AS status, dd.code, e.extension
FROM public.direct_dials dd
JOIN public.sip_extensions e ON dd.code = e.extension
WHERE dd.domain_id = [domain_id];

Find disabled codes:

Sql
SELECT code, name, destination_module
FROM public.direct_dials
WHERE enabled = false AND domain_id = [domain_id];

---

9. Glossary

TermDefinition
Direct DialA shortcut code that routes to a specific destination
Feature CodeA dialable code (usually starting with ) that triggers a feature
Destination ModuleThe type of target (extension, IVR, queue, etc.)
Destination ValueThe specific target identifier
ContextDialplan context for routing logic
DialplanFreeSWITCH routing configuration
IVRInteractive Voice Response menu
QueueCall queue for agent distribution
AnnouncementPre-recorded audio message
TransferRedirect call to external number
---

10. Suggested UI Improvements

Enhanced Tooltips

FieldCurrentSuggested
Code"Enter a dialable feature code""Enter a dialable feature code (e.g., 8050). Avoid codes that conflict with extensions or reserved system codes."
Module"Select the destination module type""Select where calls should be routed. Extension = direct user, Queue = wait for agent, IVR = menu system."
Value"Enter the target value""Enter the target identifier. For extensions: number (1001). For IVRs: menu name. For queues: queue name."

UX Enhancements

  1. Conflict Detection: Warn if code conflicts with existing extensions or other direct dials

  1. Module-Specific Value Picker: Instead of free-text value, show dropdown of available destinations based on selected module

  1. Test Button: "Test this code" button that initiates a test call

  1. Bulk Import: CSV import for creating multiple direct dials at once

  1. Usage Stats: Show how often each code is dialed

Visual Improvements

CurrentSuggested
Plain listAdd module icon (phone, menu, queue, conference)
Simple toggleColored status badge (green/red)
Text-only valueLink to destination entity
---

Lua Script Status ℹ️

Integration Module

ComponentStatusNotes
Direct Dialℹ️ Configuration moduleRouting handled by dialplan XML structure
--- Documentation last updated: January 2026
AI Assistant

👋 Hello! I'm your Ring2All documentation assistant. I can help you find information about configuring and using the Ring2All PBX platform.

How can I help you today?