Ticket #2853 (closed Feature Requests: fixed)

Opened 4 years ago

Last modified 4 years ago

CFU should not be honored in RingGroup, make this optional if someone wants it.

Reported by: mickecarlsson Assigned to: p_lindheimer
Priority: major Milestone: 2.5
Component: Ring Groups Version: 2.4-branch
Keywords: CFU Ring Group Cc:
Confirmation: Need Feedback SVN Revision (if applicable):
Backend Engine: All Backend Engine Version:

Description

In General Settings make honoring CFU in Ring Group optional.

A check box in General Setting:
[] Follow CFU in Ring Group

Help Text: "If checked (default) follow extension CFU setting when part of a Ring Group"

This will set a global variable CFU_IN_RG = 1 (default) and CFU_IN_RG = 0 if not checked.

Change in dialparties.agi:

// Ext has CFU and is Unavailable
  if ( ($exthascfu == 1) && ($extstate == 4) ) {
    // If part of a ring group, then just do what CF does, otherwise needs to
    // drop back to dialplan with NOANSWER
       if ($rgmethod != '' && $rgmethod != 'none') {
       debug("Extension $extnum has call forward on no answer set and is unavailable and is part of a Ring Group forwarding to '$extcfu'",1);
         $extnum = $extcfu . '#';   # same method as the normal cf, i.e. send to Local
        } else {
          debug("Extension $extnum has call forward on no answer set and is unavailable",1);
          $extnum = '';
          $AGI->set_variable('DIALSTATUS','NOANSWER');
          }

Change this to:

// Ext has CFU and is Unavailable
   if ( ($exthascfu == 1) && ($extstate == 4) ) {
     // If part of a ring group, then just do what CF does, otherwise needs to
     // drop back to dialplan with NOANSWER
        if ($rgmethod != '' && $rgmethod != 'none') {
           debug("Extension $extnum has call forward on no answer set and is unavailable and is part of a Ring Group forwarding to '$extcfu'",1);
	  if ($honorcfu = '0') {
	      $extnum = '';
   	      } else 		
              $extnum = $extcfu . '#';   # same method as the normal cf, i.e. send to Local
              }
           } else {
             debug("Extension $extnum has call forward on no answer set and is unavailable",1);
             $extnum = '';
             $AGI->set_variable('DIALSTATUS','NOANSWER');
             }

This request will make FreePBX follow the Ring Group strategy that other branded PBX's do.

Change History

06/20/08 09:28:20 changed by p_lindheimer

  • confirmation changed from Unreviewed to Need Feedback.
  • milestone changed from Cut Line to 3.0.

I would suggest such a feature would be better 'per ringgroup' vs. system wide. This will also effect follow-me where you may or may not want this behavior. And then, what about CFB and CF, how do you treat those? Should those be controlled also?

There is another issue here. Features like CF, CFB and CFU can be server side or device side. Right now we implement the feature such that the behavior is the same whether your phone is programmed to use server side features or does a SIP Redirect at the phone to handle the feature. Doing a server side change will result in varying behavior depending on the phone in a mixed environment. In the past - my opinion has been to try and keep the system as consistent as possible fairing inconsistencies is a less desirable result. That is just my opinion and clearly is not a factor if you have an environment which uses all one type (e.g. all phones use server side features for these).

06/20/08 17:03:06 changed by mickecarlsson

True, a 'per ringgroup' setting is a better solution, with checkboxes for enabling/disabling the CFU, CFB and CF.

07/19/08 01:57:16 changed by p_lindheimer

  • priority changed from minor to major.

raise priority, look into adding CF, CFU blocking to ringgoups (lease as is in followme). CFB does not get engaged.

07/19/08 11:45:18 changed by p_lindheimer

current plan:

  • Add Ignore Call Forward
    • Ignore any ringgoup members Server Side CF, CFU or CFB settings.
    • NOTE: phones with device side CF/CFU and CFB can not be ignored. We can experiment with the possibility of blocking them but it is likely very non-trivial and error prone
  • Add Ignore Busy Agent (from Queues)
    • while we are at it, put this same functionality that is available with queues

07/19/08 13:34:39 changed by p_lindheimer

  • component changed from Core to Ring Groups.

07/19/08 14:25:34 changed by p_lindheimer

  • status changed from new to closed.
  • resolution set to fixed.

r6061, r6062

it should also block client side CF with the use of FORWARD_CONTEXT channel variable