Device hints for auto pause (BLF)

Hi Guys,

Forgive my ignorance, or any misused terminology…

I have a queue called 2000 that I have enabled auto-pause. It has extension 4000 configured as a dynamic agent. I would like to configure a BLF to show the staff member when they have been auto-paused in the queue.

I got the queue logon-logoff BLF working by using Busy Lamp Field code *454000*2000 on an empty MPK. I’m using grandstream 2200 with an extension module.

I tried to use *464000*2000 to also show the AUTO PAUSE state but it doesn’t work the same as agent logon-logoff status. I get no lights and 404 when I press the MPK.

Does anyone know how to make a BLF show the AUTO PAUSE state?

Commercial solutions to this problem are acceptable.
(freepbx core 2.11.0.34, queues 2.11.0.27)

Thanks in advance

So I did some more fiddling.

I got the pause toggle working on BLF button by using *46*4000*2000. But the light stays green; it doesn’t change colour despite the pause state of the queue.
I did some more digging into how all this works and so I guess there’s these ‘hints’ things that you can subscribe your phone buttons to and the phone know what each state the hint is in.

You can see all of your hints by going to asterisk command line on FreePBX, (the command is asterisk -vvvvvr) and typing the command ‘core show hints’

When I look at the hints in the commandline I see that the pause state for the queue and this device is always UNAVAILABLE regardless of the pause state. I assume this is why the colour never changes.

How do I get FreePBX to change the state of the hint to something like InUse/Idle so that the phone knows to change the colour?

Thanks!!!

So more research all day. I found this and this

It seems I should have installed FreePBX distro. (What is that?, and why don’t I already have it?)
How do I get the patch these links refer to installed into my production system?
Do I have to yum some rpm’s or something? Any direction is most graciously appreciated!

Alright, so I found a solution to this issue for anyone who might be facing similar issue in the future.

I found a set of upgrade scripts to migrate my Asterisk 3.0.1 system though Asterisk 5.211.65-21 and finally to Asterisk 6.12.65-23 at this link.

http://wiki.freepbx.org/display/FD/Converting+AsteriskNOW+3.0.X+Distro+to+a+AsteriskNOW-FreePBX+Distro+5.211.65

I worked through these on my test box and device hints for auto pause issue is cleared up.

I’m on Asterisk 13.12.1 and still can’t get the pause state to display on the BLF button.

Is the correct syntax *46*{extension}*{queue} ?

when i try that the light doesn’t change and the every time it’s pressed it always plays back “pause activated” never deactivated.

   -- Executing [*46*529*600@from-internal:1] Gosub("SIP/529-0000151a", "app-queue-pause-toggle,s,1(600,600)") in new stack
    -- Executing [s@app-queue-pause-toggle:1] Answer("SIP/529-0000151a", "") in new stack
       > 0x7f1e5c32c1d0 -- Probation passed - setting RTP source address to 10.255.100.87:16604
    -- Executing [s@app-queue-pause-toggle:2] Wait("SIP/529-0000151a", "1") in new stack
    -- Executing [s@app-queue-pause-toggle:3] Macro("SIP/529-0000151a", "user-callerid,") in new stack
    -- Executing [s@macro-user-callerid:1] Set("SIP/529-0000151a", "TOUCH_MONITOR=1484933212.12168") in new stack
    -- Executing [s@macro-user-callerid:2] Set("SIP/529-0000151a", "AMPUSER=529") in new stack
    -- Executing [s@macro-user-callerid:3] GotoIf("SIP/529-0000151a", "0?report") in new stack
    -- Executing [s@macro-user-callerid:4] ExecIf("SIP/529-0000151a", "1?Set(REALCALLERIDNUM=529)") in new stack
    -- Executing [s@macro-user-callerid:5] Set("SIP/529-0000151a", "AMPUSER=529") in new stack
    -- Executing [s@macro-user-callerid:6] GotoIf("SIP/529-0000151a", "0?limit") in new stack
    -- Executing [s@macro-user-callerid:7] Set("SIP/529-0000151a", "AMPUSERCIDNAME=John Test") in new stack
    -- Executing [s@macro-user-callerid:8] GotoIf("SIP/529-0000151a", "0?report") in new stack
    -- Executing [s@macro-user-callerid:9] Set("SIP/529-0000151a", "AMPUSERCID=529") in new stack
    -- Executing [s@macro-user-callerid:10] Set("SIP/529-0000151a", "__DIAL_OPTIONS=Ttr") in new stack
    -- Executing [s@macro-user-callerid:11] Set("SIP/529-0000151a", "CALLERID(all)="John Test" <529>") in new stack
    -- Executing [s@macro-user-callerid:12] GotoIf("SIP/529-0000151a", "0?limit") in new stack
    -- Executing [s@macro-user-callerid:13] ExecIf("SIP/529-0000151a", "0?Set(GROUP(concurrency_limit)=529)") in new stack
    -- Executing [s@macro-user-callerid:14] ExecIf("SIP/529-0000151a", "0?Set(CHANNEL(language)=)") in new stack
    -- Executing [s@macro-user-callerid:15] GotoIf("SIP/529-0000151a", "0?continue") in new stack
    -- Executing [s@macro-user-callerid:16] ExecIf("SIP/529-0000151a", "1?Set(__CALLEE_ACCOUNCODE=)") in new stack
    -- Executing [s@macro-user-callerid:17] Set("SIP/529-0000151a", "__TTL=64") in new stack
    -- Executing [s@macro-user-callerid:18] GotoIf("SIP/529-0000151a", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,29)
    -- Executing [s@macro-user-callerid:29] Set("SIP/529-0000151a", "CALLERID(number)=529") in new stack
    -- Executing [s@macro-user-callerid:30] Set("SIP/529-0000151a", "CALLERID(name)=John Test") in new stack
    -- Executing [s@macro-user-callerid:31] GotoIf("SIP/529-0000151a", "0?cnum") in new stack
    -- Executing [s@macro-user-callerid:32] Set("SIP/529-0000151a", "CDR(cnam)=John Test") in new stack
    -- Executing [s@macro-user-callerid:33] Set("SIP/529-0000151a", "CDR(cnum)=529") in new stack
    -- Executing [s@macro-user-callerid:34] Set("SIP/529-0000151a", "CHANNEL(language)=en") in new stack
    -- Executing [s@macro-user-callerid:35] ExecIf("SIP/529-0000151a", "0?Set(CALLERID(name)=)") in new stack
    -- Executing [s@macro-user-callerid:36] GosubIf("SIP/529-0000151a", "0?app-check-classofservce,s,1()") in new stack
    -- Executing [s@app-queue-pause-toggle:4] Set("SIP/529-0000151a", "QUEUEUSER=600") in new stack
    -- Executing [s@app-queue-pause-toggle:5] Set("SIP/529-0000151a", "MEMBR=Local/600@from-queue/n") in new stack
**[2017-01-20 11:26:53] ERROR[28021][C-000019cf]: app_queue.c:8382 get_interface_helper: Queue member interface 'Local/600@from-queue/n' not in queue '600'.**
    -- Executing [s@app-queue-pause-toggle:6] Set("SIP/529-0000151a", "PAUSE_STATE=0") in new stack
    -- Executing [s@app-queue-pause-toggle:7] Set("SIP/529-0000151a", "QUEUE_MEMBER(600,paused,Local/600@from-queue/n)=1") in new stack
**[2017-01-20 11:26:53] ERROR[28021][C-000019cf]: app_queue.c:8537 queue_function_mem_write: Invalid interface or queue**
    -- Executing [s@app-queue-pause-toggle:8] Playback("SIP/529-0000151a", "dictate/pause&activated") in new stack
    -- <SIP/529-0000151a> Playing 'dictate/pause.ulaw' (language 'en')
    -- <SIP/529-0000151a> Playing 'activated.ulaw' (language 'en')
    -- Executing [s@app-queue-pause-toggle:9] ExecIf("SIP/529-0000151a", "600?Return()") in new stack
    -- Auto fallthrough, channel 'SIP/529-0000151a' status is 'UNKNOWN'
    -- Executing [h@from-internal:1] Macro("SIP/529-0000151a", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] GotoIf("SIP/529-0000151a", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,3)
    -- Executing [s@macro-hangupcall:3] ExecIf("SIP/529-0000151a", "0?Set(CDR(recordingfile)=)") in new stack
    -- Executing [s@macro-hangupcall:4] Hangup("SIP/529-0000151a", "") in new stack
  == Spawn extension (macro-hangupcall, s, 4) exited non-zero on 'SIP/529-0000151a' in macro 'hangupcall'
  == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/529-0000151a'

This is a bug. You can see the dialplan for this feature looks like this:

> dialplan show *46*2014*700@from-internal
[ Included context 'ext-queues' created by 'pbx_config' ]
  '_*46*XXXX*700' => hint: Queue:${EXTEN:9}_pause_Local/${DB(DEVICE/${EXTEN:4:4}/user)}@from-queue/n [pbx_config]
                    1. Gosub(app-queue-pause-toggle,s,1(700,${EXTEN:9})) [pbx_config]

The gosub line is sending to ${EXTEN:9} and it should be ${EXTEN:4:4}. See ticket here:
http://issues.freepbx.org/browse/FREEPBX-12966

1 Like

I upgraded to 13.0.32.3 and the status is now reporting correctly. (activated and deactivated) however I can’t seem to get the BLF status light to change with the status.
I’ve tried making the BLF

*46
*46*600
*46*2000*600

each of which appears to trigger the proper pause command but the BLF presence doesn’t change.

BLF hints are:

*46*XXXX*600@ext-qu: Queue:${EXTEN:4:4}_p  State:Unavailable     Presence:                Watchers  0
_*46*X.@ext-queues  : ${DB(AMPUSER/${EXTEN  State:Unavailable     Presence:                Watchers  0
*46*2000*600@ext-que: Queue:2000_pause_Loc  State:Idle            Presence:not_set         Watchers  2
*46*600@ext-queues  :                       State:Unavailable     Presence:not_set         Watchers  5
1 Like