[Home]

Summary:ASTERISK-15078: Dial Option D() does not execute in parallel witb option A()
Reporter:Private Name (falves11)Labels:
Date Opened:2009-11-04 14:59:40.000-0600Date Closed:2009-11-05 09:46:37.000-0600
Priority:TrivialRegression?No
Status:Closed/CompleteComponents:Applications/app_dial
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:There is something not right. The D() option, is supposed to play some DTMF to the calling party (D:1234567890), before bridging the call, after there is a connect. This should be done right after a connect, and if the A() option of a Macro is being executed, the D() option should be working simultaneously with the A() option or the Macro. It does not. It works after the Macro or the A() file  finishes executing, but since now we know that there is a connect, it should go in parallel. If the D() option finishes earlier than the Macro or the A() option, it should hold and wait and the the connection should proceed as always.

****** ADDITIONAL INFORMATION ******

Also we should implement a way to play a file to the caller, similar to A() but pointing backwards
Comments:By: Leif Madsen (lmadsen) 2009-11-05 08:23:29.000-0600

I don't see how this is possible. The D() option is supposed to play the DTMF *before* doing the bridge. The A() option is going to play a file, which I believe means a bridge needs to happen. I don't see how these can be done at the same time.

By: Leif Madsen (lmadsen) 2009-11-05 08:24:24.000-0600

This is also hardly a Major issue, it is at best a trivial issue, and borders on a feature request. The request in your Additional Information is definitely a feature request.

By: Private Name (falves11) 2009-11-05 08:35:02.000-0600

Please look at
https://issues.asterisk.org/view.php?id=15936
and
https://issues.asterisk.org/view.php?id=16005

Asterisk changed a lot in the last few weeks because of these patches. Before, the "200 OK" was not sent to the caller until the A() file finished playing. I remind you that the A() file plays only to the callee and there is no bridge until the end. But now the caller gets the "200OK" right when we get it, so the billing always matches. Since the D() option is supposed to play to the Caller only after there is a connect "200 OK", it follows that we need to start sending the DTMF right after the connect, at the same time that we  play the A() file.

Please kindly consult the issue with the engineer who wrote the patches for those bugs. He knows exactly what I talking about because he wrote (nicholson):
"That is a separate issue. Please open a new bug for that."

By: Leif Madsen (lmadsen) 2009-11-05 08:49:52.000-0600

OK, I'll Acknowledge it for now. Did this functionality work previously?

By: Private Name (falves11) 2009-11-05 09:04:54.000-0600

Never, because Asterisk waited, erroneously, until the end of the A() file to notify the caller that a "200 OK" had been received, which created havoc with billing records. So Asterisk was first playing the A() file and only at the end it turned back, sent the 200 OK and then played the D() option, thus doubling the time between Connect and Bridge. If it does it in parallel, the mechanism will actually be useful.
Also, now that we talk about features, I need a new B() option in the Dial function. Exactly like the A() option, but pointing towards the caller, before the bridge happens, but after the connect. So we could be playing different files to both the caller and the callee, in parallel, after there is a connect.

By: Leif Madsen (lmadsen) 2009-11-05 09:36:52.000-0600

This still appears to be a feature request to me, and a couple other people who I asked to look at this from IRC.

Your request for the B() option is in the incorrect place. You've been around long enough to know that feature requests are not filled on the bug tracker.

By: Leif Madsen (lmadsen) 2009-11-05 09:38:42.000-0600

Assigned to mnicholson just to determine if this is a bug, or a feature. Please set the status accordingly, then unassign yourself from this issue. Thanks!

By: Private Name (falves11) 2009-11-05 09:42:38.000-0600

Please forget about the B() option. But the original problem is a bug, since he D() must play right after the connect, and that is not happening. It waits until the end of the A() option, without any valid business reason for that. Both options must play at same time, otherwise the callee will hang up the phone because there is a black out for the duration of the D() option.

By: Leif Madsen (lmadsen) 2009-11-05 09:46:37.000-0600

Per others on IRC, this is a feature request, and per Russell this is not a bug:

"No dial options execute in parallel."

That classifies this as a feature request. Issue closed.