A better pause workflow

Asterisk/FreePBX 14
Sangoma S500

We have the Queue Agent app and we have a BLF *46*__Line1Ext__.

The Queue Agent app is robust, but not as quick as a one button BLF push.

The BLF button is quick and efficient, but relies on the agent being open in order to pause. If agents are staying productive they are not in a state that allows them to use the BLF.

I am searching for something that would give us the ability to pause while on an active call (to prevent the next call from coming to them), but the convenience of pressing a single button.

  1. Is it possible to create an agi that would pause and unpause an agent?
  2. could you trigger that agi using one of the soft buttons on an s500 phone?
  3. Has anyone done something like this or leads on something like this?

Thanks in advance.

I don’t know of any custom stuff for the phones.
However, you can use something like FOP2 to let them pause themselves.
Of if you want, you can write some custom AMI scripts.

I am pretty clear about writing a script, but the real question is how to execute the ami,macro, whatever.

It would be ideal if this could be triggered from the phone, one of the soft buttons. No extra hardware or software.

You literally have that now.

Not really. That is the subtle difference I am describing. Having a way to have the single press of the BLF with the ability to not open a line to make a change, like the XML app.

Use case is someone wanting to pause, while on a current queue call, before ending the current call. For simplicity it would be great to be able to press one button (no menu) and be done.

I know a script/dial plan is necessary, I just do not know how to link the script it to a Sangoma s500 button, without a feature code (open line).

That’s not a pause, that is putting an active queue call on hold. Pausing is when the Agent is not available for an active call. As long as the queue sees the Agent on a call, they are IN_USE/ONCALL until they end it.

I think I see what he’s saying.

An agent is on a call and they want to “make a pause” at the end of this call. During the call, they press a button on the phone that says “toggle me paused”, which marks their extension as busy. When they push the button again, they are back in the queue and ready for calls.

Correct me if I’m wrong, but it’s kind of like a pushbutton that sets the “wrap up time” to “indefinite” (instead of the “set” number of minutes we use now) so they are not contacted again until the timer expires.

If that’s what you’re looking for - I have no idea how I’d start to do that. It’s like an in-call feature code that turns the toggle on/off, but there’s have to be some other changes (in-call recording stops at the end of the current call) to allow it to effect the extension across multiple queues. Also, do you want it to be over-arching? Do you want it to be a full-up DND for all functions? No one can call the extension until you clear it? Just queue traffic? How about direct calls? Hmmmm

So that is what the Wrap Up Time is for. However, to “pre-pause” is going to require custom dialplan and maybe some other code depending on how this is done. Because now that agent and the channel they are on has to be checked and tracked.

Now there are Queue options to send the Agent to a specific context after a call is completed. That in conjunction with an In-Call feature code to toggle the “pre-pause” could work. The In-Call feature code can be dialed during the call to set a flag in the AstDB with the post-dial Queue option set to go to a context that looks for that flag and will set the pause.

Since un-setting the pause would happen when the phone is not in a call, then the standard unpause feature code could be used to unpause the member. That would just require that the “pre-pause” feature sets the pause the proper way.


Something like that sounds reasonable. This isn’t the first time we’ve had people asking for something like this, but it is pretty application specific.

@comtech - if that’s what you want, let us know. Like I said, I don’t know where to start, but there might be something in one of the commercial packages already, or perhaps a Feature Request to get it added to one of the components of the system.

This is what I am looking for.

One point of clarification that the trigger happen outside of an open line (dialing a feature code). Ideally it would be seamless, the agent while talking to the caller could queue up “prepause” by pressing a button on the Sangoma s500 without the caller noticing anything (i.e. putting them on hold to dial a feature code).

Things like ACW after every call will not work in the sense that it erodes the agents potential time to take calls and drives up wait times. If I add five seconds of ACW to every call (regardless of if it is needed or not) that will add up to millions of seconds by the end of the year.

I can submit a feature request to have something built in the long term. I was just thinking if we could figure out the code and the method to invoke the code (REST request from the phone), we could have something people could use in the interim.

Setting the soft or line keys on the phone to speeddial this. That part is something to worry about when it is actually working and everything has been tested. Then you setup the phone to do “one-touch” stuff.

The thing (for me) that drives one of your choices is whether this is going to be “Sangoma Specific” (and therefore settable in the Sangoma RESTApps API) or if this is going to be something that will work for everyone. If you go with a RESTApp thing, then you are going to have to push it through Sangoma to get the API modified. If you go with a Feature Code (like the one for on-demand recording) then you can use it across platforms and it could even be available to other channel drivers (like DAHDI or Chan-SCCP-B).

@BlazeStudios makes a good point, though. Getting the functionality working first is paramount. Once that’s up and running, instantiating the pause should be simple enough (programming a button or a RESTApp function, for example).

@BlazeStudios made a good suggestion. When I suggested you tie it to Wrap-up Time, he recommended setting a value in the AstDB instead. If you use something like DND (which can be set while the phone is off-hook) and then clear it by hand after, the code for this could end up being simple. You create an asynch event that sets the DND to on, then clear it with DND when you’re ready to take calls. That way, you only need one new function. Start with the feature code for call recording and work you way out from there.

1 Like

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