Shared behaviour
Settle, retry, wrap, pause, decline, redial.
These rules are the same in Progressive and Predictive. Hangup writes hold_dialer_call_attempts. Only Not Connected increments call_count and uses [2,2,2,2]. Abandoned is a fixed 5-minute retry. Final Disposal is archived to hold_dialer_disposed.
Hangup map
| AMI / condition | Stored status |
|---|---|
DialStatus = ANSWER (talked) | Received |
| Customer left on hold / connecting | Abandoned |
Cancel, DONTCALL, INVALIDARGS, causes 1, 21, 22, 27–29 | Rejected |
NOANSWER, BUSY, CONGESTION, CHANUNAVAIL, causes 16–20 | Not Connected |
Settle only updates rows still Calling. Agent, duration, and hold seconds are on the attempt row, not master.
Retry
| Not Connected | Abandoned | |
|---|---|---|
| Wait | 1st of a round: retry_seconds same day, else next work_start. 2nd of a round: 1 / 7 / 14 days | Always 5 minutes |
| Pattern | [2,2,2,2] — four rounds of two tries | Ignored |
max_tries | 8th NC copies the row to hold_dialer_disposed and deletes it from master | Ignored |
call_count | Increments on this settle | Unchanged |
After the first completed NC pair, priority_id becomes 2 (Hold + Not Connected). Claim order puts Abandoned first, then priority_no, then Pending / Callback / Not Connected, then oldest attempt. Any idle ready agent may claim any eligible lead.
Wrap and working hours
buffer_time is per-agent wrap after a connected call. A miss with no lead retries claim every 10 seconds. Originate is refused outside work_start–work_end on work_days except a due callback, which originates even after hours.
Pause and decline
Panel pause writes hold_dialer_employee.panel_status = pause, queue-pauses the extension, and opens a row on hold_dialer_agent_pauses (source agent or auto on leave). Ready closes that row.
SIP deny on a live predictive hold records hold_dialer_agent_declines and blocks that extension for the same caller for decline_cooldown_seconds (default 30). The customer stays on hold. The next offer is any idle agent.
Redial
Socket redial with oli_id from a joined agent. Skips wrap and queue. No skill check. ondemand: true allows redial from pause if SIP is idle. Reopens Received / Not Connected / Abandoned rows still on master. Finally disposed leads are gone from master until CRM pushes the oli_id again. Payload is in the Socket guide.
Config that actually moves the needle
| Setting | Used? | Meaning |
|---|---|---|
dialer_type | Yes | Progressive or Predictive |
buffer_time | Yes | Wrap seconds |
predictive_ratio | Yes | Customer legs per idle agent |
decline_cooldown_seconds | Yes | Decline block on the same hold |
max_lines | Yes | Cap ringing + hold + connecting |
max_tries / retry_* / hours | Yes | Not Connected only |
hold_timeout_seconds | No | Unused leftover |
max_abandon_rate | No | Unused leftover |