Ticket #2922 (closed Feature Requests: fixed)

Opened 5 years ago

Last modified 5 years ago

allow additional calls after disa

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

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 mbrevda on 07/19/08 16:59:14.
disa-option1.diff (2.1 kB) - added by mbrevda on 07/22/08 17:44:56.
opt3.diff (2.2 kB) - added by mbrevda on 07/22/08 18:21:43.

Change History

07/18/08 09:49:17 changed by mbrevda

  • milestone changed from Cut Line to 2.5.

07/18/08 09: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 16:59:14 changed by mbrevda

  • attachment loopdisa.diff added.

07/19/08 17:01:05 changed by mbrevda

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 18:21:25 changed by mbrevda

  • 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 10:47:57 changed by p_lindheimer

  • type changed from Bugs to Feature Requests.

07/20/08 11: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 15:32:02 changed by mbrevda

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 03: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 03:14:32 changed by mbrevda

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 17:44:56 changed by mbrevda

  • attachment disa-option1.diff added.

07/22/08 18:21:43 changed by mbrevda

  • attachment opt3.diff added.

07/23/08 07:39:31 changed by mbrevda

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

r6140 should do it. Thanks for your feedback!

07/23/08 07:45:46 changed by mbrevda

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

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

mbrevda,

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 11:06:45 changed by mbrevda

ops, r6141

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

mbrevda,

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 20:32:33 changed by mbrevda

07/24/08 21:44:11 changed by mbrevda

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

07/24/08 23: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