Ring Group and Follow-Me Ring Strategies (1 of 2)

This week’s FreePBX® Technical Series will discuss the different Ring Group and Follow-Me ring strategies in FreePBX® 2.2 and what is coming next. The basic modes will be discussed and the question: “What is that –prim” version of all the strategies?” will be answered. Next week, new enhancements and new Ring Strategies that are forth coming will be described (or available now if you are adventurous and like to run the development branch).
-philippel

Ring Group and Follow-Me Ring Strategies (1 of 2)

Basics

Before proceeding, some background is in order. The core behavior used by both Ring Groups and Follow-Me are implemented in the dialparties.agi script along with some associated macros. It is not a built in feature of Asterisk. Since both use the exact same mechanism, everything discussed here will apply to both unless specific differences are highlighted. The Follow-Me module is a direct descendant from Ring Groups because of the number of users who were using Ring Groups as personal follow-me setups. Since then, it has evolved quite a bit and more differences have been introduced.

The Three Core Ring Strategies

Today’s core strategies include the ringall, hunt and memoryhunt. These are reasonably described in the tooltip when you hover over the ring strategy field.

  • ringall

simply rings all the extensions listed in the Extension/Follow-Me List for the Ring time specified below it.

  • hunt

this will ring each number listed in the Extension list in the order that it appears. The Ring time specified below tells it how long to ring each extension during each iteration of its hunt..

  • memoryhunt

this is very similar to the hunt strategy just described. The difference being, instead of trying each extension listed individually, it progressively adds the next extension in the list and rings it along with all the previous extensions for the Ring time during each iteration of the hunt.

One side note to mention when it comes to Follow-Me, there is no reason why you must include your own extension in the Follow-Me List. If you don’t want it to ring, it may be left out.

Follow-Me has one more option that might be considered part of the Ring Strategy, the Initial Ring Time. It is often desirable for a Follow-Me user to ring his or her extension for some amount of time before taking the drastic measure of ringing a number of cell phones and other phones that may be listed in their Follow-Me List. If someone is sitting at his or her desk, this avoids a “fire drill” every time the phone rings. That is the purpose of this mode; it will ring only the extension for the determined time – unless set to 0 seconds which disables the Initial Ring. There is another subtle benefit in using this Initial Ring Time that will be touched on below when discussing the “-prim” versions of the Ring Strategies.

So What is This “-prim” Anyhow?

This will be answered by describing a scenario. For example, you would like people to be able to reach you as you are on the road a fair amount of time, so you have set yourself up with a Follow-Me to ring your primary extension desk phone and cell phone. You are also like many users and have a desk phone with multiple line appearances. While you are at your desk, on a call with a client, another call comes in. You can see who is calling and if it were urgent you could easily put your current client on hold and answer the incoming call. You choose not to take this second call, but to your distraction, your Follow-Me starts ringing your cell phone. How do you stop that?

This is exactly what the “-prim” modes are designed to handle. The Ring Strategies are all the same as described above with a subtle difference. First, the status of your prim-ary extension is checked. If the line is occupied, it will not go on to ring the other phones in the Extension/Follow-Me List. In the current implementation of both Ring Groups and Follow-Me, the primary extension is defined as the first extension listed in the Extension/Follow-Me List.

Now, after you have implemented the “-prim” version of your favorite Ring Strategy, the same call comes in while you are on the phone. However, this time the ‘fire drill of ringing phones’ has been eliminated. You choose not to pickup the second line appearance and the second call rolls over to voicemail while you give the current client the attention they deserve.

What Happens When I Press DND and Have “-prim” Selected?

Continuing the previous scenario; you are now off the phone with your client who has just given you 30 minutes to get him a quote for an order he wants to place. You can’t be interrupted, so you hit DND (Do Not Disturb) on your phone. However, you did not have the “-prim” mode selected. Another call comes in and, although your desk phone obediently keeps silent, your cell phone distracts you again!

Back to the “-prim” mode and how it might be able to help here; and some subtle but desirable behaviors that occur when using the Initial Ring Time option with Follow-Me (not available with Ring Groups). In addition to checking the state of the primary extension as previously described, dialparties.agi also checks if the primary extension has DND set before ringing the Extension/Follow-Me List. If set, it will not ring any of the other extensions and simply fail over to the configured destination (usually voicemail).

Many phones implement DND without using the FreePBX® DND feature code. These phones will implement DND locally and when a call comes in they simply reject the call by sending a “Busy Here” SIP message back to Asterisk. There is no standard way to “query” the phone and determine its state prior to making a decision about ringing the other extensions – so even with a “-prim” mode set, you may still end up with your other phones ringing. How might you deal with this situation?

When an Initial Ring Time is set on your Follow-Me, an additional benefit is obtained. Prior to ringing all your Follow-Me List, FreePBX® will only ring your primary extension for the allotted time as previously described. If it receives a “Busy Here” back from the phone, and you are running in “-prim” mode, it will not go and ring the other listed extensions since it assumes the primary is occupied. This results in the desired behavior on phones that implement DND locally.

Summary and Next Week

Different Ring Strategies available for a Ring Group or Follow-Me and a description of what the mysterious “-prim” version of those strategies is all about and why you may want to use them have been discussed in this FreePBX® article. Some subtle behaviors of how these interact with DND have also been clarified.

Next week this freePBX® series will go over some up and coming Ring Strategies. The improved ringall strategy: ringallv2, as well as firstavailable and firstnotonphone. Also the following subtle issue (that you may or may not have ever noticed) will be discussed: When someone calls you while your are on the phone and choose not to answer, they get the unavailable greeting; why can’t they get the busy greeting instead? We will tell you why and what has been implemented to optionally change this behavior.

As always, we at FreePBX® hope you find this series helpful. Please provide comments, feedback and suggestions for what to write about next!

-philippel

3 thoughts on “Ring Group and Follow-Me Ring Strategies (1 of 2)

  1. Just another what if scenario that should be documented I think…

    With a “-prim” strategy, what happens if the phone doesn’t respond? (Bad router, internet failure, loss of registration, etc…)

    Does it count as BUSY and fail to follow-me? Or will it realize the failure and call the cell phone anyways?

    Thanks guys – awesome resource!

  2. Is there any limitation on number of extensions that we can have in a ring group.

    We are using FreePBX 2.6.0.2
    We had 36 extensions under one ring group.
    We have one DID pointed to this ring group.
    When we get an inbound call, all the extensions under this ring group kept ringing even after the inbound call was answered by one of the extension in this ring group.
    Further more, if the inbound call is hanged before any of the extensions answered the call, all the phones still keep ringing.
    We then have to manually receive all the phones handset and hangup.

    To debug this issue, we started reducing the number of extension in the ring group.
    We started with just 5 extensions in the ring group.
    It worked perfectly with 5-extensions.
    Then we kept increasing the number of extensions in the ring group.
    Finally after crossing 20 extensions under a ring group, all the phones kept ringing even after the call was answered by one of the extension.

    Is this a bug in system/pbx engine/asterisk or my phones?

  3. It’s not a “bug” as such. What you have to remember is that for every phone that rings in a ring group, you’re consuming system assets…Memory, Processor, and network bandwidth. Eventually, they run out and the system behaves unpredictably.

    While FreePBX and the underlying telephone engine may not have a limit, your hardware does.

    Bill

Leave a Reply