[asterisk-users] What could be stopping "Disconnect Call" feature from working (set in features.txt)

Richard Mudgett rmudgett at digium.com
Tue Nov 8 18:09:40 CST 2016


On Tue, Nov 8, 2016 at 5:19 PM, Jonathan H <lardconcepts at gmail.com> wrote:

> Asterisk 14.1
>
> Here's a bit of test dialplan, which works as expected and simulates
> exactly what I'm doing at the top of my large dialplan...
>
> [dial-pre-test]
> exten => s,1,NoOp()
>     same => n,Set(LIMIT_PLAYAUDIO_CALLER=yes)
>     same => n,Set(LIMIT_WARNING_FILE=time_limit_reached)
>     same => n,Dial(Local/s at dial-test,3,L(3540000:60000))
>     same => n,Hangup()
>
> [dial-test]
> exten => s,1,NoOp()
>     same => n,Dial(Local/s at dial-dest,,gH)
>     same => n,Playback(goodbye)
>     same => n,Hangup()
>
> [dial-dest]
> exten => s,1,Answer()
>     same => n,MusicOnHold()
>     same => n,Hangup()
>
> See what I'm doing here? I'm using a little fiddle to allow the caller
> to stop listening to music on hold. And it works..... the gH means
> that the caller can hang up the remote end. Great!
>
> BUT.... I have a large dialplan, and something, somehow, somewhere, is
> messing with "Disconnect Call".
>
> Because once through, nothing, not even star, does anything. It's like
> the receiving end (dial-dest in the example above) has become deaf!
>
> I've turned on debug and verbose to level 9, and there's nothing. It
> connects, starts music on hold, and then just ignores everything.
>
> Anything else I can add to the dialplan to see what might be causing
> this? (I've also tried dumpchan, too).
>
> It USED to work, and some point in the last week, it stopped working.
> (But the test dialplan above works). Mind boggled!
>
> Just to double check, yes, it's all set OK
>
> features show
> Builtin Feature           Default Current
> ---------------           ------- -------
> Pickup                    *8      *8
> Blind Transfer            #       #
> Attended Transfer
> One Touch Monitor
> Disconnect Call           *       *
>
>
Beware of local channel optimization.  You are putting state on local
channels
that can optimize out.  When the local channels optimize out they take the
state with them.

In the dialplan above you are creating the channel chain below.

PJSIP/caller --> Local/s at dial-test;1 -- Local/s at dial-test;2 -->
Local/s at dial-dest;1 -- Local/s at dial-dest;2

PJSIP/caller gets the L() duration and sounds put on it.
The Local/s at dial-test;1 gets the L() duration put on it.
The Local/s at dial-test;2 gets the H dial option put on it.

There is a bridge connecting PJSIP/caller and Local/s at dial-test;1
There is a bridge connecting Local/s at dial-test;2 and Local/s at dial-dest;1

When Local/s at dial-dest;2 executes Answer it will allow Local/s at dial-test;1
and ;2 to
optimize out because both ends are in a bridge.  Thus the H dial option
will disappear from
the channel chain.

Richard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20161108/81738945/attachment.html>


More information about the asterisk-users mailing list