Ctrl K
ring2all.com

Parking Lots 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 Are Parking Lots?

Parking Lots provide call holding zones where calls can be "parked" on numbered slots and retrieved by anyone who knows the slot number. Unlike regular hold, parked calls can be picked up from any phone in the system.

Architecture

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Parking Lot System                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  PARKING A CALL                                                 │
│  ─────────────────                                              │
│  User on call → Transfers to *70 (park) → Call parked          │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Parking Lot "Main" (Extension 700)          │   │
│  │                                                          │   │
│  │  Slot 701: [Occupied] - Caller: +1-555-1234 (60s)       │   │
│  │  Slot 702: [Available]                                   │   │
│  │  Slot 703: [Available]                                   │   │
│  │  Slot 704: [Occupied] - Caller: +1-555-5678 (15s)       │   │
│  │  Slot 705: [Available]                                   │   │
│  │                                                          │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
│  RETRIEVING A CALL                                              │
│  ─────────────────                                              │
│  Any user → Dials 701 → Connected to parked caller              │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Key Tables

TablePurpose
public.parking_lotsLot definitions (extension, slots, settings)
(runtime)FreeSWITCH valet_parking module manages active slots

Slot Numbering

If lot extension is 700 with 5 positions:

  • Slot 701, 702, 703, 704, 705

Key Files

FileDescription
admin/apps/web/src/modules/parkingLots/Frontend module
admin/apps/web/src/i18n/en/parkingLots.jsonEnglish translations
telephony/freeswitch/conf/dialplan/valet_parking/Parking dialplan
---

2. Module Overview (Commercial/Business)

Business Value

Parking Lots enable flexible call routing:

Without ParkingWith Parking
Transfer to specific personPark and announce slot
Caller waits for specific personAnyone can retrieve
Tied to one extensionAvailable system-wide

Use Cases

  1. Reception Workflow
- "I have John Smith on line 701"

- Anyone can dial 701 to take the call

  1. Warehouse/Retail
- Park call, page location over PA

- Employee picks up from nearest phone

  1. Customer Service
- Park caller while researching answer

- Return to same caller easily

  1. Multi-Location
- Park call at one location

- Retrieve at another location

Feature Highlights

FeatureBenefit
Multiple SlotsHandle many parked calls simultaneously
Timeout CallbackParked call returns if not answered
Position AnnouncementCaller hears their slot number
Music on HoldProfessional hold experience
Timeout RoutingRoute to voicemail/IVR if not retrieved
---

3. Module Overview (End User/Administrator)

What Can You Do?

  • Create parking lots with assigned extension ranges
  • Configure parking behavior (timeout, music, announcements)
  • Set timeout destinations (voicemail, IVR, extension)
  • Monitor active parked calls

Administrator Workflow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                 Creating a Parking Lot                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Step 1: General Tab                                            │
│  ├─ Name: "Main Parking"                                       │
│  ├─ Extension: 700 (slots will be 701-710)                     │
│  └─ Total Positions: 10                                        │
│                                                                 │
│  Step 2: Behavior Tab                                           │
│  ├─ Parking Time: 120 seconds                                  │
│  ├─ Comeback Time: 30 seconds                                  │
│  ├─ Find Slot: Next Available                                  │
│  ├─ Announce Position: ✓                                       │
│  └─ Music on Hold: Default                                     │
│                                                                 │
│  Step 3: Advanced Tab                                           │
│  ├─ Return to Originator: ✓                                    │
│  ├─ Timeout Module: Voicemail                                  │
│  └─ Timeout Destination: 1000 (operator voicemail)             │
│                                                                 │
│  Step 4: Enable and Save                                        │
│  └─ Enabled: ✓                                                 │
│                                                                 │
│  Result: Users can transfer to 700, slots 701-710 available    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

User Workflow (Parking a Call)

Plaintext
1. While on a call, user transfers to 700
2. System announces: "Parked at slot 703"
3. User hangs up (or is returned to call)
4. User pages: "John Smith, you have a call on 703"
5. John dials 703 → Connected to caller

Quick Tips

TIP
Announce Position: Enable this so the parker knows which slot to communicate.
TIP
Return to Originator: Enable this to return timeout calls to the person who parked.
CAUTION
Parking Time: If too short, calls return before they can be retrieved.

---

4. Configuration Fields Reference

General Tab

FieldDescriptionExampleRequired
NameLot nameMain ParkingYes
ExtensionBase extension (slots start here +1)700Yes
Total PositionsNumber of parking slots (1-99)10Yes
EnabledActive/inactiveOn/OffYes

Behavior Tab

FieldDescriptionDefaultRange
Parking TimeSeconds before callback1205-300
Comeback TimeDelay before redirect after timeout305-300
Find SlotSlot assignment policyNext AvailableNext / Random
Announce PositionTell caller their slot numberOffOn/Off
Courtesy ToneTone played to parked partyCallerCaller / None
Music on Hold ClassMOH to play while parkedDefaultDefault / Calm / Business

Advanced Tab

FieldDescriptionDefault
Return to OriginatorReturn timeout call to parkerOn
Call TransferAllow transfer while parkedOn
Call ReparkingAllow re-park from same lotOn
Call HangupHang up if no timeout destinationOff
Record Parked CallRecord while parkedOff

Timeout Destination

FieldDescription
Timeout ModuleWhere to route after timeout
Timeout DestinationTarget within the module
ModuleDestination Example
---------------------------
VoicemailExtension number
IVRIVR name
ExtensionExtension number
GroupRing group ID
NoneHang up
---

5. Call Flow / Logic Explanation

Parking Flow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Parking Flow                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. User transfers active call to 700 (parking lot extension)  │
│     │                                                           │
│     ▼                                                           │
│  2. Find available slot                                         │
│     ├─ Next Available: Check 701, 702, 703...                  │
│     └─ Random: Pick random available slot                       │
│     │                                                           │
│     ▼                                                           │
│  3. Found slot 703                                              │
│     │                                                           │
│     ▼                                                           │
│  4. If announcePosition = true:                                 │
│     → Play "Parked at slot 7-0-3"                              │
│     │                                                           │
│     ▼                                                           │
│  5. Place caller on hold at slot 703                            │
│     ├─ Play music on hold                                       │
│     └─ Start parking timer (120 seconds)                        │
│     │                                                           │
│     ▼                                                           │
│  6. Parker's call ends (they can work on other things)          │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Retrieval Flow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Retrieval Flow                               │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. Any user dials 703 (parked slot)                            │
│     │                                                           │
│     ▼                                                           │
│  2. Check if slot 703 is occupied                               │
│     ├─ Yes → Continue                                          │
│     └─ No → "Slot empty" or dial tone                          │
│     │                                                           │
│     ▼                                                           │
│  3. Bridge user with parked caller                              │
│     │                                                           │
│     ▼                                                           │
│  4. Slot 703 marked as available                                │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Timeout Flow

Plaintext
┌─────────────────────────────────────────────────────────────────┐
│                    Timeout Flow                                 │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. Parking timer (120s) expires                                │
│     │                                                           │
│     ▼                                                           │
│  2. Check returnToOriginator                                    │
│     ├─ Yes → Ring the original parker (who parked the call)    │
│     │   ├─ If answered → Connected                             │
│     │   └─ If not answered → Wait comebackTime (30s)           │
│     └─ No → Skip to step 3                                     │
│     │                                                           │
│     ▼                                                           │
│  3. Route to timeout destination                                │
│     ├─ Voicemail: Send to VM of specified extension            │
│     ├─ IVR: Transfer to IVR menu                               │
│     ├─ Extension: Ring specified extension                      │
│     └─ None + callHangup: Hang up the call                     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

---

6. Common Scenarios & Examples

Scenario 1: Reception Parking

Setup:
SettingValue
NameMain Parking
Extension700
Total Positions5
Parking Time180 seconds
Announce Position
Return to Originator
Timeout ModuleVoicemail
Timeout Destination1000 (reception VM)
Usage:
  1. Reception transfers caller to 700
  2. System: "Parked at slot 703"
  3. Reception pages: "John, call on 703"
  4. John dials 703 → Connected

Scenario 2: Department-Specific Lots

Setup multiple lots:
LotExtensionPositionsTimeout Destination
Sales Parking7105Sales VM
Support Parking72010Support Queue
Executive Parking7303Admin Assistant

Scenario 3: Warehouse with PA System

Setup:
SettingValue
NameWarehouse
Extension800
Total Positions10
Parking Time300 seconds (5 min)
Announce Position
Return to Originator
Timeout ModuleIVR
Timeout Destinationmain_menu
Usage:
  1. Office parks call at 800
  2. System: "Parked at slot 805"
  3. PA announcement: "Shipping, line 805"
  4. Warehouse employee picks up nearest phone, dials 805

---

7. Limitations & Important Notes

Technical Limitations

WARNING
Slot Range: Slots start at extension+1. Extension 700 = slots 701-710 (for 10 positions).
WARNING
Single Retrieval: Only one person can retrieve a parked call—first dial wins.
IMPORTANT
MOH Duration: Music on Hold loops if parking time exceeds MOH file length.

Best Practices

  1. Plan Extension Ranges: Don't overlap parking slots with real extensions
  2. Reasonable Timeouts: 2-3 minutes is typical; too short causes premature callbacks
  3. Enable Announcements: Users need to know which slot to communicate
  4. Return to Originator: Safer than sending to general queue on timeout
  5. Document Your Lots: Train staff on which lots to use for which purposes

Security Considerations

CAUTION
Anyone Can Retrieve: Any user who dials the slot can pick up the call. Consider this for sensitive calls.

---

8. Troubleshooting Tips

Common Issues

SymptomPossible CauseSolution
No available slotsAll slots fullIncrease totalPositions
Call returns immediatelyParking time too shortIncrease parkingTime
Can't retrieve callWrong slot numberVerify slot dialed
No slot announcementannouncePosition = falseEnable announcement
Call goes to wrong VMWrong timeout destinationCheck destination config

Diagnostic SQL

List parking lots:

Sql
SELECT name, extension, total_positions, parking_time, enabled
FROM public.parking_lots
WHERE domain_id = [domain_id]
ORDER BY extension;

FreeSWITCH Commands

Check active parked calls:

Bash
fs_cli -x "valet_parking status"

Check specific lot:

Bash
fs_cli -x "valet_parking list 700"

Manually retrieve parked call:

Bash
fs_cli -x "valet_parking retrieve 703"

---

9. Glossary

TermDefinition
Parking LotA collection of hold slots for parking calls
SlotAn individual parking position (e.g., 701, 702)
ParkPlace a call on hold in a numbered slot
RetrievePick up a parked call by dialing its slot
Parking TimeHow long before a parked call times out
Comeback TimeDelay before routing after timeout
Return to OriginatorSend timeout call back to the parker
Valet ParkingFreeSWITCH module that handles parking
MOHMusic on Hold played while parked
PositionSame as slot—a numbered parking space
---

10. Suggested UI Improvements

The existing i18n tooltips are comprehensive.

UX Enhancements

  1. Real-Time Status: Show which slots are currently occupied (already in Positions tab)

  1. Quick Park Button: One-click park from active call display

  1. Slot Notifications: Alert when parked call is about to timeout

  1. Usage Analytics: Show parking lot utilization over time

  1. Retrieve Preview: Show caller ID before retrieving

Visual Improvements

CurrentSuggested
Plain slot listVisual slot grid with occupied/available colors
Text timerCountdown progress bar for parked calls
Simple numbersCaller ID preview on hover
---

Lua Script Status ℹ️

Integration Module

ComponentStatusNotes
Parking Lotsℹ️ Configuration moduleCall parking managed natively by FreeSWITCH mod_valet_parking
--- 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?