Hello,
I am currently working on a call center system using Asterisk queues and need clarification regarding the wrapuptime behavior.
Current System Behavior
In my current setup:
A campaign is running and calls are being dialed.
Calls are placed in the queue.
When an agent becomes available, the call is delivered to the agent.
After the call ends, the agent is required to save the call disposition.
During the configured wrapuptime, the agent is marked unavailable.
Once the wrapup time is completed, the agent becomes available again and receives the next call.
Queue Configuration
[0000]
setinterfacevar = yes
setqueuevar = yes
setqueueentryvar = yes
music = default
maxlen = 0
ringinuse = no
strategy = fewestcalls
timeout = 30
retry = 4
wrapuptime = 120
announce-frequency = 0
announce-holdtime = no
announce-position = no
periodic-announce-frequency = 0
queue-callswaiting = silence/1
queue-thereare = silence/1
queue-youarenext = silence/1
Requirement
My client now has a different requirement:
After a call ends, the agent should save the call disposition.
Once the disposition is saved, the agent should immediately become available for the next call.
The configured wrapuptime (e.g., 120 seconds) should not delay agent availability if disposition has already been completed.
Question
Is there a recommended way in Asterisk to: End wrapup state immediately after disposition is saved.
The cleanest fix is to stop relying on the queue’s wrapuptime for this and control
availability with pause/unpause instead — that gives you exactly “available the instant
disposition is saved.”
Set wrapuptime = 0 (or a small safety value) on the queue, then:
-
When the call ends, pause the agent from your hangup handler (the h extension or a
hangup gosub): PauseQueueMember(0000,${INTERFACE},Wrapup) — or the AMI QueuePause
action. The agent is now “in wrap-up” and won’t be offered a new call.
-
The moment your app saves the disposition, unpause them: UnpauseQueueMember(…) or
AMI QueuePause with Paused: false. They’re immediately available again — no waiting
out the 120s.
This decouples wrap-up from a fixed timer: disposition saved → unpause → next call. Keep a
small wrapuptime only as a fallback for agents who never save a disposition; it won’t gate
the fast path. Asterisk doesn’t expose a clean “clear the current wrap timer per member”
action, so pause/unpause is the pattern everyone lands on for this exact requirement.
I build Asterisk call-center/queue systems in production — happy to help wire the
disposition→unpause flow over AMI/ARI if useful. Feel free to DM.
No, wrapuptime in Asterisk Queue is a fixed timer and cannot be terminated early when an agent saves a disposition.
If the requirement is to make the agent available immediately after disposition completion, the usual approach is to set wrapuptime=0 and manage the post-call workflow in the application layer. Another option is to pause the queue member when the call ends and unpause them after the disposition is submitted using PauseQueueMember() / UnpauseQueueMember() (or AMI actions).
In short, Asterisk does not provide a native mechanism to dynamically cancel an active wrapup timer based on disposition status.