Don't use the _. pattern.  Ever.

The call has two channels so it needs two hangup handlers, something like this, though I've not tested it.

[some_context]
exten => _X.,1,Noop
 same => n,Set(CHANNEL(hangup_handler_push)=my_caller_hangup_handler)
 same => n,Dial(SIP/number@peer,b(pre_dial^s^1))
 same => n,Hangup

[pre_dial]
exten => s,1,Set(CHANNEL(hangup_handler_push)=my_called_hangup_handler)
 same => Return

See: https://wiki.asterisk.org/wiki/display/AST/Pre-Dial+Handlers
and https://wiki.asterisk.org/wiki/display/AST/Hangup+Handlers


On 06/05/2018 03:37 PM, David P wrote:
Thanks, Eric. I just tried a hangup handler, but it's showing a similar problem: When the peer hangs-up, the hangup handler is not invoked and the caller channel remains open.

 same => n(callPeer),Set(GLOBAL(Peer${IndexIntoPeers}CurrentCallsCount)=$[${PeerCurrentCallsCount} + 1])  same => n,Set(CHANNEL(hangup_handler_push)=handleHangupByCallerOrPeer,doesntMatter,1(args))
  same => n,Set(DialForPeer=SIP/${EXTEN:0:4}@${PeerBeingConsidered})
  same => n,Dial(${DialForPeer})
  same => n,Hangup()
[handleHangupByCallerOrPeer]
exten => _.,1,NoOp(${PeerBeingConsidered}: Entered handleHangupByCallerOrPeer Calls ${Peer${IndexIntoPeers}CurrentCallsCount})  same => n,Set(GLOBAL(Peer${IndexIntoPeers}CurrentCallsCount)=$[${Peer${IndexIntoPeers}CurrentCallsCount} - 1])
  same => n,Set(GLOBAL(${PeerBeingConsidered}EpochAtCallEnd)=${EPOCH})
  same => n,Return()

I've also tried replacing the Dial above with:

  same => n,Dial(${DialForPeer},,g)

Cheers,
David

On Tue, Jun 5, 2018 at 7:38 AM, Eric Wieling <ewiel...@nyigc.com <mailto:ewiel...@nyigc.com>> wrote:

    Use hangup handlers, they work around the issues with the 'h' extension.

    On 06/05/2018 05:33 AM, David P wrote:

        Thanks, Anthony.

        I added both 'g' and 'F' options. Now, when the caller hangs-up,
        my cleanup code is run by both the caller channel and the peer
        channel, but I only want the caller channel to do that.

        Also, when the peer hangs-up, there is no execution of the
        priorities following the Dial.

        Finally, is there a way to reset all globals, maybe as a variant
        of "dialplan reload"?

        On Tue, Jun 5, 2018 at 1:21 AM, Antony Stone
        <antony.st...@asterisk.open.source.it
        <mailto:antony.st...@asterisk.open.source.it>
        <mailto:antony.st...@asterisk.open.source.it
        <mailto:antony.st...@asterisk.open.source.it>>> wrote:

             On Tuesday 05 June 2018 at 08:33:26, David P wrote:

             > We're using Asterisk 14.7.6 and I have a dialplan that
        ends like this:
             >     >  same => n,Dial(SIP/${EXTEN:0:4}@peer1)
             >  same => n,Set(GLOBAL(EpochAtCallEnd)=${EPOCH})
             >  same => n,Hangup()
             >     > When peer1 hangsup, the priorities after the Dial
        are executed fine. But
             > when the caller hangsup during the Dial, the cleanup
        steps aren't done.
             > Why?
             >     > I did read "Note that on a successful connection,
        in the absence of the g
             > and G modifiers (below), the Dial command does not return
        to allow
             > execution of further commands for that extension in that
        context." at
             > https://www.voip-info.org/asterisk-cmd-dial/
        <https://www.voip-info.org/asterisk-cmd-dial/>
             <https://www.voip-info.org/asterisk-cmd-dial/
        <https://www.voip-info.org/asterisk-cmd-dial/>> But it seems not
        to apply
             > because I'm seeing the 'g' behavior without specifying
        that option, and the
             > 'G' option seems intended for a far more complicated
        scenario.

             If you're getting "g" functionality without specifying it,
             congratulations.

             If you want something similar when the callER hangs up, you
        want to
             use the F
             option.

             Regards,


             Antony.




-- http://help.nyigc.net/





--
http://help.nyigc.net/

--
_____________________________________________________________________
-- Bandwidth and Colocation Provided by http://www.api-digital.com --

Check out the new Asterisk community forum at: https://community.asterisk.org/

New to Asterisk? Start here:
     https://wiki.asterisk.org/wiki/display/AST/Getting+Started

asterisk-users mailing list
To UNSUBSCRIBE or update options visit:
  http://lists.digium.com/mailman/listinfo/asterisk-users

Reply via email to