[asterisk-users] ChanIsAvail kills dialplan processing when no Zap available on 1.2.14.

Gavin Hamill gdh at laterooms.com
Wed Jan 24 02:11:20 MST 2007


Hi, I'm trying to use ChanIsAvail to build a resilient 'dialout' macro.
The logic is simple; try Zap/g1 (a group of two E1s), and if that
fails, try locating a channel via DUNDi. Here's a massively cut down version
to illustrate the problem I'm having.

macro dialout ( dest ) {
        ChanIsAvail(Zap/g1);
        noop(Value of AVAILCHAN is ${AVAILCHAN});
        Dial(Zap/G1/${dest}||H);
};

Here's what happens when only the second bearer is connected:

    -- Executing Macro("SIP/1210-082a9768", "dialout|0800789456") in new stack
    -- Executing Set("SIP/1210-082a9768", "dest=0800789456") in new stack
    -- Executing ChanIsAvail("SIP/1210-082a9768", "Zap/g1") in new stack
    -- Hungup 'Zap/32-1'
    -- Executing NoOp("SIP/1210-082a9768", "Value of AVAILCHAN is Zap/32-1") in new stack
    -- Executing Dial("SIP/1210-082a9768", "Zap/G1/0800789456||H") in new stack
    -- Requested transfer capability: 0x00 - SPEECH
    -- Called G1/0800789456
    -- Zap/62-1 is making progress passing it to SIP/1210-082a9768
    -- Zap/62-1 answered SIP/1210-082a9768
    -- Hungup 'Zap/62-1'
  == Spawn extension (macro-dialout, s, 4) exited non-zero on 'SIP/1210-082a9768' in macro 'dialout'
  == Spawn extension (macro-dialout, s, 4) exited non-zero on 'SIP/1210-082a9768'

i.e. perfect - it picks the first available channel on the second
bearer - Zap/32. If only the first bearer is connected, it picks Zap/1
as I'd expect.

The killer is if /neither/ bearer is connected, I get this:

    -- Executing Macro("SIP/1210-08299328", "dialout|0800789456") in new stack
    -- Executing Set("SIP/1210-08299328", "dest=0800789456") in new stack
    -- Executing ChanIsAvail("SIP/1210-08299328", "Zap/g1") in new stack
  == Spawn extension (macro-dialout, s, 3) exited non-zero on 'SIP/1210-08299328' in macro 'dialout'
  == Spawn extension (macro-dialout, s, 3) exited non-zero on 'SIP/1210-08299328'

Processing does not continue to the NoOp or Dial - what am I doing
wrong? I've also tried with the 'j' option to 'jump to priority n+101'
even though I'm using AEL, but it's made no difference. 

Cheers,
Gavin.


More information about the asterisk-users mailing list