Open Source Training Seminar FreePBX Paid Support

Ticket #2922 (closed Feature Requests: fixed)

Opened 1 month ago

Last modified 1 month ago

allow additional calls after disa

Reported by: lazytt Assigned to:
Priority: minor Milestone: 2.5
Component: DISA Version: 2.4-branch
Keywords: Cc:
Confirmation: Need Feedback SVN Revision (if applicable):
Backend Engine: All Backend Engine Version:

Description

including option to press * or # (or some other combination) and end the current call and start a new one

Attachments

loopdisa.diff (3.8 kB) - added by lazytt on 07/19/08 13:59:14.
disa-option1.diff (2.1 kB) - added by lazytt on 07/22/08 14:44:56.
opt3.diff (2.2 kB) - added by lazytt on 07/22/08 15:21:43.

Change History

07/18/08 06:49:17 changed by lazytt

  • milestone changed from Cut Line to 2.5.

07/18/08 06:56:28 changed by p_lindheimer

well ending the current call may be a bit trickier and error prone (you don't want to cutoff calls). But if the call ends, you may want to loop back to give another option to make another call. And - you may want to make the dial timeout settable (means a modification to the hardcoded value in dialout-trunk and dialout-enum) so that you can set much shorter dial times thus allowing the call to end and cycle back for you to make another call.

If you are planning on doing this some time soon, we cal leave in 2.5, otherwise you should bump this up.

07/19/08 13:59:14 changed by lazytt

  • attachment loopdisa.diff added.

07/19/08 14:01:05 changed by lazytt

Patch does most of the job. Question remaining is: should we add a gotoif for every type of returned call (answer, busy, etc.) in macro-dialout-trunk to catch the loop?

07/19/08 15:21:25 changed by lazytt

  • confirmation changed from Unreviewed to Need Feedback.

I see three ways to catch loop here:

  1. Add a gotoif to macro-dialout-trunk:
    exten => s-BUSY,1,Noop(Dial failed due to trunk reporting BUSY - giving up)
    exten => s-BUSY,n,Gotoif($[${DISALOOP} != "" ]?${DISALOOP})
    exten => s-BUSY,n,Playtones(busy)
    exten => s-BUSY,n,Busy(20)
    exten => s-NOANSWER,1,Noop(Dial failed due to trunk reporting NOANSWER - giving up)
    exten => s-NOANSWER,n,Gotoif($[${DISALOOP} != "" ]?${DISALOOP})
    exten => s-NOANSWER,n,Playtones(congestion)
    exten => s-NOANSWER,n,Congestion(20)
    etc,...
    

Obviously, we will need some way to let the caller know why the call was returned

  1. Use the g option of dial in a way similarly to option 1, but without needing to set each return status independently
  1. Set a special disa context which will dial the call without transferring it to the local channel (/n) so that we can loop locally in that context (and not in the macro)

07/20/08 07:47:57 changed by p_lindheimer

  • type changed from Bugs to Feature Requests.

07/20/08 08:22:22 changed by p_lindheimer

imho:

  • DISA should always loop if we are going to do this change, no option needed
  • the gotoif is probably good, have it jump to somewhere new in DISA where you can play a message of some sort like "call was busy, next call" depending on the dialstatus.
  • don't name it DISALOOP, choose something more generic as other features might use this (callback, etc.)
  • You should put an option to append the 'h' option in the dial command (allow the call to be terminated by pressing * checkbox). You should not have to set this in general Dial options as it may not be desirable.
  • I think you need to add the 'g' command as well, and then determine what the dialstatus is or otherwise modify dialout-trunk do handle that case as well. So execution continues and does not go to the h extension if the called part hangup, unless you are able to trap that condition in an h context in dialout trunk. (but 'g' feels more appropriate)

07/21/08 12:32:02 changed by lazytt

I think g is out, as it will mess up the whole outbound routes context. What will probably work is as follows:

[ext-disa] ; currently exists
...
exten => x,n,Set(__DISACALLBACK=this-disa)
exten => x,n,Set(__DISACONTEXT=context)
exten => x,n,Disa(no-password|disa)

[disa] ; new context in extension.conf
exten => _.x,1,Dial(Local/${EXTEN}@${DISACONTEXT},300,g \n)
exten => _.x,n,Goto(1)

or

[ext-disa-1] ; each disa gets its own context
...
exten => s,n,Disa(no-pass); no context set here!

exten => _.x,1,exten => .,1,Dial(Local/${EXTEN}@${SOME-CONTEXT},300,g \n)
exten => _.x,n,Goto(1)

07/22/08 00:06:41 changed by p_lindheimer

why does auto inserting 'g' into the dial mess things up (other than needing to add a priority after the dial for the flow to go to)?

07/22/08 00:14:32 changed by lazytt

I'm afraid that adding g will cause something like this:

...
x,n,dial(trunk1)
x,n,dial(trunk2)
x,n,dial(trunk3)
...

Without g after dial it will jump to the dialstatus (answer,1 , busy,1 , etc). I havnt tried it but i presume that g will continue at the next priority, meaning after you dialed on one trunk, regardless of the callstatus it will dial the same number on the next

07/22/08 14:44:56 changed by lazytt

  • attachment disa-option1.diff added.

07/22/08 15:21:43 changed by lazytt

  • attachment opt3.diff added.

07/23/08 04:39:31 changed by lazytt

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

r6140 should do it. Thanks for your feedback!

07/23/08 04:45:46 changed by lazytt

btw, this also works with 2.4, in case you want to backport

07/23/08 07:47:22 changed by p_lindheimer

lazytt,

I have not had a chance to try the new disa, but I noticed you got rid of the KEEPCID channel variable. Was this by design or accident. That variable is responsible for allowing the CID setup in DISA to be transmitted. Without it, the CID will be set to the trunk CID. Let me know.

07/23/08 08:06:45 changed by lazytt

ops, r6141

07/23/08 08:36:02 changed by p_lindheimer

lazytt,

there is another issue here. You can't make the H option fixed, it needs to be configurable. Otherwise, you can never make a DISA that allows the '*' key to be pressed and this could be an issue for some people.

07/24/08 17:32:33 changed by lazytt

07/24/08 18:44:11 changed by lazytt

(In [6174]) re #2922, update sql order

07/24/08 20:09:57 changed by p_lindheimer

(In [6176]) re #2949, re #2922 - fix install script errors, change DISA to use authenticate and change dialplan so you don't have to re-authenticate each time

Donate



Support
Download
Develop
Forums
News
Documentation
Paid Support
About

Paid Ads