Queue Auto Pause is Pausing agents who have DND set

Asterisk 16.15.1

Hello,

I have been looking at the Auto Pause options of a call Queue (configured by FreePBX) but it seems that when any extension’s DND is activated and they receive a call, those agents become automatically paused, even if I set Auto Pause on Busy to No.

[3000]
announce-frequency=0
announce-holdtime=no
announce-position=no
autofill=no
autopause=all
autopausebusy=no
autopausedelay=0
autopauseunavail=no
joinempty=yes
leavewhenempty=no
maxlen=0
memberdelay=0
min-announce-frequency=15
penaltymemberslimit=0
periodic-announce-frequency=0
queue-callswaiting=silence/1
queue-thereare=silence/1
queue-youarenext=silence/1
reportholdtime=no
retry=1
ringinuse=no
servicelevel=60
strategy=leastrecent
timeout=15
timeoutpriority=app
timeoutrestart=yes
weight=0
wrapuptime=0
context=

Agnet has DND set

[root@PBX /]# asterisk -rx “database show” | grep “/DND/3081”
/DND/3081 : YES

[2021-02-03 18:07:54] VERBOSE[12957][C-0000005a] app_queue.c: Called Local/3081@from-queue/n
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue:1] Set(“Local/3081@from-queue-0000016a;2”, “QAGENT=3081”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue:2] Set(“Local/3081@from-queue-0000016a;2”, “__FROMQ=true”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue:3] GotoIf(“Local/3081@from-queue-0000016a;2”, “0?hangup”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue:4] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?3000,1:hangup”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (from-queue,3000,1)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3000@from-queue:1] Goto(“Local/3081@from-queue-0000016a;2”, “from-queue-exten-only,3081,1”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (from-queue-exten-only,3081,1)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:1] GotoIf(“Local/3081@from-queue-0000016a;2”, “0?hangup”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:2] GotoIf(“Local/3081@from-queue-0000016a;2”, “0?from-queue-exten-only-x,3081,1”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:3] Set(“Local/3081@from-queue-0000016a;2”, “RingGroupMethod=none”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:4] Set(“Local/3081@from-queue-0000016a;2”, “CHANNEL(language)=en_GB”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:5] Set(“Local/3081@from-queue-0000016a;2”, “QDOPTS=”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:6] Set(“Local/3081@from-queue-0000016a;2”, “CALLTYPE_OVERRIDE=external”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:7] ExecIf(“Local/3081@from-queue-0000016a;2”, “0?Set(FROMEXTEN=3000)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:8] Gosub(“Local/3081@from-queue-0000016a;2”, “sub-record-check,s,1(exten,3081,)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:1] GotoIf(“Local/3081@from-queue-0000016a;2”, “11?initialized”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (sub-record-check,s,10)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:10] NoOp(“Local/3081@from-queue-0000016a;2”, “Recordings initialized”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:11] ExecIf(“Local/3081@from-queue-0000016a;2”, “1?Set(ARG3=dontcare)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:12] Set(“Local/3081@from-queue-0000016a;2”, “REC_POLICY_MODE_SAVE=YES”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:13] ExecIf(“Local/3081@from-queue-0000016a;2”, “0?Set(REC_STATUS=NO)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:14] GotoIf(“Local/3081@from-queue-0000016a;2”, “5?checkaction”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (sub-record-check,s,17)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@sub-record-check:17] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?sub-record-check,exten,1”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (sub-record-check,exten,1)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:1] NoOp(“Local/3081@from-queue-0000016a;2”, “Exten Recording Check between 01XXXXXXXXX and 3081”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:2] Set(“Local/3081@from-queue-0000016a;2”, “CALLTYPE=internal”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:3] ExecIf(“Local/3081@from-queue-0000016a;2”, “8?Set(CALLTYPE=external)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:4] Set(“Local/3081@from-queue-0000016a;2”, “CALLEE=yes”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:5] ExecIf(“Local/3081@from-queue-0000016a;2”, “0?Set(CALLEE=dontcare)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:6] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?callee”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (sub-record-check,exten,11)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:11] Gosub(“Local/3081@from-queue-0000016a;2”, “recordcheck,1(yes,external,3081)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [recordcheck@sub-record-check:1] NoOp(“Local/3081@from-queue-0000016a;2”, “Starting recording check against yes”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [recordcheck@sub-record-check:2] Goto(“Local/3081@from-queue-0000016a;2”, “yes”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (sub-record-check,recordcheck,9)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [recordcheck@sub-record-check:9] ExecIf(“Local/3081@from-queue-0000016a;2”, “1?Return()”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [exten@sub-record-check:12] Return(“Local/3081@from-queue-0000016a;2”, “”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:9] Macro(“Local/3081@from-queue-0000016a;2”, “dial-one,tr,3081”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:1] Set(“Local/3081@from-queue-0000016a;2”, “DEXTEN=3081”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:2] ExecIf(“Local/3081@from-queue-0000016a;2”, “1?Set(__EXTTOCALL=3081)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:3] Set(“Local/3081@from-queue-0000016a;2”, “DIALSTATUS_CW=”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:4] GosubIf(“Local/3081@from-queue-0000016a;2”, “0?screen,1()”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:5] GosubIf(“Local/3081@from-queue-0000016a;2”, “0?cf,1()”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:6] GotoIf(“Local/3081@from-queue-0000016a;2”, “0?skip1”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:7] Set(“Local/3081@from-queue-0000016a;2”, “DEXTEN=”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:8] Set(“Local/3081@from-queue-0000016a;2”, “DIALSTATUS=BUSY”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:9] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?nodial”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (macro-dial-one,s,60)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:60] NoOp(“Local/3081@from-queue-0000016a;2”, “”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:61] ExecIf(“Local/3081@from-queue-0000016a;2”, “0?Set(DIALSTATUS=NOANSWER)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:62] NoOp(“Local/3081@from-queue-0000016a;2”, “Returned from dial-one with nothing to call and DIALSTATUS: BUSY”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:63] MacroExit(“Local/3081@from-queue-0000016a;2”, “”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:10] GotoIf(“Local/3081@from-queue-0000016a;2”, “0?,”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [3081@from-queue-exten-only:11] Hangup(“Local/3081@from-queue-0000016a;2”, “”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Spawn extension (from-queue-exten-only, 3081, 11) exited non-zero on ‘Local/3081@from-queue-0000016a;2’
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [h@from-queue-exten-only:1] Macro(“Local/3081@from-queue-0000016a;2”, “hangupcall,”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-hangupcall:1] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?theend”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (macro-hangupcall,s,3)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-hangupcall:3] ExecIf(“Local/3081@from-queue-0000016a;2”, “0?Set(CDR(recordingfile)=)”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-hangupcall:4] NoOp(“Local/3081@from-queue-0000016a;2”, " montior file= ") in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-hangupcall:5] GotoIf(“Local/3081@from-queue-0000016a;2”, “1?skipagi”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx_builtins.c: Goto (macro-hangupcall,s,7)
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-hangupcall:7] Hangup(“Local/3081@from-queue-0000016a;2”, “”) in new stack
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] app_macro.c: Spawn extension (macro-hangupcall, s, 7) exited non-zero on ‘Local/3081@from-queue-0000016a;2’ in macro ‘hangupcall’
[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Spawn extension (from-queue-exten-only, h, 1) exited non-zero on ‘Local/3081@from-queue-0000016a;2’
[2021-02-03 18:07:54] VERBOSE[12957][C-0000005a] app_queue.c: Nobody picked up in 0 ms
[2021-02-03 18:07:54] VERBOSE[12957][C-0000005a] app_queue.c: Auto-Pausing Queue Member Local/3081@from-queue/n in all queues since they failed to answer on queue 3000.
[2021-02-03 18:07:54] VERBOSE[12957][C-0000005a] app_queue.c: – LazyMembers debugging - Numbusies: 0, Nummems: 4

As DND was set, the extension returned BUSY

[2021-02-03 18:07:54] VERBOSE[13587][C-0000005a] pbx.c: Executing [s@macro-dial-one:62] NoOp(“Local/3081@from-queue-0000016a;2”, “Returned from dial-one with nothing to call and DIALSTATUS: BUSY”) in new stack

So why was the extension automatically paused when

[3000]
autopausebusy=no

…is set?

The desired outcome would be that any agents who are a member of a queue and have DND set are skipped and not automatically paused.

Is this possible so only extensions that actually ring and miss the call are automatically set to Pause?

Thanks,
Fraser

DND is a FreePBX concept, how it works is up to it. In regards to app_queue though and the autopausebusy option it seems as though app_queue wasn’t actually told the dialed target was busy. If it was you’d see “Local/3081@from-queue-0000016a;1 was busy” in the log and the autopausebusy option would apply.

Thanks @jcolp.

That’s weird. I have tried setting DND on the extension with *78/*79 and got the same results although I see the extension’s DND state being set/unset.

I’m not sure how to troubleshoot this further.

Thanks,
Fraser

As has been said, DND is something only FreePBX knows about. Asterisk, and therefore the queue application, have no knowledge about it. You need to take this up with the FreePBX people, e.g. https://community.freepbx.org/ for peer support.

Thanks @david551. I have posted here before but no response as of yet :frowning:

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.